文章

顯示從 8月, 2023 起發佈的文章

[應用] 預訓練模型庫 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=

[應用] OCR 光學字元辨識的開發 (以百度 Paddle Inference 推理模型為核心)

圖片
        OCR 圖形轉文字的識別技術也是架構在深度學習的理論之上,是人工智慧的應用之一。OCR 技術的辨識過程分成三部分:文本偵測 、 文本識別 、 文字分類,每一部分都用到神經網路模型來訓練。本文不打算講模型訓練的過程,而是介紹訓練後的網路模型如何部署到應用端,在 Windows 上的 OCR 軟體如何開發。就核心基礎來說,神經網路的模型是基於百度的 PaddleOCR 所訓練得來,它在 Github 上有開放原始碼,除了用百度內建的模型之外,也可以自建模型來訓練。訓練後的模型,百度提供一套推理模型部署的方法,根據其技術文件的步驟操作,我們可以在 Windows 環境下編譯出 OCR 的應用程式,不過文件操作內容多半還是以 Linux 環境為主。底下我把在 Windows 的編譯過程寫下來。 代碼函數庫下載         (1) OpenCV:到官網上面下載 Windows 版本,裡面包含程式碼和編譯後的函數庫。         (2) PaddleOCR 原始碼:到 Github 上面下載,至少 v2.5 版本以上的代碼。         (3) Paddle Inference 推理預測庫:這是模型的函數庫,可在百度官網下載  https://paddleinference.paddlepaddle.org.cn/user_guides/download_lib.html#windows ,裡面分CPU 和 GPU (CUDA) 的版本,本文是下載 CPU 版本進行編譯。         (4) 模型架構:OCR 需要下載三個模型架構,分別是偵測 、 辨識 、 和分類。在 Github 上面可以下載各種模型架構, https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_ch/models_list.md 。 將上述的資料準備好後,如下圖所示,依序放到資料夾裡。接著,我們用 Visual Studio 2019 來開始編譯 OCR 應用程式。 圖一:開發前需要準備的資料庫         編譯前,先確定 VS2019 有沒有安裝 CMake 元件,系統還要安裝 Git for Windows,沒有 Git 的話,在執行 CMake 過程會出錯。一切就緒後,上圖的目錄中\Pad