一共是十个文件夹,都是从微博下载下来的,对原始图片需要的是进行识别、裁剪;有很多种方法可以成功,笔者尝试效果比较好的是caffemodel或者haarcascade_frontalface_alt2.xml这个分类器
#测试一张照片
image_path="./pre_dataset/denglun/1.jpg"
image=cv2.imread(image_path)
cv2.imshow("denglun",image)
image,images=face_detector_dnn(image)
for i in images:
cv2.imshow("dele ",i)
cv2.waitKey(0)
识别效果
此处的结果小于160像素,进行了黑边填充
至此识别以及裁剪的工具类utils.py
已经实现完毕
其实就是调用第一步的函数,以及建立文件夹等操作
if __name__ == '__main__':
# 遍历pre_dataset
for i in os.listdir(PRE_DATASET): # i为姓名
input_dir = PRE_DATASET + "/" + i # ./pre_dataset/zhoujielun
output_dir = OP_DATASET + "/" + i
#如果out_dir不存在建立该文件夹
folder = os.path.exists(output_dir)
if not folder:
os.mkdir(output_dir)
_index = 0
for j in os.listdir(input_dir):
image_path = input_dir + "/" + j #./pre_dataset/zhoujielun/7.jpg
image = cv2.imread(image_path)
image,images=utils.face_detector_dnn(image)
for face in images:
#将人脸存回去
face=utils.resize_image(face)
_index+=1
cv2.imwrite(output_dir+"/%d.jpg"%_index,face)
print("存放"+output_dir+"/%d.jpg"%_index)
#调用识别以及裁剪函数
主要是CLASSES输入类别个数,而模型是AlexNet.py文件中
200次训练结果: