CanMV K230 行人號誌閱讀器|專題研究

讓視障者
聽得見行人號誌。

eye 是一款配戴於胸前的行人號誌閱讀器原型。裝置在路口即時辨識台灣行人號誌的紅燈、綠燈與綠燈閃爍,並以語音提示使用者;當辨識結果不夠確定時,系統一律回報「無法確認」,不會推測為綠燈。

研究原型:尚未完成實地驗證,不能取代白手杖、導盲犬或他人協助。

裝置語音

語音提示

系統只使用少數固定語句,內容簡短、意義明確,避免在嘈雜的路口造成誤解。以下為裝置實際播放的語句。

紅燈,請等待
前方的行人號誌為紅燈。
綠燈,可以通行
前方的行人號誌為綠燈,且信心達到較嚴格的綠燈門檻。
綠燈快結束,請勿開始穿越
偵測到綠燈閃爍,剩餘時間不足以安全穿越。
號誌無法確認,請勿開始穿越
先前判斷為綠燈的號誌已無法確認,不應再依賴該判斷。
號誌不清楚,請稍等
畫面中有號誌,但燈色無法可靠判斷。
未偵測到號誌,請慢慢左右轉動
持續數秒未看到號誌時,提示使用者原地緩慢轉身尋找。

實心圓點:恆亮的燈號 空心圓點:閃爍的燈號 灰色圓點:非燈號的狀態提示

另有「系統啟動」、「找到號誌」與「系統錯誤」等狀態提示。

辨識流程:從影像到語音

每一幀影像依序經過五個步驟。前兩步負責定位號誌,後三步決定是否發出提示,以及提示的內容。

1–2限定行進方向並定位號誌

綠
0.94
紅
0.03
其他
0.03

3裁切影像並判斷燈色(數值為示意)

連續多幀皆判斷為綠燈

4–5多幀一致後才發出提示

單一影格的處理流程(示意)。實機約每秒處理 14 幀。
  1. 限定行進方向

    僅分析畫面中央、使用者行進方向的區域,避免誤讀相鄰路口的號誌。

  2. 定位號誌

    偵測模型(YOLO26n)在該區域內框出行人號誌的位置。

  3. 判斷燈色

    自高解析度原始影像裁切 96×96 影像,由燈色分類模型(YOLO11n-cls)判斷紅、綠或其他;框內若有明顯紅光,即否決綠燈判斷。

  4. 時間一致性

    連續多幀結果一致時才改變狀態,單一影格的誤判不會直接轉為語音。

  5. 語音輸出

    由 K230 開發板直接播放語音,不需連接手機或網路。

視覺辨識:雙模型架構

系統將「定位號誌」與「判斷燈色」分由兩個輕量模型負責。定位需要較大的視野;判斷燈色只需小範圍影像,因此可直接自高解析度原圖裁切,提升遠處號誌的判讀品質。

第一階段:定位

偵測模型

架構
YOLO26n
輸入
640 × 640 行進方向區域
輸出
行人號誌邊界框
實機推論
55.9 毫秒

第二階段:燈色

燈色分類模型

架構
YOLO11n-cls
輸入
96 × 96 號誌影像
輸出
紅、綠、其他
實機推論
3.2 毫秒

兩個模型皆以 nncase 轉換為 int8 kmodel,於 K230 的 KPU(神經網路加速器)上執行,全程離線運作。模型訓練使用 Kaggle 提供的 GPU 資源。

訓練資料的蒐集與清理

  • 2,455

    張台灣路口影像(自建資料集),其中 1,567 張含行人號誌標註。

  • 1,364

    張保留:以 OpenCLIP 篩除機車與行車視角的影像,僅保留行人視角。

  • 630

    張車用號誌燈箱作為負樣本,使車用號誌誤判為行人綠燈的次數由 12 次降至 0 次。

  • 80%

    新資料來源的採用門檻:人工抽查標註,正確率未達 80% 即整批不採用。第二批維基共享資源影像的抽查正確率為 40.6%,未予採用。

  • 19

    張所有模型皆未接觸的影像列為封存測試集,僅於正式發布時開啟,用以確認成績未因資料重疊而高估。

