繁体   English   中英

Tensorflow对象检测API多类错误

[英]Tensorflow Object Detection API multi-class error

我正在使用fast-RCNN模型创建11类对象检测器,该模型在image-resizer标签中设置为最大尺寸300x400。 这是由于如果我将显卡升级为1050 Ti,4Gb ver,如果我再升高一点,就会弹出CUDA OOM错误,因此我大约有3800-3900 Mb的模型运行时训练内存。

我遵循了erishima的步骤,并用Pet的脚本和Dati Tran的脚本对它们进行了变异,以生成TFRecord文件。

步骤如下:

  1. 使用labelImg为类别创建标签。
  2. 使用labelImg中的名称字段来注释图像文件的类。
  3. 创建一个CSV文件,并从XML文件中提取文件名,类,xmin,ymin,xmax,ymax。 (自定义脚本)
  4. 从主要CSV文件创建火车和测试/评估CSV。
  5. 生成要记录到配置文件中的TFRecord文件。 培训和测试。(根据需要修改了Dati Tran的脚本)
  6. 修改fast_rcnn_config而不触及超参数。
  7. 创建了一个label_map.pbtxt文件,该文件对应于类的名称。 在与此主题相关的许多其他答案中都从1开始。
  8. 通过所述方法开始训练模型。

这些类别的数据集是自定义的,图像/类别的范围从2500到300不等。即使这些图像中存在物体的每个可能角度,该数据集也没有定义对象的方向和图像中的检测难度。

当我经过217k步训练到损失值为0.002时出现的问题是,无论我将检测器运行在视频还是图像上,单个类都将所有其他类的对象包裹起来。 我没有尝试运行eval.py脚本,因为在此设置上花费了太长时间,而我却看不到类的mAP,但是我认为它应该是多余的信息,因为问题应该在数据集中设置准备方法或在数据集中。

重新培训60k个步骤后,问题仍然存在,但另一个类又将其包裹了。

显示的警告是:

  • 稀疏索引张量将占用大量内存。 我可以更改代码,以便它不会弹出并可能为我节省一些宝贵的内存。
  • 想要[x,?,?,y]取而代之的是[x,y,z,a,b]。 这将停止训练。 在训练中获得了2次,最多达到217k步。 不知道这个起源于何处; 可能是数据集。

如果有人甚至可以向我显示正确解决方案的提示,我将不胜感激。

我相信您的班级不平衡。 过去类似的问题

对数据集进行分析-确保每个类别的图像数量在相似的数量级。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM