--- title: 'NTUT VoTT 專案編譯測試與Release (ubuntu 18.04)' disqus: hackmd --- [TOC] ## NTUT VoTT 專案編譯測試與Release (ubuntu 18.04) ## 1. 專案說明 ### 開發說明 此包 source code 是基於在 [microsoft/VoTT](https://github.com/microsoft/VoTT/) 2.2.0版本上開發新功能,下列為新增功能 ``` 標註後自動追蹤,以減少每幀需重新標註之繁瑣工作 ``` ### 專案 source code 架構: VoTT_NTUT/UBU18/ => VoTT source code CVTRK/UBU18/ => openCV tracker ### 工具介紹: 工具測試影片如下(使用win10影片解說,其功能與 ubuntu 動作相同): https://youtu.be/wWEyVSttrYE 或參考 **7. 自動追蹤範例** auto track 按鈕輸入數值解說 ![](https://i.imgur.com/vtjVgej.png) ``` 若以下在VoTT專案設定frameRate=5 (1) 輸入0可追1幀 ex: 在第3幀時按下auto track即會自動將第4幀追完 (2) 輸入0以上的數字可追相對應幀數 ex: 若是輸入1在第3幀時按下auto track即會自動將第4、5幀追完 若是輸入2在第3幀時按下auto track即會自動將第4、5幀和下一秒的1~5幀追完 ``` ## 2. 相關開發工具下載 請先參考下列文件安裝相關工具 [Python環境架設(ubuntu 18.04)](https://hackmd.io/@NTUTVOTT/SJMXCwn0P) => 章節 vott 與 CVTRK相關程式 不需執行 [VoTT 安裝流程與建立專案(Ubuntu 18.04)](https://hackmd.io/@NTUTVOTT/rymTpoVUD) => 只需要執行 2. 安裝相關套件 下載 repo 工具(管理整包專案使用) ``` $ cd /tmp $ curl https://storage.googleapis.com/git-repo-downloads/repo > repo $ sudo chmod +x repo $ cp reop /usr/bin ``` 下載 git 工具 ``` $ sudo apt-get install $ git config --global user.email "you@example.com" $ git config --global user.name "Your Name" ``` 下載 tig 工具 ``` $ sudo apt-get tig ``` ## 3. 申請 masteree108 github source code 管理與修改權限 ``` $ cd ~/ $ sudo apt update $ sudo apt install openssh-server $ ssh-keygen -t rsa $ cd .ssh ``` 一路 enter 產生ssh key ![](https://i.imgur.com/VnFi3Sb.png) 請將 rsa.pub 寄到masteree108@gmail.com(並著名名字),id_rsa 自行保留 ![](https://i.imgur.com/He4dgaC.png) ## 4. 專案 source code 下載 :::info !!注意!!若是您電腦的SSH public key已經交由masteree108帳號 去開通權限則使用SSH下載,反之請用HTTPS下載 ::: ```gherkin= $ cd ~/ $ mkdir -p NTUT_VoTT_pj/source $ cd NTUT_VoTT_pj/source 若沒有申請KEY在遠端GITHUB,用HTTPS下載: $ repo init -u https://github.com/masteree108/VoTT_NTUT_UBU18_repo.git -b master 若已經有申請KEY在遠端GITHUB,請選用SSH下載: $ repo init -u git@github.com:masteree108/VoTT_NTUT_UBU18_repo.git -b master ``` ```gherkin= 若是下載成功,資料夾內會出現.repo檔案 $ ll ``` ![](https://i.imgur.com/bDsdWPU.png) ```gherkin= ### 從遠端更新來源(第一次使用等同於下載) $ repo sync 下載成功後以目前的版本會有如下資料夾(若有新功能請更新此處) ``` ![](https://i.imgur.com/AmnJhvz.png) ```gherkin= ### 對每個資料夾指定遠端分支,以master為主 $ repo start master --all ``` * 若是以後要從遠端更新專案,只需要下$ repo sync指令即可全部資料夾更新 若是要單獨更新個別資料夾可以使用下列兩種方式,進入目標資料夾後(內有.git的資料夾) $ repo sync . 或是 $ git pull --rebase ## 5. VoTT 編譯程式 與 專案建制範例 ### (1) VoTT_NTUT 專案編譯: ``` 編譯 $ cd ~/NTUT_VoTT_pj/source/VoTT_NTUT/UBU18 $ npm ci $ npm start ``` 若編譯成功會自動開啟 vott介面 瀏覽器上的目前沒使用可以直接關掉 log 可看到 NTUT VoTT 版本 ![](https://i.imgur.com/w2GQdbx.png) 本組使用本地端開發,如下圖 ![](https://i.imgur.com/ru2YSf1.png) ### (2) security token: > 引述官方文件如下 #### NOTE: Project files can be shared among multiple people. In order to share sensitive project settings, all parties must 為了讓專案讓LAB的同學共同使用, security token 使用先前研究留下來的key ```gherkin= Name : NTUTDrone Token Key : qITjd1Rj6hFqC7uB0OGxPKYVxIFSdcMrprQAMS5rEhc= ``` 點選左下角的齒輪,輸入之前的 security token ![](https://i.imgur.com/aSEvMqN.png) ### (3) VoTT 影片專案 建立專案資料夾 ``` $ cd NTUT_VoTT $ mkdir Drone_Source/ //用來放置來源影片,需要時只需放一支影片否則會影響vott開啟的速度 $ mkdir Drone_Source_all/ //存放所有影片,有需要再移到 Drone_Source 資料夾 $ mkdir Drone_Target/ //用來放置專案的.vott檔案* ``` 請先下載影片 [影片位置](https://drive.google.com/drive/folders/1VCM0J8mkNEFt3fMp-v-T0JeXdgNTbjeX) 例如下載 Drone_007.mp4,請放入 Drone_Source/資料夾 建立專案 ``` $ cd Drone_Target $ mkdir Drone_007 $ cd ../ $ cd source/VoTT_NTUT/UBU18 $ npm start ``` 按下 New Project ![](https://i.imgur.com/huEByt1.png) * 專案名稱:NTUT_Drone ![](https://i.imgur.com/SjAUMTo.png) * Security Token: 選擇 "**4. 關於 security token**" 所建立的設定, 下拉即可找到 **NTUTDrone Token** 選項 ![](https://i.imgur.com/oDF61qV.png) * Source Connection 選擇右邊的Add Connection會進入Connection Settings畫面 ![](https://i.imgur.com/1l3C9hj.png) 按照下圖配置 ![](https://i.imgur.com/NTorrKl.png) Provider 選擇 Local File System Local File System 選擇剛剛在 "**(1)建立一個專案資料夾**" 建立的source資料夾 Drone_Source/ 按下Save Connection回到 Project Settings * Source Connection* 選擇剛剛建立的 ![](https://i.imgur.com/4y64sYw.png) * Target Connection 選擇右邊的Add Connection會進入Connection Settings畫面 按照下圖配置 輸入Display Name: Drone_007 (_00X請依據影片名稱創立) Provider 選擇 Local File System Local File System 選擇剛剛在 "**(1)建立一個專案資料夾**" 建立的target資料夾 Drone_Target/Drone_007 按下Save Connection回到 Project Settings ![](https://i.imgur.com/UULlnWu.png) Target Connection選擇剛剛設定的資料夾 ![](https://i.imgur.com/zejIQu6.png) * Video Settings 請輸入5,下圖為整個專案設定,按下 Save Project 按鈕完成新建專案設定 ![](https://i.imgur.com/aq5LNZi.png) * 完成後會看到的專案畫面 ![](https://i.imgur.com/q0kk6cW.jpg) ## 6. CVTRK 之 vott_tracker.exe 建立 ``` 製作 vott_tracker.exe $ cd ~/NTUT_VoTT_pj/source/CVTRK/UBU18 轉換到 ## 2. 相關開發工具下載 建立 的python 環境 $ conda activate tracker 執行 build_exe.sh 會產生 vott_tracker.exe 並且自動複製到~/NTUT_VoTT_pj/source/VoTT_NTUT/UBU18/NTUT/exe $ ./build_exe.sh ``` 檢查是否有將 vott_tracker.exe 複製到相對應的資料夾 ``` $ cd ~/NTUT_VoTT_pj/source/VoTT_NTUT/UBU18/NTUT/exe $ ll ``` 若上述完成後即可使用 自動追蹤功能 ## 7. 自動追蹤範例 #### 開啟 VoTT 工具 使用標注工具 ``` $ cd ~/NTUT_VoTT_pj/source/VoTT_NTUT/UBU18 $ npm start ``` 開啟專案後執行追蹤,範例為追蹤兩人 ![](https://i.imgur.com/nM8Yb41.png) ![](https://i.imgur.com/b41J0km.png) 新增下列tag ![](https://i.imgur.com/2eBvGxP.png) 並使用下圖工具 標住在要追蹤的人物上 ![](https://i.imgur.com/C24awPG.png) id_001, walk ![](https://i.imgur.com/sBpGGOQ.png) id_002, basketball ![](https://i.imgur.com/cejgsew.png) ![](https://i.imgur.com/oVpWYWC.png) #### 使用追蹤工具 下圖輸入2,代表追蹤2秒(最多追 9 個 frame), 若不是再該秒第 1 幀 追蹤,如在 第0:09秒第 2 幀開始追蹤, 那只會自動追 7 個 frame 以下由 第0:09秒 第 1 幀開始追蹤 ![](https://i.imgur.com/swh2MBi.png) 會跳出追蹤視窗 ![](https://i.imgur.com/xIQV49f.jpg) 追蹤完成提示 ![](https://i.imgur.com/rOAGHz0.png) 此時按下 D 按鍵,可看到後面的 9幀 已經追蹤完畢 ![](https://i.imgur.com/1xeKxx3.png) A 按鍵為 到上 1 幀 進入專案資料夾,可明確看到手動標注1幀 + 追蹤了9幀 ``` $ cd ~/NTUT_VoTT_pj/Drone_Target/Drone_007/ $ ll ``` ![](https://i.imgur.com/UTf9tTe.png) #### 追蹤 log 檢查: 若是有追蹤失敗或想知道追蹤程式的log可參閱每次追蹤的log檔案 注意此log會依序將最新的資訊往下貼上 ``` $ cd ~/NTUT_VoTT_pj/source/VoTT_NTUT/UBU18/NTUT/log $ cat log.txt ``` ## 8. 開發常用模式(關閉自動追蹤功能) :::info 由於開發過程不希望每次修改 code 都需要製作出 vott_tracker.exe會耗費太多時間,所以這邊採用指令的方式進行操作 ::: #### 首先先將 vott自動執行 tracking 的功能 disable ``` $ cd ~/NTUT_VoTT_pj/source/VoTT_NTUT/UBU18/src/electron $ vim main.ts 修改如下 const runTrackerSwitch = false; 指令 tig 也可以看到修改 $ tig ``` ![](https://i.imgur.com/sRLz7iX.png) 按下enter, 再按下d ![](https://i.imgur.com/qsm9rhl.png) #### 開啟 vott 並標注人物 ``` $ cd ~/NTUT_VoTT_pj/source/VoTT_NTUT/UBU18 $ npm start ``` 注意按下 auto track 按鈕後並不會自動執行 vott_tracker.exe ![](https://i.imgur.com/tNCmqHL.png) 但會產生如下檔案 ``` $ ~/NTUT_VoTT_pj/Drone_Target $ ll 可看到檔案 vott_source_info.json vott_target_path.json ``` 可觀察這兩個檔案,這是要帶入 vott_tracker.exe 使用的資訊 ,若是自動執行 vott_tracker.exe 追蹤成後後才會刪除這兩個檔案 #### vott_tracker.py 測試指令 執行下方指令並將將上述檔案位置帶入 ```gherkin= $ cd ~/NTUT_VoTT_pj/source/CVTRK/UBU18/ 切換環境 $ conda activate tracker $ python3 vott_tracker.py ../../../Drone_Target/vott_source_info.tmp ../../../Drone_Target/vott_target_path.json v0.04之後的版本請用 $ python3 vott_tracker.py ../../../Drone_Target/vott_source_info.json ../../../Drone_Target/vott_target_path.json ``` ## 9. Release 流程(尚未完成,等下次實際 release 再詳細編輯) 下列修改架設為 v0.0.3 => v0.0.4 #### CVTRK 修改 vott_tracker.exe 版本號碼 ``` $ cd ~/NTUT_VoTT_pj/source/CVTRK/UBU18 $ vim vott_tracker.py 逢10進位 - pym.PY_LOG(False, 'D', py_name, 'vott_tracker.exe version: v0.0.3') + pym.PY_LOG(False, 'D', py_name, 'vott_tracker.exe version: v0.0.4') ``` 製作 vott_tracker.exe ``` $ cd ~/NTUT_VoTT_pj/source/CVTRK/UBU18 轉換到 ## 2. 相關開發工具下載 建立 的python 環境 $ conda activate tracker 執行 build_exe.sh 會產生 vott_tracker.exe 並且自動複製到~/NTUT_VoTT_pj/source/VoTT_NTUT/UBU18/NTUT/exe $ ./build_exe.sh ``` 將最新版的 vott_tracker.exe 壓縮成.zip 推至[雲端](https://drive.google.com/drive/u/0/folders/1ekddsLwGHdLfagIRX4hBn2iNh8eQmLPr) ``` $ cd ~/NTUT_VoTT_pj/source/VoTT_NTUT/UBU18/NTUT/exe 壓縮 vott_tracker.exe ``` 修改 release_note ``` $ git status $ git add release_note $ git commit $ git push 增加版本號標籤 $ git tag v0.0.4 若要刪除tag $ git tag -d v0.0.4 推送 tag 至遠端 $ git push --tags ``` #### VoTT_NTUT **一、 修改版本號** (1) .repo/manifests/NTUT_version 修改版本號碼 製作 NTUT_version.exe ``` $ cd ~/NTUT_VoTT_pj/source/.repo/manifests/NTUT_version $ vim NTUT_version.py 修改版本號 $ conda activate tracker 執行下列程式會自動將 NTUT_version.exe 放入 ~/NTUT_VoTT_pj/source/VoTT_NTUT/UBU18/NTUT/exe $ ./build_exe.sh ``` 上傳至github ``` $ git add NTUT_version.py $ git add NTUT_version.exe $ git commit (NTUT)(NTUT_version) update NTUT_version.exe for vott v0.0.3 to v0.0.4 execute below command,it will be created NTUT_version.exe and copied it to VoTT/UBU18/NTUT/exe/ automatically $./build_exe.sh make sure VoTT_NTUT/UBU18/NTUT/exe/ has NTUT_version.exe Dependence: .repo/manifests VoTT_NTUT/UBU18 $ git push ``` (2) VoTT_NTUT/ 修改版本號碼 上傳至github ``` $ git add NTUT/exe/NTUT_version.exe $ git commit (NTUT)(NTUT_version) update NTUT_version v0.0.3 to v0.0.4 Dependence: .repo\manifests commit:'(NTUT)(NTUT_version) update NTUT_version.exe form vott v0.0.3 to v0.0.4' VoTT_NTUT\UBU18 ``` **二、 release 修改** 上傳至github ``` $ git status $ git add release_note $ git commit $ git push 增加版本號標籤 $ git tag v0.0.4 若要刪除tag $ git tag -d v0.0.4 推送 tag 至遠端 $ git push --tags ``` ## 10. 匯出 VoTT 若第 **9. Release 流程** 完成後 請參 [考此份文件](https://hackmd.io/@NTUTVOTT/BkhHcHUhD) 做出 vott.exe 此項目為做出 vott.exe 是用方法請參考[ 此份文件](https://hackmd.io/@NTUTVOTT/r1TcVOvhv) ###### tags: `setup`, `VoTT`