我使用自己的PascalVOC数据集训练了TensorFlow Object Detection API,该数据集包含7个类别,每个类别有100到200张图片。我使用的是ssd_mobilenet_v1_pets.config标准配置,只是调整了类别数量和训练步数选项。
在训练之前,我对图片进行了缩放处理,使得数据集中每张图片的尺寸在600到1024像素之间。标注工作是使用LabelImg应用程序完成的。
训练完10万步后,我使用Jupyter Notebook教程中的代码在几张测试图片上测试了模型。不幸的是,结果有些奇怪。
如果测试图片中只有一个对象,检测效果很好:
但是如果图片中有很多对象,结果就会变得奇怪,甚至根本不显示:
你可以看到,由于某些原因,它几乎检测了整个图片。那么,如何才能像上面那样在图片上检测到多个对象呢?
任何帮助都将不胜感激。提前谢谢!
以防万一,这里是我的标签映射:
item { id: 1 name: 'chesterfield_blue'}item { id: 2 name: 'chesterfield_red'}item { id: 3 name: 'lucky_strike_blue'}item { id: 4 name: 'lucky_strike_red'}item { id: 5 name: 'marlboro_gold'}item { id: 6 name: 'marlboro_mentol'}item { id: 7 name: 'marlboro_red'}
回答:
Faster RCNN模型及其配置帮助我改善了结果。
我还添加了几张香烟盒在商店货架上的图片,因此条件与我试图处理的图片非常相似。
改进后的结果(请注意,我没有将所有香烟实例添加到模型中):