1. Введение в модель GPT-4 Vision
Модель GPT-4 Vision (GPT-4V) - это мультимодельная модель искусственного интеллекта, представленная компанией OpenAI, которая объединяет возможности визуального понимания на основе GPT-4. В отличие от традиционных моделей обработки текста, GPT-4V способна получать и анализировать изображения, предоставляя описания, отвечая на вопросы и взаимодействуя с изображениями.
Примеры применения:
- Распознавание и классификация продуктов: Платформы электронной коммерции могут использовать GPT-4V для идентификации и предоставления описаний изображений продуктов, помогая улучшить системы поиска и рекомендаций.
- Помощь в медицинских решениях: Хотя GPT-4V не подходит для непосредственной профессиональной медицинской диагностики по изображениям, он может помогать медицинскому персоналу в начальном понимании изображений и организации данных.
- Образование и исследования: В учебе и научных исследованиях GPT-4V может использоваться для анализа диаграмм, результатов экспериментов и автоматической интерпретации научных изображений.
- Мониторинг и анализ трафика: Анализируя изображения трафикового наблюдения, GPT-4V может помогать системам управления трафиком в режиме реального времени с отчетностью о состоянии и определением аварий.
2. Простой пример
Ниже приведен простой пример использования запроса CURL для демонстрации использования модели GPT-4 Vision для анализа изображений:
Параметры запроса API:
-
model
: Указывает версию модели, в данном случае "gpt-4-vision-preview". -
messages
: Содержит определение роли и контент, где контент может включать текст и ссылки на изображения. -
max_tokens
: Указывает максимальный предел длины для генерации текста.
Пример запроса CURL:
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-4-vision-preview",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Что на этом изображении?"
},
{
"type": "image_url",
"image_url": {
"url": "Ваша ссылка на изображение"
}
}
]
}
],
"max_tokens": 300
}'
С помощью вышеприведенного запроса мы отправили изображение в модель GPT-4 Vision и задали простой вопрос: "Что на этом изображении?" Модель проанализирует содержимое изображения и предоставит ответ на основе содержимого изображения.
3. Загрузка изображений с использованием кодирования Base64
В некоторых случаях может потребоваться загрузить локальный файл изображения в модель GPT-4 Vision. В таких случаях мы можем встроить данные изображения в запрос API, используя кодирование base64.
Пример кода на Python:
import base64
import requests
api_key = "ВАШ_OPENAI_API_KEY"
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode('utf-8')
image_path = "путь_к_вашему_изображению.jpg"
base64_image = encode_image(image_path)
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {api_key}"
}
payload = {
"model": "gpt-4-vision-preview",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Что на этом изображении?"
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{base64_image}"
}
}
]
}
],
"max_tokens": 300
}
response = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=payload)
print(response.json())
В приведенном выше коде мы сначала преобразуем локальный файл изображения в строку, закодированную в формате base64, а затем отправляем эту строку как часть запроса к API. Ответ модели содержит описание содержимого изображения.
4. Обработка нескольких входов изображений
Иногда необходимо проанализировать несколько изображений одновременно. Модель GPT-4 Vision поддерживает одновременную обработку нескольких входных изображений и позволяет пользователям задавать вопросы о этих изображениях или сравнивать их различия.
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-4-vision-preview",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Чем отличаются эти изображения?"
},
{
"type": "image_url",
"image_url": {
"url": "URL первого изображения",
}
},
{
"type": "image_url",
"image_url": {
"url": "URL второго изображения",
}
}
]
}
],
"max_tokens": 300
}'
В этом запросе мы отправляем два изображения в API. Модель будет анализировать каждое изображение отдельно и предоставлять описания и сравнения на основе заданных вопросов. Этот подход идеален для общего анализа коллекции изображений.
5. Настройка уровня детализации анализа изображений
При использовании визуальной модели GPT-4 для анализа изображений вы можете установить уровень детализации в соответствии с вашими потребностями. Изменяя параметр detail
, вы можете выбрать один из low
, high
или auto
. Вот подробное объяснение каждого варианта и способ его установки:
-
low
: Выбор низкого уровня детализации отключит "высокоразрешающую" модель. Эта модель получит изображение низкого разрешения 512 пикселей x 512 пикселей и будет использовать бюджет 65 токенов для его представления. Это подходит для сценариев, не требующих высокой детализации, что помогает достичь более быстрого времени ответа и потребления меньшего количества входных токенов. -
high
: Высокий уровень детализации позволяет модели сначала увидеть изображение низкого разрешения, а затем создать подробную обрезанную версию в сетке 512 пикселей на основе размера входного изображения. Каждая подробная обрезка представлена удвоенным бюджетом 129 токенов (то есть 65 токенов на каждую стандартную обрезку). -
auto
: Автоматический уровень детализации определит, использовать ли низкий или высокий уровень детализации в зависимости от размера входного изображения.
В следующем примере кода показано, как установить уровень детализации:
import base64
import requests
api_key = "ваш_OPENAI_API_KEY"
image_path = "путь_к_вашему_изображению.jpg"
base64_image = base64.b64encode(open(image_path, "rb").read()).decode('utf-8')
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {api_key}"
}
payload = {
"model": "gpt-4-vision-preview",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Что на этом изображении?"
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{base64_image}",
"detail": "high" # Установлен высокий уровень детализации
}
}
]
}
],
"max_tokens": 300
}
response = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=payload)
print(response.json())
6. Понимание ограничений модели и управление изображениями
6.1. Ограничения модели
Несмотря на мощную функциональность визуальной модели GPT-4, она не лишена ограничений, и понимание этих ограничений крайне важно для использования ее для анализа изображений. Вот обзор некоторых известных ограничений:
-
Медицинские изображения: Модель не подходит для интерпретации профессиональных медицинских изображений, таких как КТ-снимки, и не следует использовать для медицинских рекомендаций.
-
Текст на нелатинском алфавите: Модель может плохо справляться с обработкой изображений, содержащих текст на нелатинском алфавите, таком как японский или корейский.
-
Пространственная локализация: Производительность модели недостаточна в задачах, требующих точного пространственного определения, таких как определение позиций фигур на шахматной доске.
-
Детали изображений: Модель может испытывать трудности в понимании диаграмм или текста с цветовыми и стилевыми вариациями (например, сплошные линии, штриховые линии) на изображении.
-
Поворот изображения: Модель может неправильно интерпретировать наклонный или перевернутый текст и изображения.
### 6.2 Управление изображениями в сеансах
Поскольку API завершения чата является состоянием, вам необходимо самостоятельно управлять сообщениями (включая изображения), передаваемыми модели. Если вы хотите использовать одно и то же изображение несколько раз, вам необходимо повторно отправлять данные изображения с каждым запросом API.
```python
дополнительная_нагрузка = {
"model": "gpt-4-vision-preview",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Исходя из этого изображения, какие у вас есть предложения?"
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{base64_image}"
}
}
]
}
],
"max_tokens": 300
}
новый_ответ = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=дополнительная_нагрузка)
print(новый_ответ.json())
7. Расчет стоимости
Каждое изображение при использовании опции detail: low
потребляет фиксированные 85 токенов. Для изображений с опцией detail: high
изображение сначала масштабируется пропорционально до размера 2048px x 2048px, затем более короткая сторона изображения убедительно приводится к размеру 768px. Затем изображение делится на несколько квадратов размером 512px, при этом каждый квадрат потребляет 170 токенов, и к окончательному итоговому подсчету добавляется еще 85 токенов.
Например, если у изображения размеры 1024px x 1024px, и выбрана опция detail: high
, стоимость токенов составит:
- Во-первых, поскольку 1024 меньше 2048, нет начальной коррекции размера.
- Затем, при более короткой стороне 1024, изображение изменяется на размер 768 x 768.
- Для представления изображения необходимо 4 квадрата размером 512px, поэтому итоговая стоимость токенов будет равна 170 * 4 + 85 = 765.
Для более подробного понимания метода расчета стоимости обратитесь к документации модели GPT-4 Vision.
8. Часто задаваемые вопросы
Ниже приведены некоторые распространенные вопросы и их ответы, с которыми пользователи могут столкнуться при использовании модели GPT-4 Vision:
В: Могу ли я улучшить возможности изображения gpt-4
?
О: В настоящее время мы не поддерживаем улучшение возможностей изображения gpt-4
.
В: Могу ли я использовать gpt-4
для создания изображений?
О: Нет, вы можете использовать dall-e-3
для создания изображений и gpt-4-vision-preview
для понимания изображений.
В: Какие типы файловых загрузок поддерживаются?
О: В настоящее время мы поддерживаем файлы PNG (.png), JPEG (.jpeg и .jpg), WEBP (.webp) и неанимированные GIF (.gif).