已经上传了完整的代码和数据,数据比较少,大家可以帮忙补充。
项目地址(记得给个start):https://github.com/jimenbian/face_rank
先来说一下项目的背景,这次做的是一个最基础的图像识别案例,通过训练一个模型来给NBA球星的颜值打分,嗯,楼主麦迪、艾弗森球迷。选择NBA的数据是因为,NBA球星都有正装照,比较好收集。我们最终呈现的效果是这样的:先收集球星大脸照,标记出颜值高的和颜值低的,然后使用Tensorflow的CNN网络训练颜值打分模型,最后可以利用模型对任意球星脸是高颜值或者低颜值来评分。
另外还有一种数据收集的方法,悄悄透漏给大家,如果做美女的颜值打分训练,男同学可以打开T盘的唐诗三百首目录,在里面可以方便的截取高清人脸大图。
讲一下工程
实验环境是PYTHON2.7,Tensorflow版本1.4,无其它依赖库。
下面看一下整个工程,
face_train.py用来训练模型
face_test.py用来预测
TrainDataSet存训练数据
讲一下数据
打开trainDataSet这个文件夹,里面是分了class1和class2两个目录,class1用来存放颜值比较高的球星图片,如下图:
class2存放颜值不那么高的,这样在训练的时候就会做到区分,也构成了一个二分类场景,以下是class2的一张例图:
在构建训练数据的时候有三个注意事项:
图片要尽可能清晰,要尽可能多
大小尺寸最好要相同
最好每个图片只有一张人脸,而且占据篇幅很大
讲一下模型训练
打开face_train.py文件,可以看到整个的训练代码,可以运行这个文件生成model,下面讲一下其中一些关键函数的含义,请对照代码理解。
1.Model目录设置
MODE ='folder' # or 'file', if you choose a plain text file (see above).
DATASET_PATH = 'trainDataSet' # the dataset file or root folder path.
# ImageParameters
N_CLASSES= 2 # CHANGE HERE, total number of classes
IMG_HEIGHT= 64 # CHANGE HERE, the image height to be resized to
IMG_WIDTH= 64 # CHANGE HERE, the image width to be resized to
CHANNELS= 3 # The 3 color channels, change to 1 if grayscale
MODE设置了文件读取方式,这里使用folder模式
DATASET_PATH指定的是训练数据文件夹
N_CLASSES分类的种类,这里因为分美和丑,所以是2类
IMG_HEIGHT、IMG_WIDTH、CHANNELS:表明数据是64*64像素的3元彩色图片
2.读数据
调用的是read_images函数,把训练数据进行queue读取,然后把图片二进制转码,并且将图片的尺寸统一。生成X,Y对应的是两个列表,分别对应每个图片的二进制格式和所属的类别是美还是丑。
3.CNN网络
本案例使用的是4层CNN网络结构,对应的是conv_net,具体的CNN说明可以看我之前发的关于CNN的文章:深度学习CNN眼中的图片是什么样的
4.训练
现在已经生成了整个CNN网络,也有了数据流,接下来就是通过后向传播训练整个网络。
通过tf.global_variables_initializer()为训练网络生成默认参数
然后通过reduce_mean、train.AdamOptimizer这些OP来做模型的参数训练
train.Coordinator是构建数据流读取线程,一定要加上,不然无法运行
利用tf.train.Saver()保存整个模型的参数
以上就是模型训练的一些关键的函数,在使用的时候只要clone项目,在根目录下执行:
python face_train.py
即可生成模型文件夹model目录:
ok~模型训练就讲完了,下次讲如何通过这个模型对单个NBA球星的颜值打分,不知道大家看懂了没有,此文先给想完整体验一下深度学习做图片分析的小白用户,用的是最基础的代码。最近跳票有点多,主要是加班太猛了~
End
为了方便大家学习与交流,凡人云近日已开通机器学习社群!
分享公众号名片到40人以上的大群并截图给小助手,小助手就会拉你入群
在这里你可以得到:
1.各种学术讨论
2.最新的资料分享
3.不定期的征文以及联谊活动!
领取专属 10元无门槛券
私享最新 技术干货