Базовая информация о том, как в API работает компьютеное зрение доступна здесь.
Gemini API не поддерживает передачу изображений по URL. Если изображение доступно по ссылке, сначала необходимо скачать его на своей стороне, затем закодировать в base64 и только после этого передать в запросе.
from google import genai client = genai.Client( api_key="<КЛЮЧ>", http_options={"base_url": "https://api.proxyapi.ru/google"} ) # Путь к изображению image_path = "path_to_your_image.jpg" # Получение байтов изображения with open(image_path, 'rb') as f: image_bytes = f.read() response = client.models.generate_content( model="gemini-2.0-flash", contents=[ genai.types.Part.from_bytes( data=image_bytes, mime_type="image/jpeg", ), "Что изображено на картинке?" ] )
Максимальный общий размер запроса — 20 МБ. Он включает текст промпта, системные инструкции и все вложенные файлы.
Вы можете предоставить несколько изображений в одном запросе, включив несколько объектов изображения Part
в массив contents
.
from google import genai client = genai.Client( api_key="<КЛЮЧ>", http_options={"base_url": "https://api.proxyapi.ru/google"} ) # Пути к изображениям image_path1 = "path_to_first_image.jpg" image_path2 = "path_to_second_image.jpg" # Получение байтов изображений with open(image_path1, 'rb') as f1: image_bytes1 = f1.read() with open(image_path2, 'rb') as f2: image_bytes2 = f2.read() response = client.models.generate_content( model="gemini-2.0-flash", contents=[ genai.types.Part.from_bytes(data=image_bytes1, mime_type="image/jpeg"), genai.types.Part.from_bytes(data=image_bytes2, mime_type="image/jpeg"), "Сравни эти два изображения" ] )
Модели Gemini обучены распознавать объекты на изображении и предоставлять координаты их рамок. Координаты возвращаются относительно размеров изображения, масштабированных в диапазон [0, 1000]. Необходимо преобразовать эти координаты обратно в размеры исходного изображения.
Запросить модель вернуть рамку объекта можно прямо через промпт.
Найди все различимые объекты на изображении. Параметр box_2d должен быть в формате [ymin, xmin, ymax, xmax], нормализованным в диапазоне от 0 до 1000.
Рамки объекта можно использовать для обнаружения и локализации объектов на изображениях и в видео. Точное определение и выделение объектов с помощью рамок позволяет реализовать широкий спектр приложений и повысить интеллектуальные возможности ваших проектов.
Основные преимущества
- Простота: Легко интегрируйте возможности обнаружения объектов в свои приложения, независимо от вашего опыта в компьютерном зрении.
- Управляемость: Создавайте рамки объектов на основе пользовательских инструкций (например: «Покажи рамки всех зелёных объектов на этом изображении») без необходимости обучать собственную модель.
Технические детали
- Входные данные: Ваш текстовый запрос и связанные изображения или кадры видео.
- Выходные данные: Рамки объектов в формате [
y_min
,x_min
,y_max
,x_max
]. Начало координат — в верхнем левом углу. Ось X идёт по горизонтали, ось Y — по вертикали. Координаты нормализованы в диапазон от 0 до 1000 для каждого изображения.
Модель возвращает координаты рамок объекта в формате [y_min
, x_min
, y_max
, x_max
]. Чтобы преобразовать эти координаты в пиксельные координаты исходного изображения, нужно:
- Разделить каждую координату на 1000.
- Умножить
x
-координату на ширину исходного изображения. - Умножить
y
-координату на высоту исходного изображения.
Начиная с версии Gemini 2.5, модели обучены не только обнаруживать объекты, но и сегментировать их, предоставляя маску их контуров.
Модель возвращает список в формате JSON, где каждый элемент представляет собой маску сегментации. Каждый элемент содержит:
- рамку объекта (
box_2d
) в формате [y0
,x0
,y1
,x1
] с нормализованными координатами от 0 до 1000, - метку (
label
), идентифицирующую объект, - маску сегментации внутри рамки, в виде PNG, закодированного в base64. Это карта вероятностей со значениями от 0 до 255.
Маску нужно привести к размеру рамки объекта и бинаризовать по порогу уверенности (значение 127 — середина диапазона).
Предоставь маски сегментации для деревянных и стеклянных объектов. Верни список в формате JSON, где каждый элемент содержит: рамку объекта "box_2d" (формат [y0, x0, y1, x1], координаты нормализованы от 0 до 1000), маску сегментации "mask" (PNG, закодированный в base64, карта вероятностей), текстовую метку "label" (используй метки, описывающие объекты).
Gemini поддерживает следующие форматы изображений (MIME-типы):
- PNG —
image/png
- JPEG —
image/jpeg
- WEBP —
image/webp
- HEIC —
image/heic
- HEIF —
image/heif
Gemini 2.5 Pro, 2.0 Flash, 1.5 Pro и 1.5 Flash поддерживают максимум 3600 изображений в одном запросе.
- Gemini 1.5 Flash и 1.5 Pro: 258 токенов, если обе стороны изображения ≤ 384 пикселей. Более крупные изображения разбиваются на плитки (минимум 256px, максимум 768px, масштабируются до 768x768), каждая плитка расходует 258 токенов.
- Gemini 2.0 Flash: 258 токенов, если обе стороны ≤ 384 пикселей. Более крупные изображения разбиваются на плитки 768x768 пикселей, каждая плитка — 258 токенов.
- Убедиться, что изображения корректно повернуты.
- Использовать чёткие, неразмытые изображения.
- При использовании одного изображения с текстовым промптом, помещать текстовую часть после изображения в массиве
contents
.