← 返回報告
🤖 Claude AI 對話記錄
JSONL · 3 Sessions
🤖
019e667f-902a-44c4-8001-e22ae7e80c75
2026-04-27 — 紅綠燈偵測整合
新增 traffic_light_detection.py、時序平滑架構、UI 滑桿、單一燈號邏輯
來源 JSONL:019e667f-902a-44c4-8001-e22ae7e80c75.jsonl  ·  entrypoint: claude-vscode  ·  v2.1.120
14
對話輪次
5
檔案修改
claude-sonnet-4-6
模型
你 · 06:57
現在新增了偵測紅綠燈的PT訓練黨 幫我增加對應的程式碼 先做到偵測畫面中的物件 並標示出來
Claude · 06:57
讓我先了解目前的專案結構。 計畫: 1. 建立 traffic_light_detection.py — 載入 best.pt (YOLOv8) 並在畫面上標示偵測結果 2. 修改 app.py — 在影像串流中加入物件偵測疊加 依類別名稱自動配色(red=紅、yellow=黃、green=綠、其他=青色)
你新增的設定是 "遮罩重疊倍率" 是信心值門檻嗎 0~1 好像沒差別 偵測紅黃一直跳 0.4~0.6 是訓練資料不構還是可以代碼優化
Claude
兩個問題分析: 問題 1overlay_alpha 是車道偵測的「綠色遮罩透明度」,跟信心值門檻是兩件不同的事。 問題 2 — 紅黃一直跳 0.4~0.6 是模型本身對這兩個類別信心不穩定,原因通常是訓練資料不夠或兩類外觀太像。程式碼這邊可以做時序平滑(Temporal Smoothing)來穩定輸出:用最近 N 幀的結果投票,只有連續出現才顯示,避免單幀雜訊。
tl_conf(0~1)你沒做出滑桿 紅綠燈如果給他躺著跟立著 會影響判斷準確度?
Claude
關於躺著/立著的影響: 會影響,而且影響很大。YOLO 是靠 bounding box 特徵學習的,訓練資料幾乎都是立著的紅綠燈,躺著時外觀完全不同(燈號方向、長寬比、顏色排列都變了),模型等於看到沒見過的東西,信心值會很低或誤判。訓練資料裡要有躺著的樣本才能解決,程式碼端無法補救。 現在加 UI 滑桿,新增三個控制: 1. tl_conf 信心值門檻(0.1 ~ 1.0) 2. tl_smooth_win 平滑窗口(1 ~ 15 幀) 3. tl_smooth_hits 最小命中次數(1 ~ 15)
還是沒看到滑桿
Claude
HTML 結構是正確的。問題是 firstLoad 的 JS 裡有一行判斷導致面板在 tl_available=false 時被隱藏,但第一次 /status 回應還沒到。 修正:把 display:none 改成用 CSS class 控制,確保初始載入時面板是可見的。
一次只能有一種狀態 不能同時有兩個燈號 然後三種燈號的信心值分開
Claude
兩個問題同時修: 1. 同時只能一種燈號 — 推論結果中取信心值最高的那個,其餘丟棄 2. 三種燈號信心值分開顯示 — 畫面上分別顯示 red/yellow/green 各自的 conf 修改 traffic_light_detection.py:同一幀所有偵測框中只保留 conf 最高的那一個,杜絕同時出現兩種燈號。三種燈號各自有獨立的信心值門檻 CONF_RED / CONF_YELLOW / CONF_GREEN,預設都 fallback 到 CONF_THRESHOLD。
紅綠燈是方柱體 訓練資料目前都是正面 一面只有三個燈號 要訓練多面嗎 兩個面
Claude
結論:要訓練,但不需要專門標注「側面」 紅綠燈方柱體的四面外觀幾乎一樣(都是三個圓燈垂直排列),差異只有角度和透視變形。 最有效的做法是資料增強(Augmentation),不需要額外拍攝側面: • 水平翻轉 → 解決左右視角 • 透視變換(perspective) → 斜角拍攝變形 • 旋轉 ±15° → 輕微偏轉 • 亮度/對比隨機 → 不同光線條件 • 縮放 → 遠近距離
所以現在再去多拍增加圖量?
Claude
對,但要有策略地拍,不是數量多就好。 現在最值得補的場景(依優先順序): 1. 不同光線:強光/陰天/室內燈(模型最常在光線變化時失效) 2. 不同距離:遠/中/近(避免只認識某個大小的燈) 3. 燈號本身亮起的狀態(亮燈和不亮燈外觀差很多) 4. 輕微斜角(30~45度)(車子不會永遠正對燈) 5. 背景雜亂的場景(避免只認識乾淨背景) 不需要特別補的:超過 45 度的側面(車子行進方向不會看到)、躺著
現在鏡頭偏低 為了看紅綠燈要抬頭 為了抵銷會調小ROI 如果物件不再ROI範圍會怎樣 希望能正常辨識
Claude
ROI 只影響車道偵測,物件偵測完全不受 ROI 限制。 traffic_light_detection.py 裡的 detect_objects() 直接對整張 frame 做推論,完全沒有 ROI 裁切。ROI 只在 lane_detection.pydetect_lane() 裡用來遮罩白色車道線。 所以可以放心: • 縮小 ROI → 車道偵測範圍變小(只看地面)✓ • 紅綠燈在畫面上半部 → 物件偵測照常運作 ✓
🤖
7ffa6446-57f3-4756-9e2c-45160fbc8e79
2026-05-04 — 斷線排查 & 效能優化
SSH 斷線原因分析、YOLO 降頻、馬達 ramp-up、串流品質優化
來源 JSONL:7ffa6446-57f3-4756-9e2c-45160fbc8e79.jsonl  ·  entrypoint: claude-vscode  ·  v2.1.123
6
對話輪次
3
檔案修改
claude-sonnet-4-6
模型
2026-05-04 15:52
你 · 15:52
STATUS:偵測中 e=75px SPEED:0% 模式:手動 CPU:68% MEM:21% [gen_frames] 已串流 4100 幀 [capture_thread] 已擷取 4300 幀 收到指令: forward 🚗 前進 收到指令: stop 🛑 停止 收到指令: right 🚗 右轉 收到指令: stop 🛑 停止 收到指令: forward 🚗 前進 [inference_thread] MANUAL loop=600 收到指令: left 🚗 左轉 收到指令: stop 🛑 停止 [capture_thread] 已擷取 4500 幀 收到指令: forward 🚗 前進 client_loop: send disconnect: Connection reset 跑到這直接斷線了,分析原因?
Claude
從 log 的最後幾行可以清楚看出原因: 直接原因:SSH session 被 reset client_loop: send disconnect: Connection reset 是 SSH 斷線的訊息,不是 Flask/app 的錯誤。 斷線發生在一連串 forward/stop/right/left 操作序列之後。這個操作模式會讓馬達在短時間內頻繁啟停,每次馬達啟動都會產生瞬間電流衝擊。 可能原因:樹莓派電源供應在 CPU 高負載(YOLO 68%)+ 馬達瞬間啟動的情況下電壓不穩,觸發欠壓保護,導致重啟或 SSH 斷線。
May 04 15:46:58 pi systemd[1]: Startup finished in 1.599s (kernel) + 11.607s (userspace) = 13.207s. (附上 syslog)
Claude
這份 syslog 非常關鍵,答案很清楚: 結論:樹莓派在斷線前剛剛重開機 May 04 15:46:58 pi systemd[1]: Startup finished in 1.599s (kernel) + 11.607s (userspace) = 13.207s. 這行說明樹莓派在 15:46:58 完成開機,而你的 SSH 斷線發生在 15:47:04 前後。也就是說:樹莓派在你操作過程中自動重啟了,不是 SSH 逾時或網路問題。 syslog 裡沒有 OOM Killer、kernel panic 記錄,最可能是電源問題(欠壓重啟)。
已經是充電後才啟動 app 了,用 yolo 時會導致耗電更快嗎
Claude
是的,YOLO 會顯著增加耗電: 電流需求對比: • 閒置:~600mA • 高 CPU 負載:~1.2–1.5A • CPU 高負載 + 馬達同時啟動:2A+(瞬間可達 3A+) 你的情況是 YOLO 推論(高 CPU)+ 馬達頻繁啟停,兩者疊加很容易超過電源瞬間供電上限。即使電池已充滿,瞬間電流需求過高仍會造成電壓跌落,觸發欠壓重啟。
優化程式碼降低負擔 yolo 偵測的程式碼也優化一下
Claude
讀完所有相關檔案,開始優化。主要改動方向: traffic_light_detection.py: • 輸入縮小至 320×320(原 640×480)→ YOLO 運算量約減少 75% • 每 3 幀才推論一次,其餘幀沿用上次結果 → CPU 峰值頻率降低 2/3 • warm-up:載入模型後立即跑一次空推論 → 消除第一幀推論卡頓 • detect_objects 不再內部 frame.copy() → 省去一次記憶體複製 app.py: • JPEG 串流品質 95 → 70 → 降低編碼 CPU 用量 • inference 延遲調高,手動模式不做不必要的 frame copy motor_control.py: • 加馬達 ramp-up,避免瞬間啟動電流衝擊 → 降低欠壓重啟風險
🤖
c1ccc8ed-1ffc-45d8-a04c-507f3b508bcf
2026-05-11 — 參數調整
最小面積占比上限調整:前端滑桿 max 10%→50%,後端上限 0.5→1.0
來源 JSONL:c1ccc8ed-1ffc-45d8-a04c-507f3b508bcf.jsonl  ·  entrypoint: claude-vscode  ·  v2.1.138
2
對話輪次
2
檔案修改
claude-sonnet-4-6
模型
2026-05-11 06:23
你 · 06:23
最小面積占比的值上限再高點
Claude · 06:23
讓我先查看當前的代碼,了解最小面積占比的設定。 找到了。問題在兩個地方: • traffic_light_detection.py 的上限是 0.5(即 50%) • 前端 index.html 的滑桿 max 是 10(即 10%) 兩處都已修改: • 前端滑桿(index.html:343):max10 提高到 50(即最高 50%) • 後端上限(traffic_light_detection.py:219):min(0.5, ...) 改為 min(1.0, ...)(即最高 100%) 現在前端可以拖到 50%,後端也能接受最高 100% 的值。