Аннотация изображения — это фундаментальная задача компьютерного зрения, которая включает в себя маркировку и маркировку различных объектов, областей или функций изображения. Он играет решающую роль в обучении моделей машинного обучения, позволяя им распознавать и понимать визуальные данные. В этой статье мы рассмотрим несколько методов аннотирования изображений, сопровождаемых примерами кода с использованием популярных библиотек и API.
Метод 1: API Google Cloud Vision
API Google Cloud Vision предлагает мощное и удобное решение для аннотирования изображений. С помощью простого HTTP-запроса вы можете отправить изображение в API и получить ответ JSON, содержащий подробные аннотации. Вот пример использования Python:
import requests
import base64
import json
def annotate_image(image_path, api_key):
with open(image_path, "rb") as image_file:
encoded_image = base64.b64encode(image_file.read()).decode('UTF-8')
payload = {
'requests': [{
'image': {
'content': encoded_image
},
'features': [{
'type': 'LABEL_DETECTION',
'maxResults': 5
}]
}]
}
response = requests.post(
'https://vision.googleapis.com/v1/images:annotate?key=' + api_key,
json=payload
)
annotations = response.json()['responses'][0]['labelAnnotations']
for annotation in annotations:
print(annotation['description'], annotation['score'])
# Usage
image_path = 'path/to/your/image.jpg'
api_key = 'your_google_cloud_api_key'
annotate_image(image_path, api_key)
Метод 2: API обнаружения объектов TensorFlow
API обнаружения объектов TensorFlow предоставляет комплексную основу для обнаружения объектов и аннотирования. Он поддерживает широкий спектр предварительно обученных моделей и позволяет обучать собственные модели. Вот пример того, как выполнить обнаружение объектов с помощью API:
import tensorflow as tf
from object_detection.utils import visualization_utils as vis_util
from object_detection.utils import label_map_util
def annotate_objects(image_path, model_path, label_map_path):
image = tf.io.read_file(image_path)
image = tf.image.decode_image(image)
image = tf.expand_dims(image, axis=0)
model = tf.saved_model.load(model_path)
detections = model(image)
category_index = label_map_util.create_category_index_from_labelmap(label_map_path, use_display_name=True)
vis_util.visualize_boxes_and_labels_on_image_array(
image[0].numpy(),
detections['detection_boxes'][0].numpy(),
detections['detection_classes'][0].numpy().astype(int),
detections['detection_scores'][0].numpy(),
category_index,
use_normalized_coordinates=True,
line_thickness=8
)
# Display or save the annotated image
# ...
# Usage
image_path = 'path/to/your/image.jpg'
model_path = 'path/to/your/model'
label_map_path = 'path/to/your/label_map.pbtxt'
annotate_objects(image_path, model_path, label_map_path)
Метод 3: OpenCV и ручное аннотирование
Для более детального управления вы можете использовать OpenCV вместе с методами ручного аннотирования. Этот подход позволяет рисовать ограничивающие рамки, многоугольники или другие аннотации непосредственно на изображении. Вот пример использования OpenCV:
import cv2
def manual_annotation(image_path):
image = cv2.imread(image_path)
annotation = cv2.rectangle(image, (100, 100), (300, 300), (0, 255, 0), 2)
cv2.imshow("Annotated Image", annotation)
cv2.waitKey(0)
cv2.destroyAllWindows()
# Usage
image_path = 'path/to/your/image.jpg'
manual_annotation(image_path)
Аннотации к изображениям — важный этап в задачах компьютерного зрения, позволяющий машинам понимать и интерпретировать визуальные данные. В этой статье мы рассмотрели три различных метода аннотирования изображений: использование API Google Cloud Vision, API обнаружения объектов TensorFlow и ручное аннотирование с помощью OpenCV. Эти методы обеспечивают различные уровни автоматизации и настройки, что позволяет вам выбрать подход, который лучше всего соответствует вашим потребностям.
Используя эти методы, вы сможете раскрыть потенциал компьютерного зрения и улучшить свои приложения за счет точного распознавания и понимания изображений.