coco数据集的理解(人工标准框绘制)

一键式下载:https://github.com/pjreddie/darknet/tree/master/scripts/get_coco_dataset.sh,然后在Linux环境下运行.sh文件。

1. coco数据集下载地址

(1) 图像集下载地址

训练图像集:https://pjreddie.com/media/files/train2014.zip

验证图像集:https://pjreddie.com/media/files/val2014.zip

(2) 图像路径文件下载地址

所有训练图像路径的文件:https://pjreddie.com/media/files/coco/trainvalno5k.part

所有验证图像路径的文件:https://pjreddie.com/media/files/coco/5k.part

(3) 标签文件下载地址

人工标注的标签文件(包括训练与验证):https://pjreddie.com/media/files/coco/labels.tgz

2. 图像集内容

(1) 训练集图像内容。其中包括82783张不同尺寸的图像,图像文件命名为:COCO_train2014_xxxxx.jpg。

(2) 验证集图像内容。包括40504张不同尺寸的图像,文件命名格式:COCO_val2014_xxx.jpg

3. 图像路径文件内容

4. 标签文件内容

标签文件中内容:人工标注框与类别。训练与验证标签目录下的txt文件名称,同训练与验证图像集目录下的jpg文件名称一一对应。即下图中COCO_train2014_000000000009.txt与训练图像集COCO_train2014_000000000009.jpg对应。同理验证集相同。

5. 标签文件txt的理解

(1) 标签格式:如下所示,每一列数据表示一个类别代号与人工标注框,存储的格式为[class_num,box_cx,box_cy,box_w,box_h],标注框的坐标是归一化后的数据,即像素单位的[box_cx,box_cy,box_w,box_h]除以整个图像的宽高[W,H]。

(2) 还原标签并绘图

import numpy as np
import cv2
import matplotlib.pyplot as plt

from PIL import Image


'''人工标注框的还原'''

# 加载coco类别名称
def load_classes(path):
    fp = open(path, "r")
    names = fp.read().split("\n")[:-1]
    return names

classes = load_classes('data/coco.names')

# 数据类型:[cls_index, cx, cy, w, h]
boxes = np.loadtxt('E:/DataSets/COCO/labels/train2014/COCO_train2014_000000001926.txt').reshape(-1,5)

img_path = 'E:/DataSets/COCO/images/train2014/COCO_train2014_000000001926.jpg'
image = np.array(Image.open(img_path).convert('RGB'), dtype=np.uint8)

# 人工标注框的绘制 [cx,cy,w,h]
h, w, _ = image.shape
boxes[:,[1,3]] = boxes[:,[1,3]]*w
boxes[:,[2,4]] = boxes[:,[2,4]]*h

for box in boxes:
    p1 = box[1:3] - box[3:5]/2
    p1 = p1.astype(int)
    p2 = box[1:3] + box[3:5]/2
    p2 = p2.astype(int)
    print(p1,p2) # box
    print(classes[int(box[0])]) # class_name
    cv2.rectangle(image, tuple(p1), tuple(p2),(255,0,0),1)
    # arg:图像,标签,坐标,标签字体,字体大小,字体颜色,字体厚度
    cv2.putText(image,classes[int(box[0])],tuple(p1),cv2.FONT_HERSHEY_SIMPLEX,0.35,(255,0,0),0)


plt.figure(figsize=(25,15))
plt.imshow(image)

运行结果:

(3) 人工标注框归一化的作用:供yolo训练使用,有助于提高检测的精度等。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