鞋底防滑 AI 檢測系統

交付驗收入口 — 消費者 · 鞋廠 · 後台 + 雙層 AI

拍三張鞋底照 → AI 估算乾/濕摩擦力(COF)+ 防滑等級 + 本地 LLM 白話建議。本頁含「研究·訓練歷程」一頁頁簡報、三角色平台入口與用戶路徑測試。每個功能都標明「怎麼走、做什麼、該看到什麼」。

📅 更新日期 2026-06-29 🟢 本地 Demo 站 de3bb18
🟢 本地 Demo 環境(內測)
跑在開發者 Mac 上:真實 CV 模型本地 LLM(gemma4:26b),經 Cloudflare Tunnel 對外。資料是測試資料,放心點、放心測
⚙️ 正式環境(業主 GX10 地端)· 待上線
正式版將部署到業主機房的 NVIDIA GX10(地端、零對外 inbound)。內測先跑本機、機器到位後一鍵升正式 —— 本頁不假裝正式站已上線
📦 這次交付了什麼

開會頭牌 · 先看這個

🔬 研究 · 訓練歷程

這套 AI 不是「套個現成模型」——它是從業主的真實檢測資料、一步步試出來的。用 ◀ ▶ 一頁頁看:我們怎麼讀資料、踩到哪些真問題、做了哪些決策、兩個關鍵突破怎麼把準度翻倍,以及最誠實的能力邊界。

鞋底防滑 AI · 研究與訓練歷程
封面

把一張鞋底照片,變成防滑安全分數

問題 + 我們要做的事

問題:鞋底磨損肉眼難判斷,濕滑跌倒是真實風險;實驗室 ASTM 摩擦試驗準,但慢、貴、要送驗。

我們要做的:讓消費者拍三張鞋底照,就能得到乾/濕摩擦係數(COF)+ 防滑等級 + 白話建議;鞋廠/實驗室用同一套快速初篩。

L1
電腦視覺模型
照片 → COF 數字
L2
本地 LLM
數字 → 繁中報告
3 角色
消費者 · 鞋廠 · 後台
01 · 資料

我們收到什麼資料

業主(鞋技中心/製鞋業者)首批訓練資料

41 雙鞋
每雙 ~60 張整底各角度照
2,480
手持照(辦公室/實驗室背景)
32
附 ASTM 正式檢測報告(PDF)
  • 32 雙附 FRT 鞋技中心 ASTM F2913 正式報告;9 雙只有照片、沒報告(彪琥等 → 無標籤、未用)。
  • 涵蓋 11 家鞋廠、材質含橡膠(NR)/EVA/TPR/TPE/PU。
  • 照片是「整個鞋底各角度的手持照」,背景雜亂 —— 這點後面會變成關鍵。
02 · 標籤

標籤是金級的,但鎖在 PDF 裡

ASTM F2913:2011 摩擦係數試驗

每份報告含 前掌 / 後跟 / 水平 × 乾 / 濕 共 6 個 COF 值。COF 已是 0–1 量級(濕式 0.30–0.86),剛好對齊模型輸出。

  • PDF 無文字層(純影像)→ 用視覺萃取數字。
  • 用報告第 3 頁「個別量測值」的平均,逐格交叉驗證32 份全部對得上(誤差僅四捨五入)。
  • 抽驗可疑值(金弘粗跟女鞋後跟乾式僅 0.34)→ 看照片證實是真的(粗跟是光滑硬塊、低抓地),非萃取錯誤。
標籤品質 = 金級(實驗室正式報告)。難點不在「資料準不準」,而在「樣本夠不夠多」—— 見下一頁。
03 · 資料探勘

資料探勘:四個真議題

這四點決定了模型怎麼做

  • ① 樣本量小:只有 32 雙有標籤(原 spec 要幾百~1000)→ v1 必為「諮詢級弱模型」,要用嚴格的分組驗證。
  • ② 照片對不上原設計:實際是「整底多角度照」,不是乾淨的前掌/後跟/全底分區照。
  • ③ 全是新鞋:32 雙全工廠新成品 → 「該換」(replace)等級 0 筆。但消費者情境正是磨損舊鞋。
  • ④ 乾式 COF 常 >1.0:模型的 sigmoid 表示不了 → 訓練時壓縮、推論還原(濕式全在範圍內,無此問題)。
04 · 模型決策

模型決策:收斂成「整底 → 兩個值」

業主拍板:整體乾/濕兩個 COF

  • 單張整底照(+材質)→ 整體 (cof_wet, cof_dry)不做分區 head(資料不足以撐)。
  • 凍結的 ConvNeXt-Tiny 當特徵抽取器 + 小型 MLP head。
    (整個微調 28M 參數 vs 32 筆 → 過大,會塌成「永遠猜平均」。)
  • 對外的資料合約完全不動:產品端仍送 3 張分區照,推論時各跑一次、用固定權重(前掌 0.30/後跟 0.40/全底 0.30)組整體 → 前端/LLM/API 全無感。
05 · 突破一 💡 這是光裕提的方向

突破①:把背景去掉(去背)

辦公室雜亂背景是干擾,不是資訊

