[應用] 預訓練模型庫 PaddleHub 快速實現 AI

        什麼叫「預訓練模型」?現在的科技巨擘本身擁有海量的數據以及大型算力系統,他們事先透過這些大量的數據集訓練神經網路模型,這樣所獲得的模型結果可稱為預訓練,不過生成的模型算是一種通用的模型。比如一個分類的模型,大量被標註的數據集輸入到網路模型經過訓練後,這樣的預訓練模型或許能做到分類工作,但不見得能做得特別精準。所以說它只是一種通用模型,如果想要讓它分類更精準,那就得用自己的數據集再做 fine tune 進行模型參數的微調。
        在百度的 PaddleHub 平台上 https://github.com/PaddlePaddle/PaddleHub 提供不少預訓練的模型庫,底下圖一列出了部分網路模型。百度本身擁有不少數據集,適合拿來預先訓練各類網路模型,像是人體關鍵點檢測用到 ResNet50 的模型,目標檢測用到 YOLOv3 模型做訓練,我們身為初學者可以直接拿這些模型庫來做測試,基本上都有不錯程度的效果。不過,如果要針對某特定領域做檢測,可能會覺得精準度還不足。
圖一:PaddleHub 提供的預訓練模型庫

        如何使用 PaddleHub?舉圖像分割為例,在 python 環境下,呼叫下面的粗體字函數。先載入模型名稱後,再調用分割的函數。

import paddlehub as hub module = hub.Module(name="deeplabv3p_xception65_humanseg") res = module.segmentation(paths = ["./test.jpg"], visualization=True, output_dir='humanseg_output')

底下是人臉辨識模組,
module = hub.Module(name="ultra_light_fast_generic_face_detector_1mb_640") res = module.face_detection(paths = ["./test.jpg"], visualization=True, output_dir='face_detection_output')

        最後講講 fine-tune,如果這些預訓練的模型庫在自己的環境檢測效果不佳的話,利用深度學習的遷移學習 (Transfer Learning) 技術將預訓練模型加入一些自己的數據資料再訓練,產生出符合自己環境的模型。

留言

此網誌的熱門文章

[筆記] Raspberry Pi 樹莓派的軟體開發

[應用] 在 ESP32 Audio 開發板的 VoIP 範例

[筆記] ESP32 在 VS Code 開發環境的編譯與除錯

[筆記] Visual Studio 遠端偵錯的設定步驟

[筆記] Android APP 藍芽範例說明 -- BluetoothChat

[模組] LD3320 離線語音辨識晶片與 ESP32 無線傳輸

[應用] 藍芽 BLE client/server 架構:BLE remote controller