Setup:
- ubuntu 16.04 LTS,4 个 vCPU + 30GB 内存
- nvidia K80 GPU 带 12GB 内存
- CUDNN 8.0 x64
- TF版本1.3
目标:使用TF对象检测API检测人脸、人物、手枪、步枪、automatic_rifle
采取的步骤:
1)准备图像和边界框- 人脸:使用 WIDER 人脸数据集
- person:使用COCO数据集
- 枪:使用过 Image-Net
枪支数量远不及面部和人物的数据集大小,因此我通过限制面部/人物图像的数量来确保每个类别的图像数量相似。
90% 用于训练,10% 用于测试
所以每个类的图像数量看起来像这样
train - see csv
- 步枪401
- 左轮手枪389
- 突击步枪 532
- 面对407
- 389 人
test - see csv
- 步枪45
- 左轮手枪44
- 突击步枪 60
- 脸 126
- 44号人
2)生成TF记录 (see code)
# see pastebin
- 使用的模型:faster_rcnn_resnet101_coco
- 配置:与宠物自定义检测器配置非常相似,see code
- .pbtxt 文件:see code
==> 小提示:最后一行有“nb_epoch”。我注意到这个值不存在于使用 TF 对象检测 API 提供的其他模型配置文件中(即在文件夹中)
3) Train跑了超过 20 万步。
Problem
我训练的 5 个类并不总是出现,即使是在训练过的图像上也是如此。似乎是人或脸正在检测,很少两者都检测到。
作为参考框架,这是随 TF 对象检测 API 附带的 faster_rcnn_inception_resnet_v2_atrous_coco 模型的结果。我知道这不是同类比较,但至少你可以看到人员检测:
看图片
以下是自定义数据集训练模型的做法:
看图片
1)我有什么想法出错了吗?
这位 SO 用户也遇到了同样的问题(TensorFlow 对象检测 API 奇怪的行为),但声称他通过裁剪/调整输入图像大小解决了这个问题。
训练数据是否需要调整大小?我不记得在其中看到过任何大小调整定制宠物探测器教程但我确实问过 b/c 我确实在配置文件中看到了 min_ 和 max_dimension
在您的配置文件中,您设置 num_examples: 8000 是 8000,将该数字设置为您要跟踪的测试图像数量。例如,您要在测试文件夹中拍摄 200 张图像,然后“num_examples:200:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)