Downloads · 30 days
4
22% of all-time downloads
SearchingBinary/nolitai-vision
nolitai-vision is a image-text-to-text model from SearchingBinary. Use it for the image-text-to-text task on the model card, and read the license before you ship it in a product. It is set up for peft. The card lists the license as apache-2.0.
A LoRA adapter for FastVLM-1.5B-Stage3 fine-tuned for visual meeting intelligence tasks. Designed for on-device inference on Apple Silicon via MLX.
Downloads · 30 days
4
22% of all-time downloads
All-time downloads
18
Public
Repo size
20.2 MB
Likes
0
Public
Click a slice to open those files.
.json14.2 MB · 57%
From the Hugging Face model README
A LoRA adapter for FastVLM-1.5B-Stage3 fine-tuned for visual meeting intelligence tasks. Designed for on-device inference on Apple Silicon via MLX.
Status: Early checkpoint — This is an initial training run with limited data (~81 examples, 3 epochs). Performance is not yet production-ready. We're sharing it for research and community collaboration.
| Property | Value |
|---|---|
| Base Model | zhaode/FastVLM-1.5B-Stage3 |
| Architecture | LlavaQwen2 (MobileClip vision + Qwen2 language model) |
| Adapter Size | 8.3 MB (LoRA weights only) |
| Training | LoRA (rank=8, alpha=16) on q/k/v/o attention projections |
| Framework | PyTorch (PEFT), convertible to MLX |
Given a video call screenshot, the model can:
Speaker ID Input: A screenshot of a Zoom call with a highlighted speaker tile Expected Output:
{"speaker": "Sarah Chen"}
Platform Detection Input: A screenshot of a video call Expected Output:
{"platform": "Microsoft Teams"}
| Task | Score | Notes |
|---|---|---|
| Speaker ID | 0% | Needs more diverse training examples |
| Participants | 0% | Needs more training data |
| Platform Detection | 60% | Partially learned |
| Slide OCR | 0% | Needs more training data |
| Overall | 10% | Early checkpoint, needs more data |
import torch
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoProcessor, CLIPImageProcessor
from PIL import Image
# Load base model
base = AutoModelForCausalLM.from_pretrained(
"zhaode/FastVLM-1.5B-Stage3",
trust_remote_code=True,
torch_dtype=torch.bfloat16,
device_map="auto",
)
# Load and merge adapter
model = PeftModel.from_pretrained(base, "SearchingBinary/nolitai-vision")
model = model.merge_and_unload()
model.eval()
# Load processors
processor = AutoProcessor.from_pretrained("zhaode/FastVLM-1.5B-Stage3", trust_remote_code=True)
image_processor = CLIPImageProcessor.from_pretrained("zhaode/FastVLM-1.5B-Stage3")
tokenizer = processor.tokenizer
# Inference
image = Image.open("meeting_screenshot.png").convert("RGB")
image_tensor = image_processor.preprocess(image, return_tensors="pt")["pixel_values"]
image_tensor = image_tensor.to(device=model.device, dtype=torch.bfloat16)
prompt = 'Identify the active speaker. Respond with JSON: {"speaker": "Name"}'
chat = [{"role": "user", "content": prompt}]
text = tokenizer.apply_chat_template(chat, tokenize=False, add_generation_prompt=True)
inputs = tokenizer(text, return_tensors="pt").to(model.device)
# NOTE: FastVLM expects input_ids as positional arg, not keyword
outputs = model.generate(inputs["input_ids"], images=image_tensor, max_new_tokens=256)
response = tokenizer.decode(outputs[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True)
print(response)
This model is part of nolit.ai — a native macOS meeting copilot that processes everything locally on your Mac. The vision model handles real-time speaker identification during video calls.
Apache 2.0