可以在RecordIO中打包带有图像的边界框和标签吗?

时间:2017-12-11 01:11:29

标签: computer-vision object-detection mxnet

我正在尝试使用MXNet / Gluon来训练对象检测模型(特别是图像中一种对象的多个实例),并且im2rec工具似乎没有将边界框信息添加到.rec文件中。

mxnet.recordio.pack_img()似乎做了将图像和标签打包在一起的工作,但我无法找到在像素空间中包含边界框信息的位置/方式。来自文档:

label = 4 # label can also be a 1-D array, for example: label = [1,2,3]
id = 2574
header = mx.recordio.IRHeader(0, label, id, 0)
img = cv2.imread('test.jpg')
packed_s = mx.recordio.pack_img(header, img)

标题没有边界框信息的位置。知道怎么做吗?

1 个答案:

答案 0 :(得分:1)

我相信我找到了答案。 .lst文件中标签的打包可以采用扩展的信息集。这里的documentation描述了该信息的预期方式。

剩下的就是编辑im2rec.py以用扩展的信息替换纯粹的标签索引(撰写本文时第50和60行)。类似的东西:

def parse_label_file(fp):
    with open(fp, 'r') as f:
        data = f.readlines() # or json.load() if appropriate
        ### Some code here to parse and return the image dimensions
        ### width, height, id, xmin, ymin, xmax, ymax
    return (4, 5, width, id, height, xmin, ymin, xmax, ymax)

...
label_file_path = path[:-4] + ".txt" # or .json as appropriate
if path not in cat:
    cat[path] = parse_label_file(label_file_path)
...