7

Ответ на пост «Сортировка фотографий на компьютере»

В прицнипе реализуемо , но есть нюансы. В конце есть ссылки на удобное копирование скриптов.

Понадобится:

  • Компьютер с Windows 10 или Windows 11 и видеокартой Nvidia RTX 3000 или 4000 серии, теоретически можно и младше, но я не гарантирую как оно будет работать.

  • Powershell 7 - https://aka.ms/powershell-release?tag=stable дефолтный файл для обычных Windows x64. Скачиваем + устанавливаем

PowerShell-7.5.0-win-x64.exe

Но можно и любым другим способом zip/msi, пакетный менеджер и т.д

  • Ollama - клиент для нейросетей https://ollama.com/download жмём Download. Скачиваем + устанавливаем.

  • Модель для распознавания объектов на фото и тегирования jpg файлов llama3.2-vision:11b которую можно скачать через powershell командой.

ollama pull llama3.2-vision:11b

Программа exiftool для Windows бинарик которой нужно положить в папку, либо любую другую, но тогда правиьте скрипт сооветствующий образом

C:\ExifTool\exiftool.exe

Качаем сайта https://exiftool.org/ Типовой файл 64-bit:

exiftool-13.18_64.zip

  • Программа XNview, доставайте сами знаете где, либо любой другой каталогизатор изображений и фото. В jpeg есть теги, нейросеть проставляет теги в зависимости от того, что изображено на фото, по ним сможете посортировать и найти нужные объекты на фото, в XNView есть поиск по тегам, мне подошло именно так.

  • Собственно код, который нужно вставить в терминал Powershell с текущей папкой в папке с фотографиями формата jpg/jpeg.

Powershell cкрипт (использует GPU)

Здесь мы попросим нейросеть создать нам описание изображения, теги, комментарий и записатить всё это в EXIF самой картинки.

ВНИМАНИЕ!: скрипт обходит все подпапки!

$exifToolPath = 'C:\ExifTool\exiftool.exe'

Get-ChildItem -Recurse $dir | Where-Object {$_.Extension -in @(".jpg", ".jpeg")} | ForEach-Object {

$imagePath = $_.FullName

$comment = ollama run llama3.2-vision:11b "description in 5-10 words $($_.FullName)"

$description = ollama run llama3.1:8b "description in 3-5 words $($comment)"

$theme = ollama run llama3.1:8b "theme in 2-3 words $($comment)"

$tags = ollama run llama3.1:8b "3 tags from $($comment) separated with comma, write only tags"

$description = $description.Trim().Replace("`"","")

$comment = $comment.Trim().Replace("`"","")

$theme = $theme.Trim().Replace("`"","")

& $exifToolPath -Description="$description" -charset latin -Comment="$comment" -charset latin -XPSubject="$theme" -XPComment="$description" -Keywords="$tags" -overwrite_original "$imagePath" -charset latin

}

Во время отработки скрипта побегут странные символы, видимо консольный интерфейс не предполагал, что его будут так использовать. В конце в файл будут записано описание, теги, и комментарий.

Бонус:

Можно сжать фото (до 70%) с помощью jpegoptim в несколько потоков (гораздо быстрее по сравению с обычным использованием jpegoptim *.jpg)

jpegoptim-1.5.5-x64-windows.zip

  • Powershell cкрипт (использует CPU)

    ВНИМАНИЕ!: скрипт обходит все подпапки!

Get-ChildItem $dir | ForEach-Object -Parallel { C:\Jpegoptim\jpegoptim.exe -m85 $_.Name } -ThrottleLimit 15

ThrottleLimit ставьте по количеству ядер CPU минус 1 ядро, чтобы не повесить ПК

Если неудобно копировать из статьи, можно взять отсюда.
1. Описание фото с помощью нейросети
https://gist.github.com/FaustineD/e637d19f738ce8eea42cd497c17ab52b

2. Оптимизация jpg

https://gist.github.com/FaustineD/ccb61ae316b8272c3164bd7f9e805b14

UPD: Небольшой Дисклеймер, некоторые фото нейросеть может отказаться обрабатывать из-за присутствия политиков, клубнички, мата, и т.д, Это законодательные ограничения создателей нейросети.
Вместо тегов она впишет в файл, что не может обработать данные.

Показать полностью 6
0

Сортировка фотографий на компьютере

📸 Помогите найти приложение для сортировки фотографий!

У меня на компьютере скопилась целая куча фотографий, и я хочу их структурировать. Нужна программа или приложение, которое сможет автоматически отсортировать фото по категориям, например:

  • Скриншоты

  • Фото с людьми

  • Животные

  • Фото с текстом/надписями

  • И другие категории

Может быть, кто-то уже сталкивался с подобной задачей? Какие инструменты вы использовали? Буду благодарен за любые советы! 😊

Отличная работа, все прочитано!