---
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 按鈕輸入數值解說

```
若以下在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

請將 rsa.pub 寄到masteree108@gmail.com(並著名名字),id_rsa 自行保留

## 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
```

```gherkin=
### 從遠端更新來源(第一次使用等同於下載)
$ repo sync
下載成功後以目前的版本會有如下資料夾(若有新功能請更新此處)
```

```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 版本

本組使用本地端開發,如下圖

### (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

### (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

* 專案名稱:NTUT_Drone

* Security Token: 選擇 "**4. 關於 security token**" 所建立的設定,
下拉即可找到 **NTUTDrone Token** 選項

* Source Connection
選擇右邊的Add Connection會進入Connection Settings畫面

按照下圖配置

Provider 選擇 Local File System
Local File System 選擇剛剛在 "**(1)建立一個專案資料夾**" 建立的source資料夾 Drone_Source/
按下Save Connection回到 Project Settings
* Source Connection* 選擇剛剛建立的

* 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

Target Connection選擇剛剛設定的資料夾

* Video Settings 請輸入5,下圖為整個專案設定,按下 Save Project 按鈕完成新建專案設定

* 完成後會看到的專案畫面

## 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
```
開啟專案後執行追蹤,範例為追蹤兩人


新增下列tag

並使用下圖工具 標住在要追蹤的人物上

id_001, walk

id_002, basketball


#### 使用追蹤工具
下圖輸入2,代表追蹤2秒(最多追 9 個 frame),
若不是再該秒第 1 幀 追蹤,如在 第0:09秒第 2 幀開始追蹤,
那只會自動追 7 個 frame
以下由 第0:09秒 第 1 幀開始追蹤

會跳出追蹤視窗

追蹤完成提示

此時按下 D 按鍵,可看到後面的 9幀 已經追蹤完畢

A 按鍵為 到上 1 幀
進入專案資料夾,可明確看到手動標注1幀 + 追蹤了9幀
```
$ cd ~/NTUT_VoTT_pj/Drone_Target/Drone_007/
$ ll
```

#### 追蹤 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
```

按下enter, 再按下d

#### 開啟 vott 並標注人物
```
$ cd ~/NTUT_VoTT_pj/source/VoTT_NTUT/UBU18
$ npm start
```
注意按下 auto track 按鈕後並不會自動執行 vott_tracker.exe

但會產生如下檔案
```
$ ~/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`