iT邦幫忙

2023 iThome 鐵人賽

DAY 27
1
AI & Data

用Python程式進行股票技術分析系列 第 27

Day27 簡述物件偵測技術

  • 分享至 

  • xImage
  •  

物件偵測(Object Detection)是影像辨識中重要的一環。是指在影像中,利用方形的框標出物件的位置,並針對該物件進行分類,能快速且有效的達到分類及位置判斷的目的。下圖是物件偵測的案例,在圖中把偵測到的物件(狗、腳踏車與汽車)分別用方框進行標記:
Imgur
物件偵測有很多種演算法,傳統上方式有HOG(Histogram of Oriented Gradient);在深度學習領域則有R-CNN(Region-based Convolutional Neural Networks)、SSD(Single Shot MultiBox Detector)與YOLO(You Only Look Once)等。在此不會深入探討各種演算法的內容,而是應用這項技術來進行型態識別。接下來都會使用TensorFlow Object Detection API來建構與訓練物件偵測深度學習模型。

程式實作:建置物件偵測模型

今天主要在說明如何建置物件偵測模型,因此會使用使用公開資料集「Fruit Images for Object Detection」來建置一個模型以做為演示。關於技術型態辨識的物件偵測模型建置則會於明後兩日說明;明天(Day28)會先建立底部型態的實驗資料集,後天(Day29)則是使用實驗資料集進行模型的建置與訓練。
以下參照「TensorFlow 2 Object Detection API With Google Colab」文章的描述在 Google Colab環境中使用GPU進行模型之建構與訓練,用以說明物件偵測模型訓練所需的所有步驟。該文章將已將所有步驟以條列方式說明;並且很多步驟都已寫在Jupyter Notebook內,因此只要按步執行即可。但很不幸的是這篇文章寫於2020年,至今Colab與TensorFlow已有不少的改動;為此我對於原本Jupyter Notebook進行修改以符合現今環境,詳細請參照「第二十七天:簡述物件偵測技術.ipynb」。接下來我會概略的說明每個步驟,細節部份還請參照原文:

  • 第1步(Step 1) - 先決條件(收集/標記圖像、創建 label_map...等)
    • 在此就直接使用公開資料集「Fruit Images for Object Detection」並創建label_map.pbtxt
    • 下載預訓練模型SSD Resnet50 V1 FPN 640X640)以進行遷移學習
    • 下載generate_tfrecords.py腳本將資料集轉換為TFRecord格式
  • 第2步(Step 2) - 在 Google雲端硬碟上設置目錄結構:就請參照原文建立目錄,並把下載的資料集、模型與檔案放在指定位置。結果如下所示:
TensorFlow
├───scripts
│   └───preprocessing
│     └───generate_tfrecord.py 
└───workspace
    └───training_demo
        ├───annotations
        │   └───label_map.pbtxt 
        ├───exported-models
        ├───images
        │   ├───test
        │   │     └───test images with corresponding XML files
        │   └───train
        │         └───train images with corresponding XML files
        ├───models
        │   └───my_ssd_resnet50_v1_fpn
        │     └───pipeline.config
        └───pre-trained-models
            └───ssd_resnet50_v1_fpn_640x640_coco17_tpu-8
  • 第3步(Step 3) - 選擇硬體加速器:在Google Colab上開啟「第二十七天:物件偵測概述.ipynb」,然後變更執行階段類型為GPU(先說明一下我訂閱了Colab Pro+以期能於參賽期間內完成模型訓練,選擇的類型為「T4」與「大量RAM」)
  • 第4步(Step 4) - 掛載Google雲端硬碟:請執行「#Step 4- Mount Google Drive.」的程式碼儲存格,之後會跳出需授權從Google Colab存取Google雲端硬碟的提示,就請同意授權
  • 第5步(Step 5) - 下載TensorFlow模型庫:請執行「#Step 5- Download TensorFlow Model Garden.」的程式碼儲存格。這步驟程序有做修改,以對應目前TensorFlow版本
  • 第6步(Step 6) - 安裝一些必需的程式庫與工具:請執行「#Step 6- Install some required libraries and tools.」的程式碼儲存格。這步驟程序有做修改,以對應目前Google Colab環境
  • 第7步(Step 7) - 編譯Protobuf程式庫:請執行「#Step 7- Compile the Protobuf libraries.」的程式碼儲存格
  • 第8步(Step 8) - 設置環境:請執行「#Step 8- Set the environment.」的程式碼儲存格
  • 第9步(Step 9) - 構建並安裝 setup.py:TensorFlow版本變更造成原本方式無法使用,因此我做了修改讓這步可以執行;請執行「#Step 9- Build and Install setup.py.」的程式碼儲存格
  • 第10步(Step 10) - 測試安裝:請執行「#Step 10- Test the installation.」的程式碼儲存格,最後出現『OK (skipped=1) Done』訊息表示安裝成功
  • 第11步(Step 11) - 產生Tfrecord:這一步會將資料集轉換成TFRecord格式,請執行「#Step 11- Generate TFrecords.」的程式碼儲存格
  • 第12步(Step 12) - 複製一些檔案
    • 從"TensorFlow/models/research/object_detection"檔案夾中複製"model_main_tf2.py"檔案並將其貼至training_demo檔案夾中。因為需要這個檔案來訓練模型
    • 從"TensorFlow/models/research/object_detection"檔案夾中複製"exporter_main_v2.py"檔案並將其貼至training_demo檔案夾中。因為需要這個檔案來導出已訓練的模型
  • 第13步(Step 13) - 配置管道文件:請參考原文修改"training_demo/models/my_ssd_resnet50_v1_fpn/pipeline.config"之檔案內容
  • 第14步(Step 14) - 啟動TensorBoard:請執行「#Step 14- Start Tensorboard.」的程式碼儲存格,以啟動TensorBoard
  • 第15步(Step 15) - 訓練模型:請執行「#Step 15- Train the model.」的程式碼儲存格,訓練過程如下圖所示:

Imgur

  • 第16步(Step 16) - 導出已訓練的模型:請執行「#Step 16- Export the Trained Model.」的程式碼儲存格
  • 第17步(Step 17) - 測試模型(載入已保存的模型):請執行「#Step 17- Test the Model.」的程式碼儲存格
  • 第18步(Step 18) - 測試模型(載入label_map):請執行「#Step 18- Testing the Model.」的程式碼儲存格
  • 第19步(Step 19) - 測試模型(載入圖像):先將兩張圖片img1.jpg與img2.jpg上傳至Colab儲存空間後再執行「#Step 19- Testing the Model.」的程式碼儲存格
  • 第20步(Step 20) - 執行推論:請執行「#Step 20- Running the Inference.」的程式碼儲存格,執行結果如下圖所示:

Imgur


上一篇
Day26 使用深度學習方式進行技術型態識別
下一篇
Day28 建立技術型態資料集
系列文
用Python程式進行股票技術分析30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言