我正在使用 enumerate 獲取每行的行號(hào)以用作image_id但它一直返回行的長(zhǎng)度而不是索引。def get_detectron_format(self): """Returns the dataset in the Detectron2 list(dict) format""" csv = self.get_data_csv() dataset_dicts = [] record = dict() for i, (index, data) in enumerate(csv.iterrows()): record['file_name'] = os.path.join(self.data_root, data['Path']) record['image_id'] = i record['height'] = data['Height'] record['width'] = data['Width'] objs = [] obj= { 'bbox': [data['Roi.X1'], data['Roi.Y1'], data['Roi.X2'], data['Roi.Y2']], 'bbox_mode': BoxMode.XYXY_ABS, 'category_id': data['Roi.X1'] - 1, 'iscrowd': 0 } objs.append(obj) record['annotations'] = objs dataset_dicts.append(record) return dataset_dicts當(dāng)我打印出數(shù)據(jù)集中的第一項(xiàng)時(shí):gtsr = GTSR_Dataset()dataset = gtsr.get_detectron_format()[0]print(dataset)我得到:{'file_name': '/content/drive/My Drive/Datasets/german_traffic_sign_recognition/Train/42/00042_00007_00029.png', 'image_id': 39208, 'height': 69, 'width': 68, 'annotations': [{'bbox': [7, 6, 62, 63], 'bbox_mode': <BoxMode.XYXY_ABS: 0>, 'category_id': 6, 'iscrowd': 0}]}..image_id應(yīng)該在哪里0。為什么是這樣?如何獲取行號(hào)(索引)?
2 回答

慕田峪9158850
TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
字典在 for 循環(huán)(第 5 行record
:)之前被初始化。同一條記錄被多次更新。這將需要在 for 循環(huán)內(nèi)移動(dòng)。record = dict()
完成后dataset_dicts.append(record)
,將附加相同的記錄地址,dataset_dicts
因此基本上您有最后一條記錄的多個(gè)條目。

守候你守候我
TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超10個(gè)贊
使用objs.append(obj.copy())
這將存儲(chǔ)數(shù)據(jù)而不是id(obj)
您的問(wèn)題將得到解決。
添加回答
舉報(bào)
0/150
提交
取消