Tensorflow对象检测API-检测未佩戴头盔的人

时间:2018-10-08 06:17:58

标签: tensorflow object-detection-api

***请注意,我先前检测到不戴头盔的问题得到了解决。

现在我有一个新问题,我使用了1000张图像来检测不戴头盔的人,还使用了1000张图像来戴头盔的人和1000张只人的图像。我使用SSD_mobilenet_v1_pets.config文件进行培训。

这是我的pbtxt文件

item {
    id: 1
    name: 'withouthelmet'
}
item {
    id: 2
    name: 'withhelmet'
}
item {
    id: 3
    name: 'person'
}

样本训练图像 enter image description here

训练后,我的模型将每辆车都当成人。

enter image description here

是因为使用了ssd_mobilenet模型(id:1代表人员,但我使用id:1代表没有头盔,id:3代表汽车,但我使用id:3代表了人员)

请帮我解决这个问题

2 个答案:

答案 0 :(得分:1)

  1. 是否已在配置中将num_classes设置为1?
  2. 请注意,min_negatives_per_image表示最小数量的负锚(而不是图像),因此您的数据混合与此参数无关。

我必须修改较早的答案-如果将背景图像(无gt框的图像)添加到数据集中,则应有助于减少误报。抱歉,我对其他一些东西感到困惑。

答案 1 :(得分:0)

您是否使用了在宠物数据集中训练的预先训练的SSD-MobileNetV1模型? 我认为您最好使用在COCO数据集上训练的模型,因为它具有人而不是宠物。 当然,如果您训练模型,它也会学习如何识别人,但是由于您没有戴头盔的人的例子很多,因此最好从知道人的模型开始是。

关于您的问题,如果您只想发现没有头盔的人,则只需将其他所有内容放到pbtxt文件中,只需放入

item {
  id: 1
  name: 'withouthelmet'
  display_name: 'withouthelmet'
}

将配置文件中的类别数更改为1,并微调模型。