如何从COCO数据集中过滤类?

时间:2019-03-25 11:03:21

标签: artificial-intelligence object-detection yolo

我想用COCO数据集训练一个yolo模型。既然有80多个类,该如何过滤呢?我只需要上课的人和车。

3 个答案:

答案 0 :(得分:0)

以简便的方式,请按照下列步骤操作:

  • 修改(或复制以备份)coco.names中的darknet\data\coco.names文件
  • 删除除人和车之外的所有其他班级
  • 修改您的cfg文件(例如yolov3.cfg),将610、696、783行的3个类从80更改为2
  • 将603、689、776行的cfg文件中的3个过滤器从255更改为(classes + 5)x3 = 21
  • 运行检测器./darknet detector test cfg/coco.data cfg/yolov3.cfg yolov3.weights data/person.jpg

更高级的方法是,您可以使用此存储库基于voc,coco或开放图像创建yolo数据集。 https://github.com/holger-prause/yolo_utils

也请参考:How can I download a specific part of Coco Dataset?

答案 1 :(得分:0)

您可以使用PyCoco API处理COCO数据集。使用此库,从数据集中过滤类非常容易!

# Define the classes (out of the 81) which you want to see. Others will not be shown.
filterClasses = ['person', 'dog']

# Fetch class IDs only corresponding to the filterClasses
catIds = coco.getCatIds(catNms=filterClasses) 
# Get all images containing the above Category IDs
imgIds = coco.getImgIds(catIds=catIds)
print("Number of images containing all the  classes:", len(imgIds))

# load and display a random image
img = coco.loadImgs(imgIds[np.random.randint(0,len(imgIds))])[0]
I = io.imread('{}/images/{}/{}'.format(dataDir,dataType,img['file_name']))/255.0

我最近在exploring and manipulating the COCO dataset上写了整篇文章。看看。

答案 2 :(得分:0)

在Coco数据集上无需重新训练模型就可以过滤类的唯一方法是,对检测输出进行检查,以避免在无用的类上画一个框,但是模型将继续在后台检测所有类。 >