Describe Anything: инструмент с открытым исходным кодом для создания подробных описаний изображений и видео.

Общее введение

Describe Anything - это проект с открытым исходным кодом, разработанный NVIDIA и несколькими университетами, в основе которого лежит модель Describe Anything Model (DAM). Этот инструмент генерирует подробные описания на основе областей (например, точек, квадратов, граффити или масок), которые пользователь отмечает на изображении или видео. Он не только описывает детали неподвижного изображения, но и фиксирует изменение областей на видео с течением времени.

Describe Anything:为图像和视频区域生成详细描述的开源工具

 

Список функций

  • Поддерживает несколько методов маркировки областей: пользователи могут указать область описания изображения или видео с помощью точек, квадратиков, каракулей или масок.
  • Описание изображений и видео: создавайте подробные описания для неподвижных изображений или анализируйте динамические изменения в определенных областях видео.
  • Модели и наборы данных с открытым исходным кодом: модели DAM-3B и DAM-3B-Video доступны для поддержки совместной обработки изображений и видео.
  • Интерактивный интерфейс: через Gradio предоставляется веб-интерфейс, позволяющий пользователям рисовать маски и получать описания в режиме реального времени.
  • Поддержка API: Предоставьте совместимые с OpenAI серверные интерфейсы для легкой интеграции в другие приложения.
  • DLC-Bench Evaluation: содержит специализированные инструменты бенчмаркинга для оценки производительности моделей, описанных в данной области.
  • Интеграция с SAM: дополнительная интегрированная модель Segment Anything (SAM) с автоматической генерацией масок для повышения эффективности работы.

 

Использование помощи

Процесс установки

Describe Anything можно установить из среды Python, при этом рекомендуется использовать виртуальную среду, чтобы избежать конфликтов зависимостей. Ниже приведены подробные шаги по установке:

  1. Создание среды Python::
    Используя Python 3.8 или более позднюю версию, создайте новую виртуальную среду:

    python -m venv dam_env
    source dam_env/bin/activate  # Linux/Mac
    dam_env\Scripts\activate  # Windows
  1. Установить Описать все, что угодно::
    Существует два типа крепления:

    • Устанавливайте напрямую через pip:
      pip install git+https://github.com/NVlabs/describe-anything
      
    • Клонируйте репозиторий и установите его локально:
      git clone https://github.com/NVlabs/describe-anything
      cd describe-anything
      pip install -v .
      
  2. Установите Segment Anything (необязательно)::
    Если вам нужно автоматически генерировать маски, необходимо установить зависимость SAM:

    cd demo
    pip install -r requirements.txt
    
  3. Проверка установки::
    После завершения установки выполните следующую команду, чтобы убедиться в успехе:

    python -c "from dam import DescribeAnythingModel; print('Installation successful')"
    

Использование

Describe Anything можно использовать различными способами, включая сценарии командной строки, интерактивные интерфейсы и вызовы API. Ниже приводится подробное описание основных возможностей:

1. Интерактивный интерфейс Gradio

