10-4 頭 / 臉 / 身體偵測功能範例教學
在 10-3 人形偵測功能範例教學中,我們成功地將「人形偵測」模型導入專案。本章節我們將不大幅度改寫程式碼,僅透過替換模型檔案,就能讓您的軟體瞬間進化,具備同時辨識「人臉、頭部、男性身體、女性身體」四種不同特徵的超能力!
學習目標
透過本章節,您將學會:
1. 體會 QDEEP AI 引擎高度「 模組化 」的優勢。
2. 掌握如何透過修改單一 API 參數來無縫切換 AI 模型。
3. 擴充多類別標籤 ( Class Names ) 與專屬色彩 ( Colors ) 陣列,實現豐富的多目標視覺化標記。
準備工作
要讓 AI 擁有新的辨識能力,我們必須幫它「換一顆新的大腦」。
1. 請找到聰泰提供的 Face/Head/Body 偵測模型壓縮檔(檔名可能標示為 FACE.HEAD.BODY 相關字樣)。
2. 解壓縮後,將 QDEEP.OD.FACE.HEAD.BODY.CFG ( 設定檔 ) 與 QDEEP.OD.FACE.HEAD.BODY.WEIGHTS ( 權重檔 ) 複製出來。
3. 將這兩個檔案,直接貼上到您目前 Qt 專案的 建置輸出目錄 下(與執行檔同層)。

核心 API 要怎麼改?
回顧上一章,我們使用了五支核心 API 來控制物件偵測引擎。好消息是,在這次的升級中,您只需要修改 QDEEP_CREATE_OBJECT_DETECT 這支 API 的參數!
QDEEP_CREATE_OBJECT_DETECT
這是建立 AI 引擎並載入大腦(模型)的最關鍵 API。使用者必須透過此 API 初始化偵測器。
QDEEP_OBJECT_DETECT_BOUNDING_BOX Struct
雖然 API 沒變,但因為我們換了一顆能辨識更多特徵的 AI 大腦,它回傳給我們的數據也變得更豐富了!
請回想上一章介紹的 QDEEP_OBJECT_DETECT_BOUNDING_BOX 結構體。當我們餵入影像後,AI 會透過這個結構體回傳物件的 nClassID ( 類別索引 )。 在原本的人形模型中, nClassID 永遠只會回傳 0 ( 代表 Person )。但在這個全新的模型中,nClassID 將會精準地定義出四種不同的物件類型:


其餘的 START、 STOP、餵入 NV12 影像 (SET_BUFFER) 以及 DESTROY 的 API 邏輯,完全不需要任何更動!這就是 SDK 統一介面設計的強大之處。
撰寫核心程式碼
請開啟我們在 10-3 完成的專案,跟著以下兩個簡單的步驟進行修改:
修改模型載入名稱

擴充類別名稱與色彩陣列

最終驗證
就這麼簡單!我們只改了不到 10 行程式碼,就完成了龐大 AI 系統的升級。
現在,請按下左下角的 「Build and RUN」 執行專案:
1. 輸入攝影機 RTSP 網址,點擊 START RECEIVER 取得畫面。
2. 點擊 START DETECTION 啟動多物件 AI 分析。

➤ 測試結果: 當人物進入畫面時,您將會看到非常震撼的視覺效果:
• AI 會精準地在人的臉部畫上 綠色框 ( Face )。
• 在整個頭部區域畫上 青色框 ( Head )。
• 並同時判斷身體特徵,畫上 藍色框 ( Male Body ) 或 黃色框 ( Female Body )!
➤ 溫馨小叮嚀 ( 非常重要 ) : 在您第一次開啟這支軟體 ( 執行程式 ) 的瞬間,介面可能會需要稍等一下才會顯示出來,請不要緊張!這是因為我們將「 載入 AI 模型 」的邏輯寫在了程式的建構子內。模型在首次執行時必須進行初始化配置,此時系統正努力將龐大的神經網路權重檔載入到 GPU 中。只要軟體成功開啟( 首次載入完成 ),代表 AI 大腦已經在背景準備就緒!後續當您再次開啟軟體時,就不需要這個初始化的等待時間了!
透過這兩章的實戰,您已經徹底掌握了 NexVDO SDK 中 QDEEP 引擎的「物件偵測 ( Object Detection )」開發精髓。未來無論是哪種物件辨識的功能,您都知道該怎麼做了——只要換個模型、改個陣列,一切搞定!