• 中小學程式課程營隊
    • CodeCombat免費體驗課
    • CodeCombat暑期線上程式營
    • CodeCombat線上程式課
    • CodeCombat學生註冊碼訂閱
    • CodeCombat教學教材
    • CodeCombat校園導入
  • 高中AI課程營隊
    • 高中寒暑期營隊-人工智慧專題實作營
      • 2022暑假中興大學AI桌球營
      • 2022暑假AI醫療營
      • 2022暑假AI運動專題實作營
      • 2022暑假 AI・海洋・生物營
      • 2022暑假 AI音樂專題實作營
    • 高中AI線上課程&測評認證
    • 高中AI教學教材
  • 競賽活動
  • 專欄文章
  • 會員中心
    • 我的帳號
    • 我的訂單
    • 課程清單
    • 遺失密碼
    • 註冊登入
AI4kids-ai課程教育推薦
  • 中小學程式課程營隊
    • CodeCombat免費體驗課
    • CodeCombat暑期線上程式營
    • CodeCombat線上程式課
    • CodeCombat學生註冊碼訂閱
    • CodeCombat教學教材
    • CodeCombat校園導入
  • 高中AI課程營隊
    • 高中寒暑期營隊-人工智慧專題實作營
      • 2022暑假中興大學AI桌球營
      • 2022暑假AI醫療營
      • 2022暑假AI運動專題實作營
      • 2022暑假 AI・海洋・生物營
      • 2022暑假 AI音樂專題實作營
    • 高中AI線上課程&測評認證
    • 高中AI教學教材
  • 競賽活動
  • 專欄文章
  • 會員中心
    • 我的帳號
    • 我的訂單
    • 課程清單
    • 遺失密碼
    • 註冊登入

AI專題實作

首頁 » 文章 » 用 Nvidia 軟硬體生態系 實現 Jetson Nano 物件偵測與數據串流儀表板

用 Nvidia 軟硬體生態系 實現 Jetson Nano 物件偵測與數據串流儀表板

  • 發布 by AI4kids團隊
  • 分類 AI專題實作
  • 日期 2021-06-25
  • 評論 尚無評論

實作綠鬣蜥偵防儀表板

內容目錄

  • 1. 專案大綱
  • 2. 專案動機
  • 3. 資料蒐集
  • 4. 使用 Nvidia TLT 訓練綠鬣蜥偵測模型
    • Nvidia Transfer Learning Toolkit (TLT) 簡介
    • NVIDIA TLT 安裝教學
    • TLT 模型訓練、優化
  • 5. 佈署模型於 Jetson 裝置
    • Deepstream 簡介
    • TensorRT 簡介
    • Deepstream 環境安裝
    • Deepstream 運行
  • 6. 數據儀表板
    • Plotly Dash
    • Dash Bootstrap Components
    • MQTT broker
    • 資料庫建置
    • MQTT 主題訂閱並與數據寫入資料庫
    • 運行網頁儀表板

1. 專案大綱

本頁面是 Nvidia Jetson 社群中的公益開源專案「綠鬣蜥個體偵測與監控」的 專案簡介。此專案使用 Jetson Nano 搭配電腦視覺之物件偵測模型即時偵測綠鬣蜥的行蹤與呈現。

我們同時提供此開源專案的 Github repo,讓讀者能夠在進行類似專案開發時複製模式進行快速開發。

2. 專案動機

什麼是綠鬣蜥?

美洲鬣蜥又名綠鬣蜥,是一種生活在樹上的大型蜥蜴,頭尾全長可達1~2公尺,壽命可長達10年以上,以植物的葉、嫩芽、花、果實為食物,為日行性爬蟲類,每胎可產24–45顆卵,繁殖力、環境適應能力極強。

綠鬣蜥帶來之生態浩劫嚴重性

在台灣,棄養的綠鬣蜥在快速野外繁殖,本國農委會林務局曾表示,綠鬣蜥問題不不僅危害生態,其攝食植物造成農民的農作物損失、並且由於綠鬣蜥有挖洞之習慣,常在河堤、魚塭旁挖洞,破壞設施。以政府目前監控下所知,綠鬣蜥的行蹤已擴散多個縣市。

建立綠鬣蜥監控系統

得力於近年來 Edge device 的發展,我們得以開發、佈署實時電腦視覺應用,藉以偵測、監控綠鬣蜥的行蹤,通過系統即時告警與通報,能採取措施避免綠鬣蜥帶來的資產損失問題。

軟體架構

3. 資料蒐集

綠鬣蜥圖片標籤示意

圖片爬蟲

