read image_size from property file

This commit is contained in:
Jia Guo
2017-12-08 13:54:45 +08:00
parent 8b9e9c58d3
commit 6a0cd1aa1f
6 changed files with 40 additions and 16 deletions

View File

@@ -31,6 +31,7 @@ import traceback
#from builtins import range
from easydict import EasyDict as edict
import face_preprocess
import face_image
try:
import multiprocessing
@@ -51,6 +52,9 @@ def read_list(path_in):
item = edict()
item.flag = 0
item.image_path, item.label, item.bbox, item.landmark, item.aligned = face_preprocess.parse_lst_line(line)
if not item.aligned and item.landmark is None:
print('ignore line', line)
continue
item.id = _id
yield item
if item.label!=last[0]:
@@ -89,7 +93,7 @@ def image_encode(args, i, item, q_out):
else:
img = cv2.imread(fullpath, args.color)
assert item.landmark is not None
img = face_preprocess.preprocess(img, bbox = item.bbox, landmark=item.landmark, image_size='112,112')
img = face_preprocess.preprocess(img, bbox = item.bbox, landmark=item.landmark, image_size='%d,%d'%(args.image_h, args.image_w))
s = mx.recordio.pack_img(header, img, quality=args.quality, img_fmt=args.encoding)
q_out.put((i, s, oitem))
else: #flag==1 or 2
@@ -179,7 +183,6 @@ def parse_args():
help='specify the encoding of the images.')
rgroup.add_argument('--pack-label', type=bool, default=False,
help='Whether to also pack multi dimensional label in the record file')
rgroup.add_argument('--image-size', type=str, default='112,96', choices=['112,96', '112,112'], help='image size, set to 112,96 or 112,112')
args = parser.parse_args()
args.prefix = os.path.abspath(args.prefix)
#args.root = os.path.abspath(args.root)
@@ -194,6 +197,11 @@ if __name__ == '__main__':
working_dir = args.prefix
else:
working_dir = os.path.dirname(args.prefix)
prop = face_image.load_property(working_dir)
image_size = prop.image_size
print('image_size', image_size)
args.image_h = image_size[0]
args.image_w = image_size[1]
files = [os.path.join(working_dir, fname) for fname in os.listdir(working_dir)
if os.path.isfile(os.path.join(working_dir, fname))]
count = 0

View File

@@ -2,6 +2,18 @@
from easydict import EasyDict as edict
import os
def load_property(data_dir):
prop = edict()
for line in open(os.path.join(data_dir, 'property')):
vec = line.strip().split(',')
assert len(vec)==3
prop.num_classes = int(vec[0])
prop.image_size = [int(vec[1]), int(vec[2])]
return prop
def get_dataset_webface(input_dir):
clean_list_file = input_dir+"_clean_list.txt"
ret = []

3
src/eval/do_ver.sh Normal file → Executable file
View File

@@ -1,2 +1,3 @@
python -u verification.py --data-dir /opt/jiaguo/faces_vgg_112x112 --image-size 112,112 --model '../../model/softmax1010d3-r101-p0_0_96_112_0,21|22|32'
#python -u verification.py --gpu 0 --data-dir /opt/jiaguo/faces_vgg_112x112 --image-size 112,112 --model '../../model/softmax1010d3-r101-p0_0_96_112_0,21|22|32' --target agedb_30
python -u verification.py --gpu 0 --data-dir /opt/jiaguo/faces_normed --image-size 112,96 --model '../../model31/sphere-m51-p0_0_96_112_0,90' --target agedb_30 --batch-size 128

View File

@@ -38,6 +38,8 @@ import pickle
from sklearn.decomposition import PCA
import mxnet as mx
from mxnet import ndarray as nd
sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common'))
import face_image
@@ -250,13 +252,14 @@ if __name__ == '__main__':
# general
parser.add_argument('--data-dir', default='', help='')
parser.add_argument('--model', default='../model/softmax,50', help='path to load model.')
parser.add_argument('--image-size', default='112,96', help='image size.')
parser.add_argument('--target', default='lfw,cfp_ff,cfp_fp', help='test targets.')
parser.add_argument('--target', default='lfw,cfp_ff,cfp_fp,agedb_30', help='test targets.')
parser.add_argument('--gpu', default=0, type=int, help='gpu id')
parser.add_argument('--batch-size', default=128, type=int, help='')
parser.add_argument('--batch-size', default=32, type=int, help='')
args = parser.parse_args()
image_size = [int(x) for x in args.image_size.split(',')]
prop = face_image.load_property(args.data_dir)
image_size = prop.image_size
print('image_size', image_size)
ctx = mx.gpu(args.gpu)
nets = []
prefix = args.model.split(',')[0]

View File

@@ -27,7 +27,7 @@ def get_fc1(last_conv, num_classes, fc_type):
pool1 = mx.sym.Pooling(data=relu1, global_pool=True, kernel=(7, 7), pool_type='avg', name='pool1')
flat = mx.sym.Flatten(data=pool1)
if len(fc_type)>1:
if fc_type[1]=='D':
if fc_type[1]=='X':
print('dropout mode')
flat = mx.symbol.Dropout(data=flat, p=0.2)
fc_type = fc_type[0]

View File

@@ -18,7 +18,8 @@ import mxnet as mx
from mxnet import ndarray as nd
import argparse
import mxnet.optimizer as optimizer
#sys.path.append(os.path.join(os.path.dirname(__file__), 'common'))
sys.path.append(os.path.join(os.path.dirname(__file__), 'common'))
import face_image
sys.path.append(os.path.join(os.path.dirname(__file__), 'eval'))
sys.path.append(os.path.join(os.path.dirname(__file__), 'symbols'))
import fresnet
@@ -118,8 +119,6 @@ def parse_args():
help='feature incay')
parser.add_argument('--use-deformable', type=int, default=0,
help='')
parser.add_argument('--image-size', type=str, default='112,96',
help='')
parser.add_argument('--patch', type=str, default='0_0_96_112_0',
help='')
parser.add_argument('--lr-steps', type=str, default='',
@@ -284,9 +283,6 @@ def train_net(args):
args.rescale_threshold = 0
args.image_channel = 3
ppatch = [int(x) for x in args.patch.split('_')]
image_size = [int(x) for x in args.image_size.split(',')]
args.image_h = image_size[0]
args.image_w = image_size[1]
assert len(ppatch)==5
@@ -295,9 +291,13 @@ def train_net(args):
path_imgrec = None
path_imglist = None
val_rec = None
prop = face_image.load_property(args.data_dir)
args.num_classes = prop.num_classes
image_size = prop.image_size
args.image_h = image_size[0]
args.image_w = image_size[1]
print('image_size', image_size)
for line in open(os.path.join(args.data_dir, 'property')):
args.num_classes = int(line.strip())
assert(args.num_classes>0)
print('num_classes', args.num_classes)