本論文的成果網站:https://sites.google.com/view/asrlabinsectdataset
有任何想詢問的歡迎寄信詢問:[email protected]
All program codes:
- C++環境:
- Tiscamera_cpp
- Arduino環境:
- Arduino
- Python環境:
- BackgroundMattingV2
- Deeplabcut
- image_processing
安裝環境須知:
- C++部分:
- 安裝opencv與g++ gcc 即可執行。
- Arduino部分:
- 安裝好Arduino IDE即可執行程式。
- Python部分:
- BackgroundMattingV2:
- kornia==0.4.1
- tensorboard==2.3.0
- torch==1.7.0
- torchvision==0.8.1
- tqdm==4.51.0
- opencv-python==4.4.0.44
- onnxruntime==1.6.0
- Deeplabcut:
- 資料夾內部有 setup.py 安裝到指定版本。
- image_processing:
- 最重要是安裝opencv 4.0版本以上即可。
- BackgroundMattingV2:
碩論流程操作:
- 建立高速相機環境:
- Create an environment: https://www.theimagingsource.com/documentation/tiscamera/tutorial.html#setup
- High-speed camera(dfk 33ux273) → tutorial
- 使用高速相機SDK環境進行拍攝:
- 首先先使用tcam-capture開啟相機,調整相機參數。
- 可使用./tiscamera_cpp/run.sh腳本開啟。
- 使用高速相機拍攝蚱蜢資料集,首先先cd ./trigger_save_image。
- 首先你必須會使用c++,詳細作請看README.md。
- 使用Arduino Nano程式,在裡面可修改脈波頻率。
- 開啟./build/execute.sh,裡面可以修改要使用幾台高速相機。
- 目前一共有三台,包含47124104, 47124105, 47124106。
- 因為我們拍攝都是raw data,必須透過Bayer filter轉換成RGB圖片。
- 使用./build/ Bayer2RGB.cpp,指定目標檔案進行轉換成RGB圖。
- 使用高速相機拍攝相機校正所需要的圖片,cd ./calibration_save_image 。
- 開啟./build/execute.sh,將標定版放入相機範圍內,按下enter進行拍攝。
- 首先先使用tcam-capture開啟相機,調整相機參數。
- 資料前處理:
- 首先安裝 https://github.com/PeterL1n/BackgroundMattingV2 的環境,我們要把拍攝到的照片前景背景分離。
- 使用run.sh,裡面可以修改模型參數,修改你的來源影片以及要輸出的結果,由於我們是使用需要背景圖的AI模型,所以需要拍攝一張背景圖。
- 接著我們要將前後景分離完的影片進行影像處理,首先cd ./image_processing。
- 在main.pay裡,呼叫了opencv.py,其主要功能是將蚱蜢的輪廓進行優化,如修復遺失的邊緣輪廓以及過濾雜訊。
- 而在./src中,有image_to_video.py, video_to_jpg.py以及rename_image.py處理資料格式。
- 首先安裝 https://github.com/PeterL1n/BackgroundMattingV2 的環境,我們要把拍攝到的照片前景背景分離。
- 2D動物姿態評估DLC(DeepLabCut),請先安裝 https://github.com/DeepLabCut/DeepLabCut 的環境:
1. 請先把【2.5小时入门DeepLabCut (1~6) Overview-哔哩哔哩】 https://b23.tv/TdCh5Uo 系列的影片看完對DLC有基礎的了解。
2. Cd ./jump_b0/locust-jump_mvs-2022-06-19.
- 在DLC中有分GUI和juypterlab去進行。
- 首先我們先定義好config.yaml,定義蚱蜢的身體部分, 模型的參數設定,請依照本檔案範例config.yaml或是上面教學影片操作一遍,等熟悉之後在自定義自己的參數。
- 使用run_GUI.bash,開啟DLC介面選定自己定義好的config.yaml,我在這邊只是用到介面所提供的label功能進行標注資料集。
- 標注完後,我們將整個資料夾壓縮傳到SW930伺服器中,進到符合DLC訓練環境的env,開啟deeplabcut.ipynb,將路徑位置改成你當下的位置,並透過程式裡面的步驟逐步執行,最終等待下練完之後,將整個資料夾全部壓縮傳回至原本的電腦。
- 如何使用DGX進行訓練:DGX Manual。DGX不像是SW930有廠商提供的軟體去管理,全部都是我們管理人員自己寫的,有任何問題一律請找他們,不地擅自使用。
- 如何使用SW930,這邊不會提供詳細的建立流程,請找管理伺服器的同學取得帳號與網址以及提供你的需求,與DGX使用的juypterlab是相同的概念。
- 3D模型分析:
- 我們得到2D的特徵點要重建成3D模型,我們使用支持DLC的anipose library,請先在環境安裝anipose相關的套件。
- 首先cd ./cam_mvs中,裡面有config.toml,請參考裡面的設定方式,選擇自己訓練完之後的DLC的config.yaml位置,以及下面有相機校正, 定義骨架以及角度分析方式。
- 在run.bash中,我們有相機校正, 2D分析, 三角化重建, 影片合成, 角度分析,cd ./trial_1中,請依照video-raw, calibration放入目標影片以及校正的影片,其可執行後續的功能。
- 最終得到的3d資訊我們要進行分析:
- 再回到cd ./image_processing,開啟main.py呼叫Optimze_result.py。
- 假設3D模型有missing value,我們使用def deal_with_csv()進行修復。
- 接著分析3D模型的角度, 運動軌跡。
- 我們得到2D的特徵點要重建成3D模型,我們使用支持DLC的anipose library,請先在環境安裝anipose相關的套件。
備註:請先依照我提供config.toml和config.yaml的格式設定,並能後實現出來再去定義自己的資料。