透過 selenium 動態網路爬蟲,我們蒐集了5000張左右的綠鬣蜥圖片,並一一進行標籤。在此我們也開放圖片、標籤資料的下載,請見我們準備的圖片標籤教學。

圖片標籤

在多人標籤的作業當中,我們使用了網頁版的物件偵測標籤工具 makesense.ai 來進行,因為其簡單易用的特性,也無須安裝任何軟體。

使用此工具的教學文檔見此連結。

4. 使用 Nvidia TLT 訓練綠鬣蜥偵測模型

Nvidia Transfer Learning Toolkit

Nvidia Transfer Learning Toolkit (TLT) 簡介

從頭開始創建 AI/ML 模型來解決業務問題是一項成本極高的過程,因此通常專案開發時會使用「遷移學習」來加速開發。遷移學習是屬於機器學習的一種研究領域,它專注於存儲已有問題的解決模型,例如使用預訓練的模型,將其利用在其他不同但相關問題上。

NVIDIA 所提供的 TLT (Transfer Learning Toolkit) 顧名思義就是遷移學習的工具包,提供了圖像、自然語言處理的熱門預訓練模型做遷移學習。TLT 最重要的是面向佈署的目的;針對模型訓練完畢後的尺寸縮減、優化都被整合在 TLT 的功能當中。

在最理想的情況下使用 TLT 做模型的訓練僅需要設定訓練參數;不用從頭撰寫程式碼。TLT 實現了訓練、優化、佈署的端到端流程,這與一般的開發流程有極大的不同,大大減少了專案開發的時間、技術成本。

硬體需求

官方所建議的運行 Nvidia TLT 的硬體配置:

  • 32 GB system RAM
  • 32 GB of GPU RAM
  • 8 core CPU
  • 1 NVIDIA GPU
  • 100 GB of SSD space
軟體需求

NVIDIA TLT 安裝教學

在此我們提供了一份詳細的 NVIDIA TLT 安裝教學,請見我們準備的環境設置教學。

TLT 模型訓練、優化

此專案的物件偵測模型為 yolo v4,請參考此 yolo v4 訓練範例程式碼稍作修改後,便能使用綠鬣蜥的圖片、標籤來訓練模型。


運行此的程式碼,等待程式全部執行完畢後,會自動匯出一 .etlt 檔案,便是我們最終要佈署的模型檔案。


PS. 想要快速上手 TLT 的 CV 使用範例程式碼皆可在此官方連結內找到,幾乎都是只要稍微調整參數即可一鍵訓練、優化、匯出。

5. 佈署模型於 Jetson 裝置

Deepstream 簡介

模型訓練完畢後,下一步是佈署於 Jetson 裝置進行即時推論,同時也需要將影像與推論結果進行串流。我們使用的是 Nvidia Deepstream,一個專為推論、資料串流而生的框架。

DeepStream 是一套 end-to-end 的流程,可以進行深度學習推論、影像和感測器處理,並在串流應用程式中將洞見傳送至雲端。您可以使用容器建構雲端原生的 DeepStream 應用程式,並透過 Kubernetes 平台執行協調,以進行大規模的部署。當部署在邊緣端時,應用程式可以在 IoT 裝置與雲端標準訊息代理程式(例如 Kafka 和 MQTT)之間通訊,以進行大規模的廣域部署。

TensorRT 簡介

NVIDIA TensorRT™是用於深度學習推理的SDK。SDK包含深度學習學習優化器運行時環境,使深度學習學習應用提供低延遲和高吞吞。在進行模型佈署之前,需要 TensorRT 對模型進行轉換,加快推論時的運行速度。

TLT 是以佈署目的為導向的模型訓練框架,自然包含了針對訓練後模型的轉換功能。只要使用 tlt-converter 就可以對 TLT 訓練完畢的 .etlt 輸出模型進行 TensorRT 的推論引擎建置。另外,針對裝置佈署的硬體、軟體都需要用相應的 tlt-converter 版本進行轉換。以下為所有配置的選項:

Deepstream 環境安裝

我們記錄了 Deepstream 環境安裝的步驟,以及 .etlt 模型的 TensorRT 引擎建置過程。其中也包含安裝此專案所需要的其他套件的方法,如 MQTT client…等等,詳細安裝步驟請見我們準備的環境設置教學。

Deepstream 運行

deepstream_app/deepstream_mqtt_rtsp_out.py 是 deepsteam python binding 的運行配置。此程式在進行物件偵測推論時,會將圖片以 RTSP 的方式進行串流,並且將推論結果之數據傳送到 MQTT broker、儲存至資料庫以方便之後的視覺化。

6. 數據儀表板

Plotly Dash

