iT邦幫忙

2026 iThome 鐵人賽

DAY 12
0
AI Engineering

30 天打造 Edge AI Product:一個 PM 從 0 到 1 的 AI Engineering 實戰系列 第 12 篇

Confidence 不是一個數字,而是一個 Product Decision

  • 分享至 

  • xImage
  •  

Pre-trained Model 跑起來了,Threshold 到底要怎麼定?

前幾天,我們終於把 Pre-trained Model 放進 QCS6490。

經過 Model Format、Input / Output、Pre-processing、Quantization、QNN、HTP 等一連串調整後,Model 終於可以正常跑在 Edge Device 上。

Camera 進來,AI 開始偵測。

畫面上出現:

Person
Confidence: 0.82

看到這裡,很容易覺得:

完成了。

但以我是 AI PM,我會馬上問一個問題:

0.82 是什麼意思?

那如果今天是:

Person
Confidence: 0.62

算不算?

0.48 呢?

0.31 呢?

這時候我們就遇到一個看起來很小,但其實很重要的問題:

Confidence Threshold 到底應該設多少?


不是 Model 給 0.5,我們就設 0.5

一開始很多人很容易有這種直覺:

Confidence > 0.5
→ Accept

Confidence < 0.5
→ Reject

看起來很合理。

但問題是:

為什麼是 0.5?

0.5 是 Model 的標準答案嗎?

不是。

0.7 一定比 0.5 好嗎?

也不是。

0.9 一定最準嗎?

更不一定。

真正的問題應該是:

這個 Model 在我們的實際場域裡,Confidence 分布是什麼樣子?


Pre-trained Model 最大的問題:它不是為我們的環境訓練的

這也是為什麼我覺得 Pre-trained Model 很方便,但不能「下載完就相信」。

我們現在的做法是:

使用 Pre-trained Model → 部署到 QCS6490 → 接實際 Camera → 做 Unmanned Area Detection。

但是 Model 原本看到的資料,跟我們現場可能完全不同。

例如:

  • 白天 / 夜晚
  • 室內 / 室外
  • 背光
  • 遠距離
  • 人被設備遮住
  • Camera 高度不同
  • Camera 角度不同
  • 解析度不同
  • 工廠環境
  • 人穿著不同

同樣是一個 Person,Model 可能得到:

正常光線        0.93
稍微背光        0.81
遠距離          0.68
部分遮擋        0.57
非常模糊        0.41

所以真正值得問的不是:

「這個 Model 的 Threshold 是多少?」

而是:

「這個 Model 在我們的真實環境裡,Threshold 應該是多少?」


那就拿 Data 來測

所以我們開始改變思考方式。

不是 PM 直接指定:

Confidence Threshold = 0.5

而是:

Real-world Data
       ↓
Pre-trained Model
       ↓
Inference
       ↓
Confidence
       ↓
Threshold Evaluation
       ↓
False Positive / False Negative
       ↓
Product Decision

這才是比較完整的流程。


Step 1:先收集真正的場域 Data

假設我們拿一批實際工廠 Camera 的影像。

裡面有:

  • 真正的 Person
  • 沒有人的畫面
  • 設備
  • 影子
  • 雜物
  • 遠距離的人
  • 被遮擋的人

然後讓 Pre-trained Model 全部跑一次。

這時候我們開始看到 Confidence 的分布。

例如真正的 Person:

0.95
0.91
0.88
0.84
0.79
0.73
0.68
0.61
0.55

而錯誤偵測可能是:

0.72
0.64
0.58
0.49
0.37

這時候問題就變得有趣了。


Threshold = 0.5 會發生什麼?

假設:

Threshold = 0.5

那麼:

0.91 → Accept
0.84 → Accept
0.73 → Accept
0.61 → Accept
0.55 → Accept

但另一邊:

0.72 → False Positive
0.64 → False Positive
0.58 → False Positive

代表雖然我們抓到了很多 Person,

但也可能一直誤報。


那 Threshold = 0.7 呢?

我們再試一次:

Threshold = 0.7

可能變成:

真正 Person

0.95 → Accept
0.91 → Accept
0.88 → Accept
0.84 → Accept
0.79 → Accept
0.73 → Accept
0.68 → Reject
0.61 → Reject

False Positive 可能降低。

但同時也可能漏掉一些真正的人。

這就是典型的:

False Positive vs. False Negative Trade-off。


所以 Threshold 沒有所謂「標準答案」

這也是我覺得 AI Product 跟單純 Model Demo 很不一樣的地方。