用 rembg(u2net)把鞋底從雜亂背景摳出來、其餘填白,模型只看鞋底本身。= 去雜訊,不是加雜訊。

原始(含背景)R² 0.07
去背後R² 0.18

濕式 32 折驗證 R² 0.07 → 0.18(翻一倍)。第一個關鍵突破。

06 · 突破二 💡 這是光裕提的點子

突破②:前中後切三段放大(三 crop)

對上「標籤本來就是分區的」

去背後沿鞋底長軸切前/中/後三段、各自放大,依亮度排序(翻轉不變),三層一起餵模型。等於變相提高解析度,又呼應「報告本來就是前掌/後跟分區量的」。

去背R² 0.18
去背 + 三 cropR² 0.32

0.18 → 0.32(再翻一倍)。兩個讓準度翻倍的關鍵 lever,都是光裕提的方向。

07 · 誠實評估

怎麼誠實評估:32 折 LOSO

Leave-One-Shoe-Out 留一雙鞋交叉驗證

  • 為何 leave-one-shoe-out:同一雙鞋的多張照片若跨訓練/驗證 = 作弊洩漏。改成按鞋分組、每次留一整雙當驗證、輪 32 次,數字才誠實。
  • full fine-tune 為何塌:28M 參數 vs 32 個獨立標籤 → 過擬合到「永遠猜平均」,R² 變 −1.6(比亂猜還差)。凍結 backbone 才會真的隨輸入變。
  • 解析度實驗:224 vs 384 只差濕式 +0.04 → 壓縮不是大魚,不用為它煩惱。
08 · 結果

最終數據結果

逐步逼近誠實上限(可靠 = 32 折 LOSO 濕式)

做法R²(濕式)MAE
整個微調(full fine-tune)−1.6 ❌—(塌成平均)
凍結 backbone0.070.065
+ 去背0.180.056
+ 三 crop(出貨版)~0.320.054

出貨版用全 32 雙訓練(泛化已由 LOSO 估過);模型版本 cv-convnext_tiny-v1,推論信心 ~0.89(由 LOSO 誤差推得)。

09 · 第二層

L2:本地 LLM 生成中文報告

真預測 → Ollama gemma4:26b → 繁中三段報告

CV 模型的數字一般人看不懂。第二層把它交給本地大型語言模型(gemma4:26b,全程在機器內、不出雲,約 7–14 秒),生成「整體評估 / 具體分析 / 建議行動」三段白話報告。

「根據您提供的檢測數據,目前的評估結果為 安全(Safe),鞋底摩擦力表現尚在穩定範圍內⋯⋯前掌與後跟的濕地摩擦係數分別為 0.539 與 0.542,兩者差異極小且均維持在安全等級⋯⋯可以繼續放心穿著,但建議留意鞋底紋路是否因長期使用而變平。」
— 模型對「裕華橡膠涼鞋」的真實輸出(節錄)
10 · 誠實結論

最誠實的結論:資料是天花板

v1 是諮詢級估算器,不是安全保證

  • v1「真的會跑、會隨輸入變、贏過猜平均、合約相容」,足以讓系統變真、上線、啟動資料飛輪
  • 但仍弱:R²~0.32 = 只解釋約 1/3 變異。這是 32 雙新鞋的硬上限,不是架構問題(架構已試遍)。
  • 要變準,唯一的槓桿是資料 —— 尤其磨損舊鞋/低 COF/「該換」等級(目前 0 筆)。
🔁 資料飛輪:每批新資料 → 增量訓練 → 模型更準 → 更多用戶上傳 → 更多資料。第一版的價值,是把這個輪子轉起來。

Step 1 — 取得入口

🚪 三角色平台入口

三個角色、同一套後端。下方連結指向本地 Demo 環境(跑在開發者 Mac、經 Cloudflare Tunnel 對外)。種子帳號可直接登入試用。* Demo 站需開發者端服務運行中才可連線。

📱

消費者 · LINE LIFF

LINE 加官方帳號 → 圖文選單進 LIFF(Demo 可直接開網頁版)

開啟消費者端

https://shoetec-stg.ai-cto.app/

種子帳號
LINE 用戶 測試消費者(Demo 直接登入)
能做什麼
  • 拍/傳三張鞋底照(前掌/後跟/全底)
  • 看防滑分數 + 等級 + 磨耗熱圖
  • 本地 LLM 白話換鞋建議
  • 歷史檢測紀錄
🏭

鞋廠 · 研發工作台

電腦瀏覽器開網址 → 帳密登入

開啟鞋廠工作台

https://shoetec-stg.ai-cto.app/vendor

種子帳號
帳號 vendor@example.test
密碼 Test1234!
能做什麼
  • 上傳鞋款送驗(材質 + 型號 + 樣本標籤)
  • COF/等級/熱圖/模型解讀
  • 歷史款比對(研發資料庫)
  • 跨公司資料隔離
🛠️

後台 · 管理端

電腦瀏覽器開網址 → 帳密登入

開啟後台管理

https://shoetec-stg.ai-cto.app/admin