Plotly Dash 是一個資料可互動式視覺化的框架,可以用非前端的語言來撰寫一個資料視覺化的前端頁面,同時本套件延伸的其他子套件更是將網頁風格與排版的過程極簡化,非常適合快速開發基於網頁的資料視覺化。

另外,該套件提供的 live-update 功能,可以讓網頁持續動態更新,特別適合本專案的儀表板需求。

Dash Bootstrap Components

Bootstrap是一組用於網站和網路應用程式開發的開源前端框架,包括HTML、CSS及JavaScript的框架,提供字體排印、表單、按鈕、導航及其他各種元件及Javascript擴充套件,旨在使動態網頁和Web應用的開發更加容易。


使用 Dash Bootstrap Components 可直接承襲 bootstrap 所定義好的框架,快速鍵置網頁的版面配置。

MQTT broker

Eclipse Mosquitto

使用者可依照自己的喜好選用 MQTT broker,在此專案當中我們所使用的是 Eclipse Mosquitto。安裝好後只要啟動 MQTT broker 就能開始接收接收資料。

資料庫建置

mySQL

本專案使用 mySQL 建置資料庫,使用者可挑選偏好的資料庫種類。資料庫的建目的是從 Jetson Nano 推論時發送至 MQTT broker 的資料流可以被寫入資料庫,透過 Plotly Dash 定時更新資料並且將最新的資料呈現於儀表板。

MQTT 主題訂閱並與數據寫入資料庫

Deepstream 在 Jetson Nano 上運行時通過 MQTT 通訊協定不斷向 MQTT broker 的特定主題發送推論結果之數據。透過設定此特定主題的訂閱者,就能在某主題有最新數據流入時收到通知、將數據寫入資料庫。此程式位置為 mqtt_topic_subscribe/mqtt_msg_to_db.py。

運行網頁儀表板

  • Deepstream 佈署與運行
  • MQTT broker 運行於 data server
  • Database 運行於 data server

具備以上的條件,網頁儀表板便可以開始運行了。請注意 Deepstream 的配置是可變動的,因此未來使用者若要將模型代換成其他物件偵測模型只要修改 Deepstream 的配置文件與 Deepstram python 執行檔案便可以。

  • Share:
AI4kids團隊
AI4kids團隊

上一篇文章

CodeCombat入選第33屆國際資訊奧林匹亞競賽IOI專項賽
2021-06-25

下一篇文章

NVDIA Jetson Nano 讓高中生也能動手打造AI自走車!
2021-08-25

您可能還喜歡

SEO Banner-營隊
高中學習歷程:人工智慧專題實作-監督式學習
2 10 月, 2021
blog-Nvidia Omniverse
一文讀懂在SIGGRAPH 上技驚四座的Nvidia Omniverse
28 8 月, 2021
blog-JETBOT
NVDIA Jetson Nano 讓高中生也能動手打造AI自走車!
25 8 月, 2021

發表評論 取消回覆

很抱歉,必須登入網站才能發佈留言。

Facebook Youtube
聯繫客服
  • Medium
  • 校園程式教育導入
  • 開課合作
  • 夥伴招募
  • AI4kids 使用者條款
  • 隱私權與服務條款
  • 法律顧問-瀛睿法律事務所

政府認證
教育部 高級中等教育階段學生學習歷程資料庫 檢定證照發照單位
經濟部工業局 109年度人工智慧技術教育訓練服務能量登陸機構

| NVDIA Inception 人工智慧新創公司
| NVIDIA ambassador 大使認證

課程合作場域

【北部】

重力波文理短期補習班 新北市土城區學海街388號
怡均書院 新北市新莊區民安西路118號
悅讀 新北市林口區文化一路一段15巷8號1樓
翻轉教育實作工作室 新北市林口區文化三路二段30-1號1樓
森學院 新竹縣竹北市勝利15街268號

【中部】

逢甲大學智慧創新港i-Hub 台中市西屯區文華路100號(西安街與凱旋七街口)
中科智慧機器人自造基地 台中市大雅區科雅路6號
長頸鹿美語昌平分校 台中市北屯區昌平路一段95-13號
恆繹文理 彰化縣員林市浮圳路二段483號

【南部】

南科AI_ROBOT自造基地 台南市新市區南科三路19號4樓之1

© Copyright 2022 ai4kids.ai  地址:台中市西屯區文華路100號逢甲大學智慧創新港i-Hub TEL:(04) 3609-8885 

登入 AI4kids 帳號

登入:

Google
忘記密碼?

尚未註冊會員? 註冊

註冊會員

登入:

Google

已經註冊會員了? 登入

線上程式課
免費體驗