如果只是 Demo:

「看!AI 可以抓到人。」

就結束了。

但如果是 Product,就會開始問:

「漏掉一個人會怎樣?」

「誤報一次會怎樣?」

「客戶一天收到幾次 Alert 才不會覺得煩?」

「如果是工廠安全場景,False Negative 能接受多少?」

這些問題已經不是單純的 AI Model 問題。

而是 Product Decision。


Accuracy 最高,不一定就是最好的 Product

假設今天有兩個 Threshold:

Threshold A
Accuracy:95%

Threshold B
Accuracy:93%

看起來 A 比較好。

但如果:

  • A 漏掉 10 個真正的入侵事件
  • B 多產生 20 次誤報

那到底哪一個比較適合?

不能只看 Accuracy。

因為不同 Use Case,錯誤的成本不一樣。


Unmanned Area 就是一個很好的例子

我們的情境是:

偵測非工作時間的人員入侵。

那麼:

False Positive
→ 多通知一次
→ 多看一次 Camera

跟:

False Negative
→ 根本沒有發現有人進入

這兩個錯誤的 Business Impact 並不一定相同。

因此 Threshold 的選擇,最後應該回到:

Customer Scenario + Real-world Data + Business Risk

而不是單純:

Model 建議 0.5,所以我們用 0.5。


更進一步:Confidence 其實只是第一層

這時候我們又發現一件事情。

即使:

Person
Confidence = 0.82

我們也不能直接說:

Intrusion!

因為 AI 只告訴我們:

「我看到一個 Person。」

但是產品真正想知道的是:

「這個 Person 有沒有進入禁止區域?」

所以後面還需要:

Person Detection
       ↓
Confidence Check
       ↓
Geofence Check
       ↓
Tracking / Frame Validation
       ↓
Business Rule
       ↓
Event

這也是為什麼我開始覺得:

Confidence 不應該直接等於 Event。


從 AI Model 走向 AI Product

到了這裡,我們的架構開始慢慢變成:

Camera
   ↓
AI Model
   ↓
Detection
   ↓
Confidence
   ↓
Rule
   ↓
Event
   ↓
Action

例如:

Camera
  ↓
Person Detection
  ↓
Confidence > Threshold
  ↓
Person inside Geofence
  ↓
Intrusion Event
  ↓
Alert + Recording

這時候 AI 才真正開始有「產品行為」。


AI PM 在這裡真正要決定的是什麼?

我不需要自己訓練 YOLO。

也不需要自己寫 QNN。

但我需要跟 Engineer 一起把問題定義清楚:

1. Data

我們要用什麼資料驗證?

  • 真實 Camera?
  • 白天?
  • 夜間?
  • 不同角度?
  • 不同距離?

2. Threshold

要測哪些 Threshold?

例如:

0.3
0.4
0.5
0.6
0.7
0.8

3. KPI

不能只看 FPS。

還要看:

  • False Positive
  • False Negative
  • Precision
  • Recall
  • Detection Stability
  • Event Accuracy

4. Business Risk

最後再問:

這個 Use Case 最不能接受的是什麼?

是誤報太多?

還是漏掉真正的事件?


這其實也改變了我對 Pre-trained Model 的看法

以前很容易把 Pre-trained Model 想成:

「別人已經訓練好了,我拿來用就好。」

但真正放到產品裡之後才發現:

Pre-trained Model
        ↓
Model Deployment
        ↓
Real-world Data
        ↓
Validation
        ↓
Threshold Tuning
        ↓
Rule
        ↓
Event
        ↓
Product

所以 Pre-trained Model 幫我們省掉的是:

從零開始訓練 Model 的成本。

但它沒有幫我們解決:

這個 Model 在我們的實際產品場景裡,到底夠不夠好?

這件事情還是要靠 Data 驗證。


最後,我把這件事情濃縮成一句話

Confidence 是 Model 的輸出,但 Threshold 是 Product 的 Decision。

而這個 Decision,不應該憑感覺。

應該來自:

Real-world Data → Model Performance → False Positive / False Negative → Business Risk → Product Decision

這也是我做 Edge AI 之後越來越深的感受:

AI Product 最難的地方,往往不是讓 Model 跑起來,而是知道什麼時候可以相信它。



上一篇
Pre-trained Model 下載下來,就可以直接跑 QCS6490 嗎?
下一篇
Detection → Rule → Event:AI 怎麼真正變成產品?
系列文
30 天打造 Edge AI Product:一個 PM 從 0 到 1 的 AI Engineering 實戰 共 16 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言