使用自定义数据集注释图像以训练YOLO

时间:2019-11-19 08:54:07

标签: image-segmentation yolo

我正在使用MODD(海洋障碍物检测数据集)来使用YOLO检测海洋物体。我遵循了Mark Jay系列,以使用自定义数据集训练算法。但是在本教程中,仅指定了检测方形物体。在我的数据集中,我有三个主要的类

  1. 大对象
  2. 小物件
  3. 地平线

数据集中的示例图像:

enter image description here

如您所见,黄线(很少点)是地平线。它从所有其他部分对海进行分类(即指定当前船只在海中移动的范围)。按照Mark Jay教程中的说明,为了使用自定义对象训练YOLO,我以上述格式提供了注释(仅适用于小型和大型对象):

<annotation>
  <folder>/home/user/Desktop/dataset/modd_dataset1.0/data/01/images/</folder>
  <filename>17.jpg</filename>
  <segmented>0</segmented>
  <size>
    <width>640</width>
    <height>480</height>
    <depth>3</depth>
  </size>
  <object>
    <name>largeobjects</name>
    <pose>Unspecified</pose>
    <truncated>0</truncated>
    <difficult>0</difficult>
    <bndbox>
      <xmin>518.9599375650363</xmin>
      <ymin>145.26586888657653</ymin>
      <xmax>638.835067637877</xmax>
      <ymax>219.8548387096775</ymax>
    </bndbox>
  </object>
  <object>
    <name>largeobjects</name>
    <pose>Unspecified</pose>
    <truncated>0</truncated>
    <difficult>0</difficult>
    <bndbox>
      <xmin>239.91727367325706</xmin>
      <ymin>22.7268470343393</ymin>
      <xmax>306.5145681581686</xmax>
      <ymax>223.18470343392306</ymax>
    </bndbox>
  </object>
  <object>
    <name>largeobjects</name>
    <pose>Unspecified</pose>
    <truncated>0</truncated>
    <difficult>0</difficult>
    <bndbox>
      <xmin>2.1649323621228262</xmin>
      <ymin>196.54578563995847</ymin>
      <xmax>8.158688865764859</xmax>
      <ymax>219.18886576482834</ymax>
    </bndbox>
  </object>
  <object>
    <name>smallobjects</name>
    <pose>Unspecified</pose>
    <truncated>0</truncated>
    <difficult>0</difficult>
    <bndbox>
      <xmin>227.92976066597294</xmin>
      <ymin>218.52289281997923</ymin>
      <xmax>240.58324661810616</xmax>
      <ymax>233.84027055150892</ymax>
    </bndbox>
  </object>
</annotation>

在水平线的情况下,提供了多个(x,y)点来画一条线(即,在大小物体的情况下,指定了两个(x,y)点,以便可以在周围画一个框检测到的对象)。有什么办法可以在上述范围内提供注释?

如果可以提供注释,该怎么做?如果没有,我是否可以为此目的使用其他算法?该模型必须非常快,因为它将用于IOT设备以进行实时检测。

这已经使用语义分割实现(但在matlab中)。可以在边缘设备(使用python和openCV)上使用语义分割吗?

1 个答案:

答案 0 :(得分:0)

语义分割可以在诸如Jetson Nano的边缘设备上运行。 此link链接可能会对您有所帮助。只要选择合适的边缘设备,使用python和OpenCV的可能性就很大。 This是官方基准测试页面。