我正在尝试使用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)
标题没有限制框信息的位置。任何想法如何做?
我相信我找到了答案。.lst文件中标签的包装可以采用一组扩展的信息集。这里的文档描述了该信息的预期。
那么,剩下的就是编辑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)
...