PORTFOLIO
Selected work in Vision AI and AI.
Turning real-world visual data into structured knowledge.
01 — Lectures
Teaching Go, now produced with AI.
Two Go courses on Inflearn (33 lessons, 9 h 19 min). The new course is built from a single script into Korean and English editions, narrated in my own voice cloned with ElevenLabs.
Courses
-
2022.12.02
Published View on Inflearn
Really Easy Go for Beginners
Inflearn · 17 lessons · 4 h 21 min
-
2023.04.13
Published View on Inflearn
Really Easy Go: Intermediate
Inflearn · 16 lessons · 4 h 58 min
-
—
In production
Building Fast Go Programs
Korean · English · AI production pipeline
-
—
Next
The next course starts right after
AI Lecture Pipeline
One Markdown script becomes a finished episode. Every line is checked before any paid voice synthesis; the narration is my own voice cloned with ElevenLabs, and the slides, coding practice and motion graphics are timed to it.
- Script Markdown
- Script Check before paid TTS
- Narration · My Voice ElevenLabs PVC · Multilingual v2
-
- SlidesManim · red pen
- Coding Practicecode-server · Go Playground
- Motion GraphicsBlender
- Episode KO · EN
DemoSame scene, two languages
The same page from episode 1, built from one script. Both narrations are my cloned voice.
02 — MediaVault
An AI archive that cross-checks itself.
MediaVault ingests documents and images, extracts meaningful information with multiple AI models, and cross-checks the results to build a reliable, searchable archive.
Document Analysis
- Upload
- Deduplication xxHash64 → BLAKE3
- Format Conversion LibreOffice → PDF
-
AI Analysis
- Claude
- Gemini
- Qwen3-VL
- Gemma4
- Search Full-Text Search · Tag Filter
Image Analysis
- Upload
- Deduplication xxHash64 → BLAKE3 · dHash → pHash
- Metadata EXIF
-
- Person DetectionYOLOv8-seg
- Age & GenderMiVOLO → InsightFace
- Face EmbeddingAdaFace
- Image EmbeddingSigLIP SO400M
-
Image Description
- Step3-VL
- Qwen3-VL
- Gemma4
-
Cross-check & Merge
- Claude
- Gemini
- Gemma4
- Search Full-Text · Vector · Text-to-Image
- Dedicated model
- Swappable model
Models in use
| Stage | Model | Role |
|---|---|---|
| Document analysis | Claude / Gemini / Qwen3-VL / Gemma4 | Document understanding and information extraction |
| Image analysis (detection) | YOLOv8-seg | Person detection and segmentation |
| Image analysis (face) | MiVOLO / InsightFace / AdaFace | Age, gender and face embedding |
| Image analysis (embedding) | SigLIP SO400M | Image embedding for similarity search |
| Image description | Step3-VL / Qwen3-VL / Gemma4 | Generate detailed image descriptions |
| Cross-check & merge | Claude / Gemini / Gemma4 | Keep only answers agreed by two or more models |
03 — FashionEngine
From product pages to searchable fashion data.
FashionEngine converts e-commerce product pages into structured fashion data, using computer vision to segment, classify, and analyze garments at scale.
Ingest
Stores the information and images provided to us, then deduplicates and indexes them for processing.
- Provided Info & Images Info · Images
- Deduplication Image hash
- Index PostgreSQL
- Processing Queue Task queue
DemoDetail Page Segmentation
A product detail page is not a stack of photos. It is one long image where a designer has blended photos, text and background decoration together. It looks like you could just cut along the white gaps, but backgrounds run on, text sits on top of photos, and designers deliberately fade edges so sections flow into each other. On top of that, JPEG compression noise scatters faint speckles across what should be clean white space, so simple rules break.
First, a fine-tuned Swin seam model draws horizontal lines across the page only where photos start and end. Text blocks and products on a plain background get no lines.
- Seam
- Swin seam (fine-tuned)
- Training data
- 6,581 images (956 real photos + 5,625 synthetic)
Sample images are AI-generated
person
text
person
person
text
text
text
flat_lay
text
flat_lay
flat_lay
DemoClassify
Then a fine-tuned Microsoft Florence-2 draws a box for every region and decides whether it is a person, mannequin, flat lay, fabric or text.
Only text blocks with at least one Korean word count as text; English-only lettering is treated as decoration. Photos are boxed along clear edges, or around the smallest area of the garment when there is no edge.
We hand-labeled 2,625 labels in Label Studio to build the training data.
- person
- text
- person
- person
- text
- text
- text
- flat_lay
- text
- flat_lay
- flat_lay
- Judge
- Florence-2 (fine-tuned) · 5 classes
- Training data
- 2,625 labels, hand-made in Label Studio
- OCR
- Qwen3-VL 8B
Sample images are AI-generated
DemoGarment Masking
SAM3 takes a keyword from the product name (e.g. knit → "knit sweater") and segments only the target product, pixel by pixel. It follows the garment's outline instead of drawing a box; everything else is made transparent and the result is cropped. Only this cut-out goes on to embedding.
- Model
- SAM3 (text prompt · knit sweater)
- Next
- Only the cut-out goes to embedding
Sample images are AI-generated
Embed
Turns each garment into vectors to find similar items.
- Model
- DINOv3 ViT-L (1024-d) · Marqo-FashionSigLIP (768-d)
- Search
- pgvector (HNSW, cosine)
Analyze
Reads the garment's attributes from representative shots.
Inter-VLM Agreement Verification
Three VLMs judge each property separately, and an LLM settles the answer by majority vote. When there is no majority, a person reviews it (QBC, Query-by-Committee).
- Representative Shots Representative shots
-
- VLM 1Property vote
- VLM 2Property vote
- VLM 3Property vote
- Majority Vote LLM · majority vote
-
- Confirmed2 of 3 agree
- Human ReviewNo majority · QBC
- Judges
- VLM × 3
- Decision
- LLM majority vote · no majority → human review (QBC)
- Attributes
- Color · Pattern · Detail · Body type and dozens more
04 — Kinevo
Learning posture and motion in 3D.
Coming soon.