时间: 2017.10 — 2017.12
运行环境: Python3.5、TensorFlow1.2、cuda 8.0 、cudnn 5.0、Linux14.0
- (1)训练集的制作: 30头猪的视频素材,对每个视频,每隔10帧取一帧图像保存;使用YOLOv2进行抠图,截取图像中猪的主体及猪脸图像 进行保存;最后制作成tfrecord格式的数据,这样训练数据集就完成了;训练数据集:猪主体数据:8700张(1000 * 800左右大小),猪脸数据:4100(500 * 500左右大小),一共12800张图像。
- (2)数据预处理: data argumentation。包括数据类型转换(float32)、在图像中按一定长宽比和面积比crop图像区域、随机左右翻转、随机颜色变换、扩大像素区间范围。
- (3)网络训练: 基础网络选择Inception-ResNet-v2 ,softmax交叉熵损失函数(要区别30头猪),batchsize是28,优化器选择adam,学习率0.01,训练80个epoch后,降为0.0001微调网络。在训练这一阶段,主要是调节网络优化器及参数,观察是否过拟合等,选择训练最好的模型。
- (4)模型集成、后处理: 网络预测一张图片,得到的是30个类别对应的概率值。一、选择几个训练较好的模型进行集成 ,最终取平均融合结果,也可以按一定权重对几个模型进行融合集成;二、尽量让预测的类别标签概率值不出现极端情况,也就是让网络不那么肯定是哪头猪(如:某头猪预测概率为0.99就不可取),从而换取整体logloss的降低,实验证明该方案在一定程度上缺失提升了排名。