iT邦幫忙

2026 iThome 鐵人賽

DAY 13
0
AI Engineering

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

Detection → Rule → Event:AI 怎麼真正變成產品?

  • 分享至 

  • xImage
  •  

AI 看到了「人」,但什麼時候才叫「事件」?

Day 12 我們談到 Confidence。

我們發現,Pre-trained Model 跑起來之後,不能直接把 Model 的輸出當成產品結果。

例如:

Person
Confidence = 0.82

這只代表:

Model 認為畫面裡有一個 Person。

但客戶真正想知道的,通常不是:

「畫面裡有沒有一個人?」

而是:

「這個人有沒有做了我在意的事情?」

這兩個問題,中間其實還差了一整層。


1. Detection 只是第一步

我們現在的 Pipeline 是:

Camera
   ↓
AI Model
   ↓
Detection

例如 YOLO 偵測到:

Person
Confidence = 0.82
Bounding Box = (x, y, w, h)

到這裡,AI 已經完成它的工作。

但產品還沒有完成。

因為我們的 Use Case 是:

Unmanned Area Monitoring

客戶在意的是:

「有人進入禁止區域。」

所以我們還需要知道:

這個 Person 在哪裡?


2. 從 Detection 加上 Rule

假設 Camera 畫面上有一個我們定義好的區域:

┌──────────────────────────┐
│                          │
│       Camera View        │
│                          │
│     ┌──────────────┐     │
│     │ Restricted   │     │
│     │    Area      │     │
│     │              │     │
│     └──────────────┘     │
│                          │
└──────────────────────────┘

這個區域就是 Geofence / ROI。

當 AI 偵測到:

Person
Confidence = 0.82

我們再問:

Person 的位置有沒有進入 Geofence?

如果沒有:

Person Detected
      ↓
Outside Geofence
      ↓
Nothing happens

如果有:

Person Detected
      ↓
Inside Geofence
      ↓
Intrusion

這時候才真正開始有產品意義。


3. Detection 跟 Event 是完全不同的東西

這是我覺得 AI Product 很容易搞混的地方。

Detection

AI 告訴我們:

「我看到了什麼。」

例如:

  • Person
  • Car
  • Helmet
  • Forklift
  • Face

Rule

產品告訴我們:

「什麼情況值得注意。」

例如:

Person + Geofence
Person + Time
Person + Confidence
Helmet + Person
Vehicle + Restricted Area

Event

系統最後告訴我們:

「剛剛發生了一件什麼事。」

例如:

Intrusion
Safety Violation
After-hours Access
No Helmet

所以可以抽象成:

AI Model
    ↓
Detection
    ↓
Rule
    ↓
Event

4. 為什麼不直接把 Rule 寫在 Model 裡?

一開始做 PoC,很容易這樣想:

「我們現在只需要 Person + Geofence,那就直接寫死吧。」

其實這樣最快。

例如:

if person_detected
and person_inside_geofence:
    intrusion_event()

Demo 當然可以跑。

但如果今天換一個客戶呢?

他可能需要:

Person + Helmet → Safety Violation

另一個客戶可能需要:

Person + Restricted Area + 22:00 後 → After-hours Intrusion

甚至:

Forklift + Restricted Area → Vehicle Intrusion

這時候如果每一個 Use Case 都要修改程式:

Use Case A
→ 改 Code

Use Case B
→ 改 Code

Use Case C
→ 改 Code

最後我們會得到一個很難維護的 AI Application。


5. 所以我們開始把 Rule 抽象出來

我們希望 Model 跟 Business Rule 分開。

變成:

┌──────────────────┐
│    AI Model      │
│                  │
│ Person           │
│ Helmet           │
│ Pose             │
│ Vehicle          │
└────────┬─────────┘
         ↓
┌──────────────────┐
│    Detection     │
│                  │
│ Class            │
│ Confidence       │
│ Bounding Box     │
└────────┬─────────┘
         ↓
┌──────────────────┐
│      Rule        │
│                  │
│ Geofence         │
│ Time             │
│ Confidence       │
│ Object Condition │
└────────┬─────────┘
         ↓
┌──────────────────┐
│      Event       │
│                  │
│ Intrusion        │
│ Safety Violation │
│ No Helmet        │
└────────┬─────────┘
         ↓
┌──────────────────┐
│      Action      │
│                  │
│ Alert            │
│ Recording        │
│ Upload           │
│ Webhook          │
└──────────────────┘

這個架構對我們後面做 Product 非常重要。

因為:

Model 可以換,Rule 不一定要跟著重寫。


6. 這時候 Model Registry 就開始有意義了

