Как загрузить дубликаты тегов на какое-то изображение для лазурного видения? - PullRequest
1 голос
/ 25 марта 2019

У меня вопрос к лазурному кастомизу. У меня есть собственный проект видения для обнаружения объектов. И я использую Python SDK для создания проекта (см .: https://docs.microsoft.com/en-us/azure/cognitive-services/custom-vision-service/python-tutorial-od). Но я нашел что-то не так в процессе загрузки. Например, есть изображение, на котором изображены 3 человека. Таким образом, я отмечаю 3 человека того же класса на этой картинке. Но после загрузки я обнаружил 1 человека, помеченного на этой фотографии, на веб-сайте Custom Vision. Но с другим классом все в порядке, например, на этой картинке также могут быть «человек», «машина» и «скутер». Похоже, что на картинке может быть только один и тот же класс.

Я пытался использовать python SDK (см. https://docs.microsoft.com/en-us/azure/cognitive-services/custom-vision-service/python-tutorial-od) для загрузки моей фотографии и информации о тегах.

A0_tag = trainer.create_tag(project.id, "A0")
A1_tag = trainer.create_tag(project.id, "A1")
A2_tag = trainer.create_tag(project.id, "A2")

A0_image_regions={
"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]
}

Код выше показывает, что я загрузил три класса "A0" в 0001.jpg. Но в интерфейсе GUI на веб-сайте я вижу только один класс «A0», который существует выше 0001.jpg. Есть ли какое-нибудь решение, которое может решить эту проблему?

Ответы [ 3 ]

1 голос
/ 15 апреля 2019

Вы создали 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)
0 голосов
/ 11 апреля 2019

Если вы ничего не изменили в примере кода, он пытается загрузить изображение «0.001.jpg» с одной ограничительной рамкой три раза, а последние две загрузки завершаются неудачно, поскольку они дублируют изображения с вашим первымзагруженное изображение.

Загрузите "0.001.jpg" только один раз с тремя ограничивающими рамками или загрузите сначала изображение, а затем три поля.

0 голосов
/ 25 марта 2019

Звучит так, будто вы хотите отметить только один тег person для 3 человек на картинке, но это не проблема, не проблема. На самом деле, тег помечен на картинке, а не на области пикселей, изображенной человеком на картинке.

Следовательно, тег person просто помогает обнаружить факт, что хотя бы один человек после обучения модели, а не car или scooter. Если вы хотите обнаружить другого человека, необходимо добавить три тега, например person1, person2 и person3 для трех разных людей на изображении.

Пожалуйста, обратитесь к странице вики Object detection и ее ссылкам, чтобы узнать больше деталей о принципе машинного обучения и глубокого обучения.

...