另納入開發板相機實拍影像、近距離合成影像,以及經逐張複查標註的國外行人號誌資料。

訓練資料筆數

目前上板候選模型所使用的資料集。訓練集用於學習,驗證集用於選擇最佳訓練週期,測試集僅用於最終評估。

兩個模型的訓練資料筆數
模型訓練集驗證集測試集訓練集組成
偵測模型 roi_v4 2,582396125 台灣路口實拍 1,043、近距離合成影像 1,500、室內負樣本 39;共 2,648 個標註框
燈色分類模型 v12_hf 6,474763250 96 × 96 影像:綠 2,078、紅 2,196、其他 2,200

寧可回報「無法確認」, 也不誤報「綠燈」。

  • 零容忍的錯誤

    將紅燈誤報為綠燈,可能使使用者在紅燈時進入車道。因此任何模型在離線評估中,此類錯誤必須為 0,才可部署至開發板。

  • 不對稱的信心門檻

    燈色分類模型對綠燈的信心須達 0.8 才會提示綠燈,紅燈則為 0.6。兩種錯誤的後果不同,門檻也隨之不同。

  • 不預設綠燈

    影像不清、號誌過小,或連續影格的結果不一致時,系統一律回報無法確認。新增的功能只能使系統更保守,不得提高綠燈提示的機率。

  • 綠燈中斷的處理

    原本判斷為綠燈的號誌中途無法確認時,系統提示「請勿開始穿越」,而非「停止」:使用者可能已在穿越途中,突然停下反而危險。

評估結果

以下為目前上板候選組合(偵測模型 roi_v4+燈色分類模型 v12_hf)的離線評估結果。本專題的首要指標是「不將紅燈誤報為綠燈」,其次才是整體正確率。

紅燈或非號誌誤報為綠燈
0測試集與驗證集,全部影格
車用號誌誤判為行人綠燈
0/28澳洲 NSW 公開資料集的車用號誌
實機處理速度
14.4幀/秒(K230 實測)

判讀正確率

圓點為正確率,線段為 95% 信賴區間(Wilson);樣本越少,區間越寬。

測試集裝置可拍攝範圍 91.9%
驗證集裝置可拍攝範圍 87.8%
偵測模型未曾學習的影像32 張 90.6%
開發板相機實拍44 張 86.4%
「裝置可拍攝範圍」排除直式近拍影像:開發板為橫向鏡頭,實際使用時不會產生此類畫面。若納入這些影像,測試集與驗證集的正確率分別為 83.9% 與 82.0%。

57 張誤判影格的原因分析

測試集與驗證集中含號誌的 179 張影格。

  • 實際誤判
  • 依規則不判讀
直式近拍 28
遠距離小號誌 17
燈色判讀 11
選錯號誌 1
紅綠相反的 4 張皆為綠燈判為紅燈,屬於安全方向的錯誤。近拍影像不判讀為刻意設計:若移除此規則,正確率雖會上升,但會新增 1 張危險影格。

車用號誌誤判為行人綠燈的次數

不同版本的燈色分類模型,搭配相同的偵測模型。

  • 目前上板候選
  • 其他版本