種子帳號
管理員 admin@shoetec.test
唯讀 readonly@shoetec.test
密碼 Test1234!
能做什麼
  • 系統儀表板(用戶/檢測量/服務健康)
  • 模型版本管理(CV + LLM)
  • 用戶紀錄、系統紀錄(審計)
  • 角色權限(管理員可寫/唯讀可讀)

Step 2 — 跟著走一遍

⭐ 角色用戶路徑測試

下面三幕是「同一筆檢測」從消費者上傳、到鞋廠研發、到後台監看的完整流程。標注 前後台聯動 的地方,前台一動、後台同步出現。

💡 建議方式:一支手機(或瀏覽器,扮消費者)+ 一台電腦(開鞋廠工作台 / 後台)。先用消費者端上傳三張鞋底照、看報告,再到後台看這筆檢測進了統計、模型版本是哪一版。
消費者上傳鞋底照 CV 模型 + 本地 LLM 看分數 / 熱圖 / 報告 後台統計 + 模型版本
1

消費者:上傳鞋底照、拿報告

消費者

做什麼

  1. 開消費者端 → 點「立即檢測」
  2. 依指引拍/選三張鞋底照(前掌/後跟/全底),可選材質
  3. 送出 → 等 AI 跑(CV 模型 + 本地 LLM)
✅ 該看到乾/濕 COF 兩個分數 + 防滑等級(安全/注意/建議換鞋)+ 磨耗熱圖 + 一段繁中換鞋建議;回首頁可在「最近一次結果」看到它,歷史頁也有。
🔎 前後台聯動後台「系統儀表板」的「今日檢測次數」會 +1;這筆會進「近 7 日檢測量」。
2

鞋廠:送驗鞋款、比對歷史

鞋廠

做什麼

  1. vendor@example.test / Test1234! 登入鞋廠工作台
  2. 「上傳檢測」→ 傳三張鞋底照 + 選材質 + 填鞋款型號 + 樣本標籤 → 開始預測
  3. 看結果頁;再到「歷史款比對」看研發資料庫
✅ 該看到結果頁含精確 COF(兩位小數)+ 綜合防滑評級(A/B/C)+ 磨耗熱圖 + 模型解讀 +「CV 模型 v1 · 推論信心」;歷史頁列出本公司送驗鞋款。
🔎 資料隔離每家鞋廠只看得到自己的資料(跨公司存取會被擋)。
3

後台:監看系統與模型版本

管理員

做什麼

  1. admin@shoetec.test / Test1234! 登入後台
  2. 看「系統儀表板」:總用戶、今日檢測、近 7 日量、服務健康狀態
  3. 進「模型版本」:看現在啟用的 CV 模型與本地 LLM
✅ 該看到服務健康:主 API / CV 推理 / 本地 LLM / 資料庫 = 正常;模型版本頁顯示 CV 模型 friction-cv v1(驗證 MAE 0.054)本地 LLM gemma4 26B
🔎 權限用唯讀帳號 readonly@shoetec.test 登入 → 看得到資料、但寫入動作(如切換模型)被擋。

底層怎麼運作

🧠 前端 / 後端 · AI 管線總覽

一筆檢測從上傳到報告,會經過這幾關。CV 推理與本地 LLM 在 Demo 環境跑的是真實模型(非假資料)。

📤
上傳三張照
消費者/鞋廠送出前掌·後跟·全底鞋底照
前端 → API
👁️
CV 推理(ml-infer)
去背 → 切三段 → ConvNeXt 模型 → 乾/濕 COF + 等級 + 遮擋顯著性熱圖
真實模型 v1
💬
本地 LLM(Ollama)
把 COF 數字 + 鞋款資訊 → 繁中三段報告
gemma4:26b · 本地
📄
報告呈現
前台看分數/熱圖/報告;後台進統計
DONE
🔒
全本地、不出雲:CV 模型與 LLM 都跑在機器內(Demo=開發者 Mac/正式=業主 GX10)。鞋底照片與檢測資料不送任何第三方雲端 API。

現況

📊 示範數據 · 待辦 · 誠實聲明

3 角色平台
消費者 / 鞋廠 / 後台
32
附 ASTM 報告的訓練鞋款
R² 0.32
濕式 32 折 LOSO(v1)
~10
一筆端到端(CV+LLM)
項目狀態說明
三角色平台 + 端到端已完成本地 Demo 已可走完整流程
L1 真實 CV 模型 v1已完成去背+三 crop,濕式 R²~0.32
L2 本地 LLM 報告已完成gemma4:26b 繁中三段報告
正式環境(業主 GX10)待上線機器到位後部署、升正式網域
補訓練資料(磨損鞋/低 COF)進行中提升準度的唯一槓桿(見下)
英文報告 / 多模態(圖文一起餵 LLM)規劃中v2 範圍
⚠️
誠實聲明:v1 是「諮詢級估算器」,不是安全保證。它從 32 雙全新鞋學成,沒見過磨損舊鞋與「該換」等級,準度天花板被資料量框住(濕式 R²~0.32)。要變準,真正的槓桿是資料,不是模型 —— 補更多鞋(尤其磨損/低 COF)就能透過資料飛輪持續變強。這也正是這套系統的長線價值。