Вы создали A0_image_regions
, но переопределяете ключ, когда у вас есть несколько ограничительных рамок для любого изображения.Так что это не сработает.
Но, возможно, что еще более важно, вам нужно вызвать тренера с изображением в качестве первичных объектов, со всеми связанными областями изображения, сгруппированными вместе.Другими словами, в вашем примере 0001.jpg
имеет три экземпляра A0
, но также может иметь экземпляры A1
и / или A2
, и это будет одна запись ImageFile.Таким образом, я бы изменил образец в соответствии со следующим:
A0_tag = trainer.create_tag(project.id, "A0")
A1_tag = trainer.create_tag(project.id, "A1")
A2_tag = trainer.create_tag(project.id, "A2")
image_regions = {
A0_tag.id : [
("0001.jpg", [0.432291667,0.28125,0.080729167,0.09765625]),
("0001.jpg", [0.34765625,0.385742188,0.131510417,0.135742188]),
("0001.jpg", [0.479166667,0.385742188,0.130208333,0.135742188]),
("0003.jpg", [0.19921875,0.158203125,0.083333333,0.099609375])
],
A1_tag.id : [] # add images/bounding boxes for A1
A2_tag.id : [] # add images/bounding boxes for A2
}
regions_map = {}
for tag_id in image_regions:
for filename,[x,y,w,h] in image_regions[tag_id]:
regions = regions_map.get(filename,[])
regions.append(Region(tag_id, left=x, top=y, width=w, height=h))
regions_map[filename] = regions
tagged_images_with_regions = []
for filename in regions_map:
regions = regions_map[filename]
with open(base_image_url + filename, mode="rb") as image_contents:
tagged_images_with_regions.append(ImageFileCreateEntry(name=filename, contents=image_contents.read(), regions=regions))
upload_result = trainer.create_images_from_files(project.id, images=tagged_images_with_regions)