假設今天我們原本使用:

Person Detection Model v1

後來我們換成:

Person Detection Model v2

甚至未來換成另一個 Model。

只要輸出的 Detection Interface 一致:

Class
Confidence
Bounding Box
Timestamp

後面的 Rule 可以繼續使用:

Person
   ↓
Confidence
   ↓
Geofence
   ↓
Intrusion

這就是 Model Abstraction 的價值。

也讓我們前面 Day 11 講的:

「Pre-trained Model 不是下載下來就可以用」

開始跟 Product Architecture 串起來。


7. 但實際上還有一個問題:一幀不是一個 Event

這是工程上很容易踩到的坑。

假設 Camera 是 30 FPS。

一個人站在禁區裡 10 秒。

AI 可能會偵測:

Frame 1  → Person
Frame 2  → Person
Frame 3  → Person
Frame 4  → Person
...
Frame 300 → Person

如果每一次 Detection 都變成 Event:

我們會得到 300 個 Intrusion Events。

這顯然不是我們要的。

我們真正想要的是:

Person enters area
        ↓
ONE Intrusion Event
        ↓
Person remains inside
        ↓
No new event
        ↓
Person leaves
        ↓
Event ends

所以我們開始需要 Event Lifecycle。


8. Event 其實有開始、持續、結束

例如:

10:31:02
Person enters Geofence
        ↓
Intrusion START

10:31:03
Person still inside
        ↓
Intrusion ACTIVE

10:31:08
Person leaves
        ↓
Intrusion END

這時候 Event 就不只是:

event = true

而是:

Event
├── Event ID
├── Type
├── Start Time
├── End Time
├── Device
├── Camera
├── Model
├── Confidence
├── Location
└── Evidence

這些資料最後就可以進入:

Event History。


9. AI Product 開始出現「資料」

到這裡,我們突然發現:

AI Detection 本身只是瞬間發生的事情。

但是 Event 是可以被保存、搜尋、分析的。

例如:

Event History

09/26 22:31
Camera 01
Intrusion
Confidence 0.87

09/26 23:02
Camera 03
Intrusion
Confidence 0.79

09/27 00:15
Camera 01
Intrusion
Confidence 0.91

這時候 AI 已經不只是:

「畫面上畫一個框。」

而開始變成:

「一個可以被管理的 Business Event。」

這就是 AI Application 跟 AI Demo 的差別之一。


10. PM 在這裡真正要定義的是什麼?

這時候 PM 要開始問的問題,已經不是:

「YOLO 可以不可以跑?」

而是:

What

什麼是 Detection?

When

什麼情況產生 Event?

How long

要持續多久才算 Event?

Where

哪個區域算違規?

Who

哪個 Object / Class?

What happens next

Event 發生之後要做什麼?

所以最後 PRD 可能變成:

當 Camera 偵測到 Person,且 Confidence 高於設定 Threshold,並判斷 Person 進入指定 Geofence 時,系統產生 Intrusion Event。Event 應包含 Device、Camera、Timestamp、Confidence、Bounding Box 等資訊,並可進一步觸發 Alert 或 Recording。

這就比:

「支援 Person Detection」

完整非常多。


11. 到這裡,我才開始覺得我們真的在做 Product

回頭看我們前面做的事情:

Day 1
Customer Problem
        ↓
Day 3
Use Case
        ↓
Day 5
AI PRD
        ↓
Day 6–10
AI Engineering
        ↓
Day 11
Pre-trained Model Deployment
        ↓
Day 12
Real-world Data / Confidence
        ↓
Day 13
Detection → Rule → Event

這時候整條線開始接起來了。

我們不是為了:

「讓 AI 偵測到人。」

而是:

「讓 AI 偵測結果,變成客戶真正可以使用的事件。」


最後,我想把這一天濃縮成一句話

AI Model 負責「看見」,Rule 負責「判斷」,Event 負責「定義發生了什麼」,Action 負責「接下來做什麼」。

所以真正的 Edge AI Product,不是:

Camera
 ↓
AI Model
 ↓
Bounding Box

而是:

Camera
 ↓
AI Model
 ↓
Detection
 ↓
Rule
 ↓
Event
 ↓
Action
 ↓
Business Value

當 AI 開始產生 Event 的那一刻,我們才真正從「AI Model」跨進了「AI Product」。


上一篇
Confidence 不是一個數字,而是一個 Product Decision
下一篇
為什麼 Geofence 比單純 Person Detection 更有產品價值?
系列文
30 天打造 Edge AI Product:一個 PM 從 0 到 1 的 AI Engineering 實戰 共 16 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言