Fly.ioTutorial
Picture This: Open Source AI for Image Description
Summary
Nolan Darilek presents a self-hosted image-description service intended to help blind screen-reader users understand photos, diagrams, menus, and other visual material. Humans often provide inadequate alt text, and the post contrasts that history with increasingly capable LLM-generated descriptions from apps and browser add-ons. The implementation combines Ollama, running the Apache-licensed LLaVA 34B multimodal model, with a PocketBase API over SQLite and a small Python client; collection hooks send images and follow-up questions, retain chat history, and enforce per-user access rules. In testing, a cold request on an A100-40GB Fly Machine took about 45 seconds, while stopping idle GPU Machines reduced resource use at the cost of startup delay. The example produced useful scene descriptions but could not reliably identify leafless tree species, illustrating both the prototype’s value and its limitations.
Context
Blind internet users frequently encounter missing or inadequate alt text. The author describes AI image descriptions as useful for locating objects, understanding inaccessible game scenes, and interpreting technical diagrams, then investigates how difficult it would be to host an extensible open-source alternative.
Approach / What changed
The service runs the Apache-licensed LLaVA 34B model through Ollama, with PocketBase providing authenticated image and follow-up APIs on SQLite. PocketBase collection hooks send images and prompts to Ollama, store responses and conversation history, chain follow-up questions, and apply per-user access rules. A Python client communicates with the service.
Takeaways
Ollama can serve the LLaVA 34B multimodal model from a Docker image after pulling it with the Ollama CLI.
PocketBase hooks model images and follow-ups as collections, trigger Ollama requests, preserve chat history, and restrict users from accessing one another’s chats.
On an A100-40GB Fly Machine, a cold request took about 45 seconds; stopping the Machine saved allocated resources but added startup and model-loading latency.
Source and freshness
- Source
- fly.io
- Published
- Added to Yomu
- Last updated
Summaries are generated from the original by a language model. Check the original before relying on it.
Keep reading
Related reading
The Good Stuff
Paid picks we use ourselves. Links carry a referral code — a subscription through one earns us a commission at no extra cost to you.
The best engineering reads, once a week
One useful email. Unsubscribe anytime.