我不是工程師,這篇也不是從影像工程或演算法實作的角度出發,而是從過往幾次相關產品經驗中,整理影像輸入、畫面呈現與裝置狀態如何影響用戶看到的結果,以及產品經理在跨團隊合作時,可以先看見哪些問題。文中提到的 ISP、影像處理、記憶體與畫面更新等內容,只作為產品判斷的背景,不是底層技術教學。
以 Camera-based AIoT 產品來說,有些 AI 功能最讓人困擾的,不是它完全不能用,而是它有時候看起來用得很好。畫面能正常出現,系統也能完成辨識,疊在畫面上的提示大致跟得上,分析結果看起來也頗為合理。可是用戶只要稍微換個位置、轉個角度,或很自然地動了一下,原本穩定的結果就可能開始偏移。
有些問題甚至不會立刻發生。功能剛開始使用時很順,操作幾次之後才慢慢變卡;原本貼合的圖形開始跟不上,畫面偶爾閃動,最後讓人懷疑眼前的結果到底可不可信。
站在用戶的角度,這些差異通常都是同一種感覺:「AI 好像不太準。」但對 Camera-based AIoT 產品來說,例如手機影像辨識、智慧門鈴、智慧健身設備與部分穿戴裝置,這句話其實混合了許多不同問題。模型可能沒有判斷錯,問題也可能發生在鏡頭取像、影像處理、畫面更新,甚至裝置使用一段時間後的資源狀態。
因為在這類產品裡,模型拿到的是一份經過鏡頭、環境、用戶操作與軟體處理後的資料。因此,當 AI 結果不穩時,我通常不會只看模型。
影像從哪裡來、中間經過哪些處理、畫面上的提示能不能跟上用戶的動作,以及裝置的運算與記憶體資源是否已經開始影響功能反應,這幾個環節需要一起看。
用戶看到的畫面,不一定就是 AI 分析的畫面
輸入品質、鏡頭預覽畫面(Camera Preview)・影像裁切與縮放
對用戶來說,Camera-based AI 功能的過程很簡單:對準鏡頭、等待幾秒,然後查看結果。
但在結果出現以前,系統其實已經處理了好幾個環節。鏡頭取得影像後,系統會先對畫面做基本整理,再依照功能需求調整尺寸、裁切分析範圍。完成辨識後,系統還要把找到的位置轉換到介面上,最後才成為用戶看到的結果。
這中間只要有一個環節沒有處理好,最後都可能看起來像是 AI 判斷錯誤。例如,用戶在預覽畫面裡明明完整落在指定範圍內,實際送進模型的影像卻使用了不同的裁切方式;模型也可能已經找到正確位置,但結果回到介面時,因為畫面尺寸或位置轉換而產生偏移。
當產品同時處理多路影像,例如不同鏡頭取得的畫面時,這種落差還會更明顯。不同影像來源可能具有不同的視角、畫面大小與取得時間,系統不只要取得這些影像,還要確保後續分析與顯示仍然對應到同一個目標。
所以,畫面能出現,不代表整條功能都正常;AI 有完成辨識,也不代表用戶最後看到的結果一定正確。不過,即使軟體中的影像處理都已經對好,真實使用情境仍然會繼續改變系統收到的內容。
鏡頭拍到之後,畫面可能還會先被整理一次
影像訊號處理(ISP)・影像品質
鏡頭拍到的畫面,在交給 AI (這裡指的 AI 可能是影像辨識模型或電腦視覺演算法) 之前,通常系統還會先經過一層影像訊號處理(ISP):自動調整亮度、顏色與畫面清晰度,讓影像變得比較穩定,也比較適合後續顯示與分析等。
例如,在較暗的環境裡,系統可能自動把畫面變亮,或減少畫面中的雜訊。用戶看起來可能覺得更清楚,但一些細小的紋理與邊界,也可能在處理過程中變得不明顯。亮度與顏色若持續自動調整,同一個人或物件在前後幾秒的畫面裡,也可能看起來不太一樣。
這樣即使鏡頭與辨識模型沒有改變,經過 ISP 處理後續視覺辨識實際收到的影像仍可能不同。用戶看到的預覽畫面看起來正常,也不一定代表辨識所依賴的細節沒有發生變化。
話說,雖然在鏡頭類產品規劃上,我不需要自己調整 ISP 的設定,但需要知道這一層會影響 AI 的輸入。當功能依賴顏色、輪廓、紋理或其他細節時,就需要先整理產品會遇到的光線與使用情境,再和 Camera、影像及演算法團隊確認,目前的畫面處理是否仍保留了辨識真正需要的資訊。
因此,當辨識結果開始不穩時,除了確認環境與拍攝條件,也要往模型以前再看一步:鏡頭拍到畫面後,系統是否在整理影像的過程中改變了重要內容?
不過,即使系統對影像的處理方式沒有改變,真實環境與用戶動作仍然會持續改變鏡頭取得的內容。
真實使用情境不會一直維持在完美條件裡
光線條件、使用距離、用戶視線
即使影像在軟體裡的處理沒有問題,真實環境仍然可能持續改變系統收到的內容。例如,用戶從房間走到窗邊,或把裝置稍微轉向另一個方向。眼前仍然是同一張臉、同一個物件,操作方式也沒有改變。
但對依賴鏡頭辨識的產品來說,使用環境本身就是輸入條件。不同方向的光線、局部反射或較暗的空間,都可能改變系統取得的畫面。這些差異未必明顯到讓用戶感覺出來,但卻可能已經足以影響後續分析。
除了環境會變,用戶在操作過程中也不會一直維持相同的位置與角度。他可能一邊閱讀介面提示,一邊調整身體;也可能以為自己已經對準,實際上卻在系統準備取得畫面時,自然地往前靠近或轉了一下頭。對用戶來說,這些都是很普通的動作,但對鏡頭來說,前一刻取得的畫面可能已經和當下不同。
當產品同時具有螢幕與鏡頭時,用戶的視線還會進一步影響他的姿勢。用戶通常會自然看向介面內容,而不是先確認鏡頭的位置。以智慧健身設備為例,用戶為了看清楚動作示範,可能一邊看著螢幕、一邊調整身體,最後逐漸離開適合辨識的角度或範圍。因此,這類產品需要一起考慮環境變化、用戶的自然動作,以及介面是否會把用戶的注意力帶離鏡頭真正需要的位置。
對 Camera-based AI 來說,環境、距離、姿勢與移動不是功能之外的條件,而是整個輸入的一部分。
AI 已經找到目標,畫面仍可能沒有跟上
特徵點(Landmark)、畫面更新速度
前一個問題是系統分析的影像,和用戶看到的畫面有沒有對到;當用戶持續移動後,還需要確認另一件事:辨識結果與介面呈現,是否仍然對應到同一個當下。
即使 AI 已經找到目標,畫面更新仍可能慢於用戶的動作。用戶已經往旁邊移動,畫面上的線框卻還停在原來的位置;主體已經離開畫面,部分標記仍然沒有消失;原本應該貼合在身體或物件表面的圖形,也可能在角度改變後逐漸偏移。
以智慧健身與動作辨識設備為例,用戶可能正在跟著螢幕完成深蹲或伸展動作。當他已經起身,畫面上的骨架線或關節提示卻還停留在下蹲姿勢,系統給出的動作回饋就會和用戶當下的狀態對不上。用戶轉向側面後,如果提示仍停留在原本的正面位置,也會讓整個辨識結果看起來不自然。
這類落差不一定代表 AI 沒有辨識到用戶,而可能是鏡頭取得畫面、動作判斷、圖形運算與介面更新之間沒有維持一致。但用戶不會知道是哪一個環節慢了一步,只會感覺系統沒有正確理解自己的動作。
在即時互動裡,這一點點時間差就足以讓結果失去可信度。尤其當產品需要把骨架線、關節位置或其他視覺提示即時疊回用戶身體時,任何更新落差都會變得特別明顯。
而且,這種「畫面跟不上」不一定從第一次操作就會出現。有些問題是在功能反覆使用一段時間後,才隨著裝置的運作狀態逐漸浮現。
有些不穩定,是使用一段時間後才出現
鏡頭影像暫存、記憶體釋放
有些延遲從第一次操作就能看出來,也有些問題是在功能反覆使用後才慢慢浮現。功能剛開始可能很順,畫面更新也沒有明顯異常;但連續操作幾次後,反應開始變慢,多次進出功能後,鏡頭重新開啟的時間也逐漸變長。原本只有輕微延遲,最後可能變成明顯卡頓,甚至偶爾無法回到正常狀態。
這時候,模型本身可能沒有任何改變,真正累積的是裝置在影像處理過程中使用的資源。
鏡頭取得的影像、介面上的圖形,以及串接的第三方工具,在執行時都會占用記憶體。如果鏡頭影像暫存、圖像資料或其他中間資源沒有在功能結束後正常釋放,這些占用就可能隨著使用次數持續增加,讓後續處理逐漸變慢。
這類現象很容易被誤認為網路不穩、模型變慢,或裝置偶爾表現不好。但如果問題總是在多次操作或長時間使用後出現,就需要進一步確認影像、圖形與視覺工具使用的資源,是否真的隨著功能結束而被釋放。
對用戶來說,他不會知道背後是哪一塊資源沒有被回收,只會發現同一個功能好像越用越卡,最後連原本可信的結果也開始讓人懷疑。因此,這類功能不能只驗證第一次是否成功,也需要觀察反覆進出、切換功能或連續使用一段時間後,畫面與辨識是否仍能維持原本的反應。
因為用戶不會只操作一次。一個功能能短暫跑起來,和它能在反覆使用後仍然維持穩定,是兩個不同的標準。
在討論模型以前,先確認問題從哪裡開始
回頭看前面的情況,很多問題並不是 AI 完全沒有能力,而是系統取得的資料不夠穩定,或分析結果沒有在正確的時間回到用戶眼前。環境、距離、用戶動作、影像處理、畫面更新與裝置資源,看起來分散在不同層,最後卻共同影響同一件事:用戶是否相信眼前的結果。所以當產品收到「AI 不準」這類回饋時,我不會立刻把問題歸到模型,而會先確認不穩定究竟從哪一段開始。
系統實際分析的是哪一份影像?用戶移動後,資料與畫面有沒有一起更新?功能反覆使用後,裝置狀態是否開始影響反應?這些問題不是為了把流程變得更複雜,而是把一句模糊的「AI 不準」,拆成可以進一步設計、開發與驗證的問題。
當問題發生的位置被說清楚,才能進一步判斷介面應該提供什麼引導、開發需要檢查哪一段,以及修改後應該如何驗證,而後是否真的改善了使用體驗。
所以當 AI 輸出的結果時好時壞時,我不會先急著問模型夠不夠強,而會先回到一個更前面的問題:
系統真的取得了足以判斷的資料嗎?