为了了解行人检测中CityPersons数据集中标注信息中对齐框和可见框的区别,
首先使用
annos = scio.loadmat(anno_path)
把标注信息从anno_train.mat中转换成python,然后使用
'anno = annos[index][0][64]
print(anno)'
把aachen_000064_000019_leftImg8bit.png的标注信息输出
标注信息如下:
Dataset...
[[(array(['aachen'], dtype='<U6'), array(['aachen_000064_000019_leftImg8bit.png'], dtype='<U36'), array([[ 1, 1191, 412, 34, 85, 24000, 1195, 413, 27,
84],
[ 1, 1207, 408, 38, 92, 24001, 1213, 408, 25,
92],
[ 1, 1137, 406, 36, 87, 24002, 1148, 407, 12,
86],
[ 1, 1144, 397, 41, 100, 24003, 1151, 398, 32,
99],
[ 1, 1118, 408, 35, 84, 24004, 1122, 408, 28,
84],
[ 1, 1068, 404, 36, 88, 24005, 1071, 405, 30,
87],
[ 1, 692, 424, 17, 40, 24007, 694, 424, 12,
40],
[ 1, 679, 427, 15, 36, 24008, 679, 431, 15,
32],
[ 1, 924, 416, 27, 66, 24009, 927, 417, 19,
65],
[ 2, 221, 350, 78, 189, 25000, 221, 350, 78,
189],
[ 0, 19, 395, 36, 38, 0, 19, 395, 36,
38],
[ 0, 863, 395, 7, 6, 0, 863, 395, 7,
6],
[ 0, 430, 418, 14, 10, 0, 430, 418, 14,
10],
[ 0, 635, 423, 13, 12, 0, 635, 423, 13,
12]], dtype=uint16))]]
上面的信息每一行代表着:
[class_label, x1,y1,w,h, instance_id, x1_vis, y1_vis, w_vis, h_vis]
然后从上面选择一个标注的框,使用下面的代码输出标注信息中的框出行人的图片
···
import cv2
from google.colab.patches import cv2_imshow
img1=cv2.imread('./data/citypersons/images/train/aachen/aachen_000064_000019_leftImg8bit.png')
img2=cv2.rectangle(img1,(1144,397),(1144+41,397+100),(0,255,0),3)
cv2_imshow(img1)
···
发现可见信息就是框中只包含可见的部分,不包含被遮挡的部分,
对齐框中的信息就是包括整个行人,包括被遮挡的部分,
CityPersons数据集中,行人的分类有0,1,2,3,4,5,标注是1和2 的时候,对齐框和可见框不一样,当行人的分类是其它的时候,对齐框和可见框一样