Сравнил я две модели Florence-2-large и moondream2 . Florence-2 довольно таки сильно проигрывает в создании большого описания изображения. moondream2 более органично это делает прям хорошо, а с выходом новой модели от 2025 года года вообще красота.
Вроде как да, но я все готовлю на компе а потом уже на сток заливаю. Например в StockSubmitter импортирую csv файл предварительно там открыв папку с всеми картинками которые были проанализированы. Ну это я экспериментировал как импорт работает если в IMStoker получить csv для того, чтобы свою программку сделать
при запуске скрипта он попросит в терминале вставить скопированный путь к картинкам и потом ещё указать имя csv файла, только потом файл будет без расширения csv, но excel откроет, создаст он его в корне пакет там же где и будет сам файл скрита питона. Может кто ума даст этому коду
import os
import csv
import torch
from PIL import Image
from transformers import AutoProcessor, AutoModelForCausalLM
def analyze_image(image_path, model, processor):
"""
Анализирует изображение с использованием Florence-2-large.
"""
image = Image.open(image_path)
prompt = "<OD>"
inputs = processor(text=prompt, images=image, return_tensors="pt").to(device)
generated_ids = model.generate(
input_ids=inputs["input_ids"],
pixel_values=inputs["pixel_values"],
max_new_tokens=4096,
num_beams=3,
do_sample=False
)
generated_text = processor.batch_decode(generated_ids, skip_special_tokens=False)[0]
parsed_answer = processor.post_process_generation(generated_text, task="<OD>", image_size=(image.width, image.height))
# Разделяем описание и ключевые слова, если они в одном тексте
if "\n" in parsed_answer:
description, keywords = parsed_answer.split("\n", 1)
else:
description, keywords = parsed_answer, ""
return description, keywords
def generate_metadata(input_folder, output_csv, model, processor):
"""
Анализирует изображения в папке и создает CSV файл с метаданными.
"""
supported_formats = (".jpeg", ".jpg", ".png")
image_files = [f for f in os.listdir(input_folder) if f.lower().endswith(supported_formats)]
if not image_files:
print("Нет изображений в указанной папке.")
return
with open(output_csv, mode='w', newline='', encoding='utf-8') as csvfile:
csvwriter = csv.writer(csvfile)
for image_file in image_files:
image_path = os.path.join(input_folder, image_file)
try:
description, keywords = analyze_image(image_path, model, processor)
csvwriter.writerow([
image_file,
description,
f'"{description}"',
f'"{keywords}"'
])
print(f"Обработано: {image_file}")
except Exception as e:
print(f"Ошибка при обработке {image_file}: {e}")
if __name__ == "__main__":
device = "cuda:0" if torch.cuda.is_available() else "cpu"
model = AutoModelForCausalLM.from_pretrained("microsoft/Florence-2-large", trust_remote_code=True).to(device)
processor = AutoProcessor.from_pretrained("microsoft/Florence-2-large", trust_remote_code=True)
input_folder = input("Введите путь к папке с изображениями: ").strip()
output_csv = input("Введите имя выходного CSV файла (например, output.csv): ").strip()
generate_metadata(input_folder, output_csv, model, processor)
я смог подключиться к Florence-2-large, она возвращает данные в виде сложной структуры, которая включает метки объектов (например, bboxes, labels) и другие подробности, такие как координаты, а не просто текстовые описания и ключевые слова. Уже пол дня мучаюсь как получить все это в тексте.
Добрый день. Подскажите, пожалуйста, мне вот тоже самое надо сделать, но только, чтобы просто из одной папки картинки брались и атрибутированные с записанными метаданными клались в другую папку, это что надо поправить в коде? У вас ключевание идет по называнию папок, а мне надо просто описание то, что на картинке и ключевые слова.
Сравнил я две модели Florence-2-large и moondream2 .
Florence-2 довольно таки сильно проигрывает в создании большого описания изображения. moondream2 более органично это делает прям хорошо, а с выходом новой модели от 2025 года года вообще красота.
Вроде как да, но я все готовлю на компе а потом уже на сток заливаю. Например в StockSubmitter импортирую csv файл предварительно там открыв папку с всеми картинками которые были проанализированы. Ну это я экспериментировал как импорт работает если в IMStoker получить csv для того, чтобы свою программку сделать
Вот мой код c Florence-2-large
при запуске скрипта он попросит в терминале вставить скопированный путь к картинкам и потом ещё указать имя csv файла, только потом файл будет без расширения csv, но excel откроет, создаст он его в корне пакет там же где и будет сам файл скрита питона.
Может кто ума даст этому коду
я смог подключиться к Florence-2-large, она возвращает данные в виде сложной структуры, которая включает метки объектов (например,
bboxes,labels) и другие подробности, такие как координаты, а не просто текстовые описания и ключевые слова. Уже пол дня мучаюсь как получить все это в тексте.Попробую ещё ваш вариант с moondream2
а как установить локально модель Florence-2-large и подкллючиться на напитоне?
Я посмотрел по ссылке и ни чего не понял
Спасибо. Буду экспериментировать.
Добрый день. Подскажите, пожалуйста, мне вот тоже самое надо сделать, но только, чтобы просто из одной папки картинки брались и атрибутированные с записанными метаданными клались в другую папку, это что надо поправить в коде? У вас ключевание идет по называнию папок, а мне надо просто описание то, что на картинке и ключевые слова.