henry_flower: A melancholy wolf (Default)
henry_flower ([personal profile] henry_flower) wrote2024-11-17 04:36 pm

llama3.2-vision ув ollama

Іграшка нова: маючи колекцію з NN тисяч хфото, локально описувати на лайнаксі що коїться на кожній світлині без допомоги Епла, Гоогла або распазнай-с-єйай.лох:

$ alias omglol='find -name \*txt | xargs -n50 grep -li'
$ omglol selfie
./10/IMG_20241019_204444.txt
./09/IMG_20240930_082108.txt
./09/IMG_20240930_082118.txt
./07/IMG_20240712_154559.txt
./07/IMG_20240712_154554.txt

кожний .txt файл лежить поряд з .jpg, який було відправлено до ollama.

Або для слайдшоу:

$ omglol selfie | sed s/txt/jpg/ | xargs feh

Опис можна пхати до exif UserComment, звичайно, але я не хотів модифікувати оригінали.

На жаль, з поточним ollama'овським cli прикріпляти світлини немає куди. Замість cli пропонують робити json пост-ріквести до ollama'овського ендпоінту, перед чим кожне зображення треба спочатку base64-конвертувати.

Другий недолік діфолтного cli--неможливість читати stdin. Я не розумію чому стандартний паттерна будь-якого текстового редактора 'селекнутий текста передати до stdin зовнішній ютіліти', є наразі бонусна фіча вчорашніх крипто-бро, сабскріпшона на яку вони залюбки продадуть простодушному користувачу.

Третій недолік--ігнорування ліміту вихідного тексту для деякого інпуту, для якого ніякі поради конструювання підказок не працюють, а num_predict ув api просто обрізає генерацію, що можна зробити без їх допомоги і так. Зі своїм враппером стає можливим підсумувати підсумки, на чому я і зупинився:

$ ./llm llama3.2 'summarize the following:' < VI.txt | ./llm llama3.2 'summarize the following in 40 words using the present tense:' | fmt -w50
Hernán Cortés and his men arrive on Cozumel
after rough seas delay them; they're rejoiced to
see Geronimo de Aguilar, a Christian prisoner
who's fluent in Yucatecan. Cortés sees great
potential for Aguilar as an interpreter and
prepares to proceed with his expedition.

Нещасний llm врапер--58-рядковий шелóвий скрипта (осьо є його svg), куди ув якості домашнього завдання можна додати async спінера.

Зі скриптом та невеликим мейкфайлом, процеса аналізу світлин виглядає як:

$ find . -iname \*.jpg | sed 's/\.[^.]*$/.txt/' | xargs -r -d\\n -n50 llm-image

де llm-image це:

#!/usr/bin/make -f
model := llama3.2-vision
define desc
@printf "%s\n\n" $(model) > $@
echo 'describe the image' | llm -i $< $(model) | tee -a $@
endef
%.txt: %.jpg; $(desc)
%.txt: %.JPG; $(desc)

Фасебооківська llama3.2-vision не є єдина модель, знатна описувати зображення (llava:13b, наприклад, вміє це також і працює ув 5 разів швидше), але вона здалася мені найбільш корисною ув виробництві keywords для пошуку.


Post a comment in response:

If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting