记录一下使用VGGNet进行人脸识别的实验过程。
- 数据集:训练集 9W+张人脸图片,包含10000 ID。
1.数据集准备
将数据集图片分为训练集以及测试集两个部分,并生成标签文件,记录在.txt文件中。训练与测试图片比例为4:1。
import os,shutil
trainFile = open('train.txt','w')
testFile = open('test.txt','w')
path = 'train' #原始图片数据路径
dirs = os.listdir(path)
for d in dirs:
print d
files = os.listdir(path+'/'+d)
for i,f in enumerate(files):
if i<8:
trainFile.write(f+' '+d+'\n') #记录形式:图片名字 标签(中间有一个空格)
shutil.copy(path+'/'+d+'/'+f,'trainset/'+f) #训练集
else:
testFile.write(f+' '+d+'\n')
shutil.copy(path+'/'+d+'/'+f,'testset/'+f) #测试集
trainFile.close()
testFile.close()
数据集要尽量大,否则可能最后训练结构不太好。
下载caffe代码并编译通过。在该目录下新建文件夹vggface,并将测试集trainset和训练集testset以及标签文件train.txt和test.txt移动到此处。
下面编写脚本文件生成lmdb格式图片。新建vggface.sh,脚本代码是在网上借鉴修改后的,直接贴出来。图片大小被转为224*224,这是VGG处理图片的格式大小。写好脚本文件后,输入sh vggface.sh即可生成对应两个lmdb格式文件face_train_lmdb和face_test_lmdb。