Skip to content

rolai/jd_pig

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 

Repository files navigation

京东猪脸比赛

比赛信息

1. 准备

  1. 从训练视频中采样每一帧抽取一张图片
  2. 【可选】使用Faster RCNN需要一个猪检测模型,从每张图片中裁剪出猪身体部分
  3. 【可选】使用Faster RCNN训练一个猪头检测模型
  4. 从测试集test_A中随机抽取600张图片作为验证集,用第2步训练好的模型自动标注验证集中的图片,对其中置信度低的图片进行人工标注(约70张,2小时标完)。验证集对后面选择超参数非常重要,也非常有效。人工标注的数据只用来�选择超参数,不用来训练,不知道是否合规。

2. 训练

  1. Finetune DenseNet-161 block4和softmax层
  2. Finetune Inception-resnet-v2
  3. 【可选】针对猪头训练一个DenseNet分类器
  4. 数据增强对结果影响非常大,没有用数据增强时测试集loss在1.5左右;使用水平翻转,旋转,调整亮度,对比度等手段做数据增强后,模型的loss下降到0.4左右
  5. 使用上面三个模型,提取训练集,验证集合测试集各图片的average pooling层feature并保存到磁盘,供后面集成模型使用

3. 集成

  1. 针对每一张图片把第2步中导出的每一个feature拼接在一起,得到一个更大的feature。如果图片中没有检测到猪头,就用0补齐feature。
  2. 拼接后的feature作为输入训练一个3层的全连接网络,详细见assemble.ipynb
  3. 选择在验证集中loss最小的模型,来预测测试集中的图片

4. 结果

  1. 单模型使用数据增强后,loss在0.4左右; DenseNet稍微好于Inception-resnet-v2
  2. 双模型集成后,loss下降到0.34左右
  3. 添加猪头部分的feature后,loss下降到0.30

5. 其他

  1. 尝试使用triplet loss和center loss等辅助训练网络,效果不明显
  2. 尝试使用stn,attention等网络来训练模型,实验没做完。
  3. 尝试区分猪的姿态,实验也没做完。
  4. 比赛群里有人提出个奇技淫巧,用模型标注测试集,抽取置信度搞的图片加入训练集,多次迭代后可以显著降低测试集的loss。 试了一下,此方法确实能降低测试集的loss,但效果有限。

About

JD pig face recognition competition

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published