Почему API видения google-cloud-python возвращает несколько аннотаций?
Я работаю с Google Cloud Vision API с Python
( https://googlecloudplatform.github.io/google-cloud-python/stable/vision-usage.html)
Но я не мог понять, почему результат аннотации одного изображения состоит из list
из annotation
s.
В документе говорится:
>>> from google.cloud import vision
>>> from google.cloud.vision.feature import Feature
>>> from google.cloud.vision.feature import FeatureTypes
>>> client = vision.Client()
>>> image = client.image(source_uri='gs://my-test-bucket/image.jpg')
>>> features = [Feature(FeatureTypes.FACE_DETECTION, 5),
... Feature(FeatureTypes.LOGO_DETECTION, 3)]
>>> annotations = image.detect(features)
>>> len(annotations)
2
>>> for face in annotations[0].faces:
... print(face.joy)
Likelihood.VERY_LIKELY
Likelihood.VERY_LIKELY
Likelihood.VERY_LIKELY
>>> for logo in annotations[0].logos:
... print(logo.description)
'google'
'github'
Зачем image.detect
возвращает несколько аннотаций для одного изображения?
Это кажется ненужным, потому что результаты обнаружения содержатся в каждом атрибуте (annotations[0].faces
, annotations[0].logos
, так далее.).
И когда я пытаюсь API с моим собственным изображением, он возвращает annotations
длины 1.
Итак, мой вопрос:
- Почему клиент python vision api возвращает несколько аннотаций для одного изображения?
- Нужно ли разбирать каждый
annotation
в спискеannotations
?
1 ответ
В настоящее время API Google Cloud Vision предоставляет 10 различных аннотаций, которые можно применять к любому изображению. Например, среди 10 доступных аннотаций вы можете обнаружить:
- Если какие-либо узнаваемые логотипы существуют в любом месте изображения.
- Вы можете определить, существуют ли какие-либо лица на изображении, и получить подробную информацию о каждом лице.
- Вы можете прочитать больше обо всех доступных аннотациях, начиная здесь.
Итак, чтобы ответить на ваши вопросы:
- API видения будет возвращать любые аннотации, которые вы просите вернуть. Если вы попросите вернуть несколько аннотаций, он вернет несколько. Если вы запрашиваете только 1 из 10 аннотаций, она вернет только одну. Пример кода Python, который вы цитировали в своем сообщении, запрашивает две аннотации: FACE_DETECTION и LOGO_DETECTION, поэтому эти две и только эти две аннотации будут возвращены.
- Вам нужно только разобрать аннотации, которые вы хотите проанализировать. Поскольку у каждой аннотации есть свои расходы (цены указаны на этой странице), я бы порекомендовал вам запрашивать только те аннотации, результаты которых вы хотите увидеть, иначе это может дорого обойтись.
Обратите внимание, что при запуске примера Python, который вы цитировали в своем посте, len(annotations) будет возвращать "1" независимо от того, сколько аннотаций вы выбрали для обнаружения с помощью кода.
Также обратите внимание, что любые добавленные вами аннотации, которые не возвращают значений, например, логотипы не найдены на изображении, ничего не возвращают.