v4目前上板 7
v11 2
v12無車用號誌負樣本 12
v12_hf上板候選 0
v12 與 v12_hf 使用相同資料,差別僅在加入 630 張車用號誌負樣本。
以表格檢視全部數據
上板候選組合(roi_v4+v12_hf)的離線評估
評估項目結果比例95% 信賴區間
測試集(裝置可拍攝範圍)102 / 11191.9%85.3%–95.7%
驗證集(裝置可拍攝範圍)158 / 18087.8%82.2%–91.8%
偵測模型未曾學習的影像29 / 3290.6%75.8%–96.8%
開發板相機實拍38 / 4486.4%73.3%–93.6%
測試集、驗證集(含直式近拍)—83.9%、82.0%—
紅燈或非號誌誤報為綠燈0——
車用號誌誤判為行人綠燈0 / 280%0%–12.1%
誤判影格的原因(含號誌的 179 張影格中,誤判 57 張)
原因張數細項
直式近拍(依規則不判讀)28號誌距離約 2 公尺以內
遠距離小號誌17未偵測到 11、尺寸過小不判讀 5、信心不足 1
燈色判讀11紅綠相反 4(皆為綠判為紅)、判為其他 3、信心不足 2、相鄰號誌防護 2
選錯號誌1—
車用號誌誤判為行人綠燈(各版本燈色分類模型,偵測模型 roi_v4)
燈色分類模型次數
v4(目前上板)7
v112
v12(無車用號誌負樣本)12
v12_hf(上板候選)0

評估限制:偵測模型的訓練資料涵蓋部分測試影像,因此另列其未曾學習的 32 張影像作為參考;由於樣本數較少,信賴區間較寬。實際路口的實地測試尚未完成。

開發現況:開發板目前執行較早期的組合(偵測模型 roi_v4+燈色分類模型 v4);候選組合仍需完成模型轉換與實機驗證。

使用提醒:本裝置為研究原型,不能取代白手杖、導盲犬或他人協助。穿越道路時,請以自身判斷與周遭環境為準。

配戴式外殼

3D 列印外殼,外型尺寸 90 × 64 × 22.4 mm,以 GoPro 標準接座固定於胸前背帶。設計以「無須視覺即可操作」為前提。

外殼爆炸圖:橘色上蓋含 GoPro 兩爪接座,下方依序為綠色電路板、銅柱與藍色底座,四角以螺絲固定。
上蓋、電路板與底座以銅柱及螺絲固定;散熱片上方全面開窗。
外殼上緣特寫:紅色 KEY 按鍵推桿凸出外殼,左右兩側各有一條凸起的護肋。
按鍵兩側設有觸覺護肋,便於觸摸定位,並降低衣物誤觸的機會。
外殼上緣的點字特寫:三格點字,讀作 e、y、e。
上緣點字 ⠑⠽⠑(eye),閱讀方向以配戴者為準。

使用方式

以下為原型目前的操作方式。仍在開發中的部分,已在各步驟中註明。

  1. 配戴裝置

    以 GoPro 胸前背帶固定外殼,鏡頭朝向前方;可旋轉 M5 手轉螺絲調整鏡頭的俯仰角度。

  2. 連接電源與耳機

    以 Type-C 連接行動電源,語音由 3.5 mm 耳機孔輸出。建議使用不封閉耳道的耳機(例如骨傳導耳機),以保留對車聲等環境聲音的感知。

  3. 啟動閱讀模式

    閱讀模式啟動後,裝置播放「系統啟動」。

    開發中目前開機預設進入資料收集用的拍照模式,閱讀模式須由電腦啟動;正式版將改為開機直接進入閱讀模式。

  4. 面向路口

    站在路緣後方,面向欲穿越的行人穿越道。聽到「未偵測到號誌,請慢慢左右轉動」時,請原地緩慢轉身,不要橫向移動;聽到「找到號誌」後保持方向。

  5. 依提示判斷

    聽到「綠燈,可以通行」後,仍應以聽覺與手杖確認周遭車流再穿越。聽到「綠燈快結束」或「號誌無法確認」時,請勿開始穿越。

開源與資料

本專題建立在多項開源專案與公開資料之上,所有來源皆依原授權使用並標註出處。完整的資料來源、工具清單與授權,整理於獨立頁面。

訓練資料來源
8其中 3 項採 MIT 授權
使用的工具與服務
24其中 6 項採 MIT 授權
需留意的授權
AGPL-3.0Ultralytics YOLO:公開發布模型或商用前須遵循其條款

MIT授權項目

資料集
ImVisible PTL、Traffic Lights of New York、nsw_traffic_lights
工具
OpenCLIP、ONNX Runtime、trimesh、PyVista、html-validate、fonttools

查看完整的資料來源與授權