目标检测常用 Python 库
506 字
3 分钟
pycocotools下面主要介绍 COCO 类的使用,
使用牛仔行头检测竞赛的数据。
import osfrom pycocotools.coco import COCOroot_dir = 'datasets'coco_file = os.path.join(root_dir, 'train.json')img_dir = os.path.join(root_dir, 'images')
coco = COCO(coco_file)# 获取类别 IDcat_ids = coco.getCatIds(catNms=[], supNms=[], catIds=[])
# 获取图片 IDimg_ids = coco.getImgIds(imgIds=[], catIds=[])
# 获取标注 IDann_ids = coco.getAnnIds(imgIds=[], catIds=[], areaRng=[], iscrowd=None)NOTE
参数 说明 catNms限定类别名列表 supNms限定超类别名列表 catIds限定类别 ID 列表 imgIds限定图像 ID 列表 areaRng限定分割掩膜的面积范围 iscrowd指定 iscrowd标志。0表示单个对象,1表示人群区域,None表示不限制CAUTION当函数返回类型与参数类型相同,函数起起过滤作用,即过滤出参数列表中属于
coco的ID。
三个函数的返回值类型均为List(即使是单个元素)。
:::
cats = coco.loadCats(coco.getCatIds())NOTE
loadCats(ids=[])<传入id以加载id对应的类>传入id以加载id对应的类>返回值
cats(以载入 cowboy 所有类别为例)的格式为[{'freebase_id': '/m/0176mf', 'id': 87, 'name': 'belt'},{'freebase_id': '/m/017ftj', 'id': 1034, 'name': 'sunglasses'},{'freebase_id': '/m/01b638', 'id': 131, 'name': 'boot'},{'freebase_id': '/m/025rp__', 'id': 318, 'name': 'cowboy_hat'},{'freebase_id': '/m/032b3c', 'id': 588, 'name': 'jacket'}]
img_info = coco.loadImgs(img_ids)NOTE
coco.loadImgs(ids=[])<传入id以加载id对应的图片>传入id以加载id对应的图片>返回值
img_info(以载入一张图片为例)的格式为[{'file_name': 'ddd2b190ea90dffa.jpg','height': 1024,'id': 15984033263460081658,'neg_category_ids': [],'pos_category_ids': [45, 69, 277, 434],'source': 'OpenImages','width': 768}]
anns = coco.loadAnns(ann_ids)NOTE
coco.loadAnns(ids=[])<传入id以加载id对应的标注>传入id以加载id对应的标注>返回值
anns(以载入一张图片有两个标注为例)的格式为[{'area': 220911.31,'bbox': [0.0, 257.92, 313.51, 704.64],'category_id': 131,'freebase_id': '/m/01b638','id': 2267424,'image_id': 2608397864569803265,'iscrowd': False},{'area': 123689.57,'bbox': [432.51, 282.24, 214.98, 575.36],'category_id': 131,'freebase_id': '/m/01b638','id': 2267425,'image_id': 2608397864569803265,'iscrowd': False}]