<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Computer Vision on YennJ12 Engineering Blog</title><link>https://yennj12.js.org/yennj12_blog_V4/tags/computer-vision/</link><description>Recent content in Computer Vision on YennJ12 Engineering Blog</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Sun, 21 Jun 2026 12:30:00 +0800</lastBuildDate><atom:link href="https://yennj12.js.org/yennj12_blog_V4/tags/computer-vision/feed.xml" rel="self" type="application/rss+xml"/><item><title>AI 工程從零開始｜Phase 4 Part 1：電腦視覺基礎 — 從像素到 CNN 特徵</title><link>https://yennj12.js.org/yennj12_blog_V4/posts/ai-eng-from-scratch-phase4-part1-cnn-image-fundamentals-zh/</link><pubDate>Sun, 21 Jun 2026 11:30:00 +0800</pubDate><guid>https://yennj12.js.org/yennj12_blog_V4/posts/ai-eng-from-scratch-phase4-part1-cnn-image-fundamentals-zh/</guid><description>大多數工程師拿到影像分類任務，第一反應是直接 Fine-tune ResNet50。 但面試官真正想聽的是：你為什麼選 ResNet？池化層存在的意義是什麼？ 當訓練資料只有 5,000 張時，Fine-tune 和 Feature Extraction 哪個對？ 能回答這三個問題，才算真正理解電腦視覺的工程基礎。
面試情境 面試官問： 「你的團隊要為一個醫療 App 建立皮膚病灶分類模型，訓練集只有 8,000 張標注影像、7 個類別，部署目標是手機端推論延遲 &amp;lt; 200ms。請說明你的架構選擇、遷移學習策略，以及你會怎麼處理類別不平衡問題。」
一、核心問題：影像理解的本質挑戰 影像資料與結構化資料有三個根本差異，讓全連接網路（Fully Connected）幾乎無法直接勝任：
1. 維度爆炸 一張 224×224 RGB 影像 = 150,528 個像素值。若用全連接層，第一層就需要 150,528 × hidden_units 個參數。一個 512 hidden units 的層，光第一層就是 77M 參數——這還沒考慮過擬合。
2. 空間不變性缺失 全連接層把像素當作獨立特徵看待，完全忽略空間關係。一隻貓在左上角和右下角，對 FC 層而言是完全不同的輸入。
3. 局部結構的重要性 影像中有意義的特徵（邊緣、紋理、形狀）都是局部的、階層式的。邊緣 → 紋理 → 部件 → 物件，這個從低階到高階的特徵階層，正是 CNN 設計的出發點。
CNN 用三個核心機制解決上述問題：
局部連接（Local Connectivity）：每個神經元只看一小塊感受野 參數共享（Weight Sharing）：同一個卷積核在整張影像上滑動 階層式特徵提取（Hierarchical Feature Learning）：堆疊卷積層逐步抽象 二、三個演進階段（POC / MVP / Scale） Phase 1 — POC（&amp;lt; 1 萬張訓練影像） ┌────────────────────────────────────────────────────┐ │ Pre-trained Backbone (凍結所有權重) │ │ ┌──────────────────────────────────────────────┐ │ │ │ ResNet50 / MobileNetV2 (ImageNet weights) │ │ │ └──────────────────┬─────────────────────────┘ │ │ │ Feature Vector (2048-d) │ │ ┌──────────────────▼─────────────────────────┐ │ │ │ Global Average Pooling │ │ │ └──────────────────┬─────────────────────────┘ │ │ │ │ │ ┌──────────────────▼─────────────────────────┐ │ │ │ Linear Classifier (新增，只訓練這層) │ │ │ │ Dense(256) → Dropout(0.</description></item><item><title>AI 工程從零開始｜Phase 4 Part 2：目標偵測與語義分割 — 讓機器看懂空間</title><link>https://yennj12.js.org/yennj12_blog_V4/posts/ai-eng-from-scratch-phase4-part2-detection-segmentation-zh/</link><pubDate>Sun, 21 Jun 2026 12:00:00 +0800</pubDate><guid>https://yennj12.js.org/yennj12_blog_V4/posts/ai-eng-from-scratch-phase4-part2-detection-segmentation-zh/</guid><description>大多數人以為「目標偵測」只是把框畫出來， 用最新的預訓練模型跑一跑就算完成。 真正的工程挑戰是：在 10ms 內偵測 20 個物件、 同時讓精度在邊緣設備上不低於雲端 80%。
面試情境 你負責一套工廠自動化視覺系統，需要在產線 conveyor belt 上即時偵測瑕疵零件（&amp;lt; 1cm² 小缺陷），相機 30fps，邊緣 GPU 只有 RTX 3060（12GB VRAM），允許誤報率 ≤ 2%，漏報率 ≤ 0.5%。請說明你會選擇什麼模型架構、訓練策略與部署優化方案。
一、核心問題：分類 vs 偵測 vs 分割的本質差異 影像理解有三個遞進的問題層次，每一層的工程複雜度都數量級地跳升：
分類（Classification）：圖裡有什麼？
輸出：一個類別標籤 + 信心分數 代表模型：ResNet、EfficientNet 瓶頸：無法回答「在哪裡」「有幾個」 偵測（Detection）：圖裡有什麼、在哪裡？
輸出：N 個邊界框（bounding box）+ 類別 + 信心分數 代表模型：YOLO 系列、Faster R-CNN 瓶頸：需處理多尺度、密集排列、遮擋問題 分割（Segmentation）：每個像素屬於哪個類別/哪個實例？
語義分割：每像素給類別標籤，不區分實例（FCN、U-Net） 實例分割：每個物件實例有獨立 mask（Mask R-CNN） 全景分割：語義 + 實例的聯集（Panoptic FPN） 瓶頸：標注成本高（偵測框 30 秒/張 vs 多邊形分割 10 分鐘/張） 工程上選擇哪個任務，核心取捨在於：
任務 標注成本 推論延遲（A100） 典型應用 分類 低（1 秒/張） 2–5ms 內容稽核、產品分類 偵測 中（30 秒/張） 5–30ms 車牌辨識、人流計數 語義分割 高（5 分鐘/張） 15–80ms 自駕車道路解析 實例分割 極高（10 分鐘/張） 30–150ms 機器人抓取、醫療影像 二、三個演進階段（POC → MVP → Scale） ╔══ Phase 1：POC / &amp;lt; 1K 張/天 ══╗ ┌─────────────────────────────────────────────────┐ │ 原始影像 │ │ │ │ │ ▼ │ │ ┌──────────────────────┐ │ │ │ YOLOv8n pretrained │ COCO 預訓練 │ │ │ (Ultralytics CLI) │ 直接 fine-tune │ │ └──────────┬───────────┘ │ │ │ │ │ ▼ │ │ JSON/CSV 結果輸出 → 人工審查 │ └─────────────────────────────────────────────────┘ 工具：Ultralytics yolo train CLI，Roboflow 標注 成本：單張 T4 GPU $0.</description></item><item><title>AI 工程從零開始｜Phase 4 Part 3：視覺語言模型、3D 視覺與世界模型</title><link>https://yennj12.js.org/yennj12_blog_V4/posts/ai-eng-from-scratch-phase4-part3-vlm-3d-worldmodels-zh/</link><pubDate>Sun, 21 Jun 2026 12:30:00 +0800</pubDate><guid>https://yennj12.js.org/yennj12_blog_V4/posts/ai-eng-from-scratch-phase4-part3-vlm-3d-worldmodels-zh/</guid><description>「大多數人用 2D 圖片分類解決視覺問題； 高手用視覺語言模型跨模態推理； 但真正的世界理解需要 3D 空間感知與時序動態模型。 從像素到世界模型，是從感知到智慧的本質躍升。」
面試情境： 你正在設計一個自動駕駛感知系統，需要整合街景攝影機（2D RGB）、LiDAR 點雲（3D）、以及自然語言指令（「前方有行人，請減速」）。面試官問：你會如何架構視覺語言理解管線？在 10K 場景/天的訓練規模下，NeRF 重建和 3D Gaussian Splatting 各有什麼取捨？當系統需要預測「接下來 3 秒會發生什麼」時，你會引入什麼樣的世界模型？
一、核心問題：從 2D 感知到 3D 世界理解的躍升 傳統電腦視覺的範式是：輸入圖片 → 抽特徵 → 輸出分類/框。這個方法在 ImageNet 時代表現出色，但遇到真實世界的複雜任務時，三個根本限制浮現：
限制一：模態孤島問題 視覺模型只能輸出類別 ID，語言模型只能處理文字。當使用者問「這張照片裡有幾個人戴了眼鏡？」，純視覺模型無法作答，純語言模型看不見圖片。視覺語言模型（VLM）的出現就是為了打破這道牆。
限制二：2D 投影丟失深度資訊 相機成像是 3D 世界投影到 2D 平面的過程，這個過程不可逆——除非你有多視角或深度先驗。自駕車需要知道「前方障礙物距離 4.2 公尺」而不只是「畫面中央有個人」。NeRF 和 3D Gaussian Splatting 嘗試從 2D 影像重建 3D 場景。
限制三：靜態感知缺乏因果推理 世界是動態的。「當前場景是什麼」和「接下來會發生什麼」是完全不同的問題。預測未來需要世界模型（World Model）——一個能模擬物理因果關係的系統。Sora 等影片生成模型被認為是早期世界模型的體現。
本文沿著這三個維度展開：VLM 打通語言與視覺、3D 重建恢復空間幾何、世界模型引入時序因果。
二、三個演進階段（POC / MVP / Scale） Phase 1：POC（&amp;lt; 1K 查詢/日） 目標： 最快驗證 VLM 可行性，不自訓練，全用 API</description></item></channel></rss>