Интерфейс Gradio подходит для новичков и позволяет пользователям загружать изображения и вручную рисовать маски для получения описаний.

  • Интерфейс запуска::
    Выполните следующую команду, чтобы запустить сервер Gradio:

    python demo_simple.py
    

    После выполнения команды браузер открывает локальную веб-страницу (обычно это http://localhost:7860).

  • процедура::
    1. Загрузить изображение: нажмите кнопку "Загрузить", чтобы выбрать локальный файл изображения.
    2. Нарисовать маску: с помощью инструмента "Кисть" обведите интересующую вас область на изображении.
    3. Получить описание: нажмите кнопку Отправить, и система сгенерирует подробное описание области, например "Собака с рыжей шерстью, в серебряном ошейнике с биркой, бежит".
    4. Дополнительная интеграция с SAM: если функция SAM включена, система автоматически создает маску, нажимая на точки на изображении.
  • предостережение::
    • Убедитесь, что изображение имеет формат RGBA и маска обрабатывается через альфа-канал.
    • Уровень детализации описания можно регулировать, настраивая параметры (например. max_new_tokens) Контроль.

2. Скрипты командной строки

Сценарии командной строки подходят для пакетной обработки или использования разработчиками, обеспечивая большую гибкость.

  • Описание изображения::
    Выполните следующую команду, чтобы создать описание для изображения:

    python examples/dam_with_sam.py --image_path <image_file> --input_points "[[x1,y1],[x2,y2]]"
    

    Пример:

    python examples/dam_with_sam.py --image_path dog.jpg --input_points "[[500,300]]"
    

    Система генерирует маску и выводит описание на основе заданных точек.

  • Описание видео::
    Обработка видео с помощью объединенных моделей:

    python examples/query_dam_server_video.py --model describe_anything_model --server_url http://localhost:8000 --video_path <video_file>
    

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

  • параметризация::
    • --temperature: Контролирует креативность описания, рекомендуемое значение - 0,2.
    • --top_p: Управляет генерацией разнообразия, рекомендуемое значение - 0,9.
    • --max_new_tokens: Установите максимальную длину описания, по умолчанию 512.

3. вызовы API

Describe Anything предоставляет OpenAI-совместимый API, пригодный для интеграции в другие приложения.

  • Запустите сервер::
    Выполните следующую команду, чтобы запустить сервер DAM:

    python dam_server.py --model-path nvidia/DAM-3B --conv-mode v1 --prompt-mode focal_prompt
    

    По умолчанию сервер работает на http://localhost:8000.

  • Отправить запрос::
    Отправляйте запросы с помощью Python и OpenAI SDK:

    from openai import OpenAI
    client = OpenAI(base_url="http://localhost:8000", api_key="not-needed")
    response = client.chat.completions.create(
    model="describe_anything_model",
    messages=[
    {"role": "user", "content": [
    {"type": "image_url", "image_url": {"url": "data:image/png;base64,<base64_image>"}},
    {"type": "text", "text": "Describe the region in the mask"}
    ]}
    ]
    )
    print(response.choices[0].message.content)
    

    взаимозаменяемость <base64_image> Кодировка Base64 для изображения.

4. Оценка DLC-Bench

DLC-Bench - это инструмент бенчмаркинга для оценки моделей описания областей.

  • Скачать набор данных::
    git lfs install
    git clone https://huggingface.co/datasets/nvidia/DLC-Bench
    
  • Оперативная оценка::
    Используйте следующие команды для создания выходных данных модели и их оценки:

    python get_model_outputs.py --model_type dam --model_path nvidia/DAM-3B
    

    Результаты кэшируются в model_outputs_cache/ Папка.

Функциональное управление

  • Фокальная подсказка: DAM использует технологию Focal Prompting для объединения глобального контекста изображения и локальных деталей местности для создания более точных описаний. Пользователям не нужно вручную настраивать подсказки, система оптимизирует их автоматически.
  • Закрытый перекресток: Благодаря механизму перекрестного внимания, модель способна фокусироваться на определенной области в сложной сцене, избегая вмешательства нерелевантной информации.
  • Описание движения видеоПросто отметьте область на кадре, и DAM автоматически отследит и опишет, как эта область меняется в течение видео, например, "Мышцы ног коровы энергично двигаются во время ее шага".

 

сценарий применения

  1. Анализ медицинских изображений
    Врачи могут использовать Describe Anything для аннотирования определенных областей на медицинских изображениях, таких как КТ или МРТ, чтобы создать подробное описание для помощи в диагностике. Например, обозначив аномальную область в легких, система может описать "неравномерно затененную область с размытыми краями, возможно, воспаление".
  2. градостроительство
    Планировщики могут загрузить видеозапись с воздуха, пометить участки зданий или дорог и получить такие описания, как "широкое четырехполосное шоссе, окруженное плотной коммерческой застройкой". Это помогает проанализировать планировку города.
  3. создание контента
    Создатели видео могут использовать Describe Anything для создания описаний конкретных объектов в видеоклипе, например "летящий орел с распростертыми крыльями и снежные горы на заднем плане". Эти описания можно использовать для создания субтитров или сценария.
  4. аннотация данных
    Специалисты по исследованию данных могут использовать DAM для автоматической генерации описаний объектов на изображениях или видео, сокращая необходимость в ручном маркировании. Например, при маркировке автомобиля в наборе данных генерируется фраза "красный автомобиль, фары включены".

 

QA

  1. Какие форматы входных данных поддерживает Describe Anything?
    Поддерживаются распространенные форматы изображений, такие как PNG, JPEG, и видеоформаты, такие как MP4. Изображение должно быть в режиме RGBA с маской, заданной альфа-каналом.
  2. Как я могу повысить точность своих описаний?
    Используйте более точную маску (например, автоматически сгенерированную с помощью SAM) и настройте temperature ответить пением top_p параметры для контроля креативности и разнообразия описаний.
  3. Требуется ли для его работы графический процессор?
    Для ускорения выводов рекомендуется использовать графические процессоры NVIDIA (например, RTX 3090), но можно обойтись и CPU, но на более низких скоростях.
  4. Как обрабатывать многокадровые описания в видео?
    Просто отметьте регион на одном кадре, и DAM автоматически отследит и опишет, как этот регион меняется на последующих кадрах.
© заявление об авторских правах

Похожие статьи

Нет комментариев

Вы должны войти в систему, чтобы участвовать в комментариях!
Войти сейчас
нет
Нет комментариев...