---
# System prepended metadata

title: C3P2 code (revise___.py) README

---

# C3P2 code (revise___.py) README

---

[toc]

------
## File
相關檔案在140.114.79.162與140.114.79.176都有。兩邊的code在功能性上是一樣的，只有差在於一些參數上的不同，例如: 傳送packet的目標設為對方、傳送packet的方向設定...等。

相關檔案皆位於
- `sftp://mnetlab@140.114.79.162/home/mnetlab/yolov4/deep-sort-yolov4-0`
- `sftp://lab@140.114.79.176/home/lab/yolov4/deep-sort-yolov4-0`

，以revise開頭，包含以下幾種不同的衍生以及副屬程式: 

- revise_distmap.py: 原版code，最開始完成的版本，可能缺少一些後續的優化。
- revise_distmap_backup.py: 就只是個備份
- revise_time.py: 加上執行時間統計的版本
- revise_time.py: 不管人物怎麼走，走到傳送區就直接傳送packet的版本，給paper當作比較的結果用
- revise_camera.py: 輸入檔案改成camera的版本，不過還是要預先給定mask
- revise_socketsend.py: 模擬3camera用，基本上只有傳送packet的能力，完全沒有其他功能
- revise_left/right.py: 舊版code

----
## command

依照下面的command執行，調整一下參數即可
### in-code parameter
- `MEC_to_IP, MEC_local_IP, port`: IP與port設定，一般不動。
- `# distance mapping map array, scale_matric`: distmap array，以及指定要使用的array，詳細問明憲。
- 人物行走方向指定: 如下code，指定人行走方向向著甚麼方向(0-90, 270-360, 也就是偏向畫面右側走)時，走道mask區域會傳送到另一台。這邊設定有兩組數據，增加flexible。
```python=
t_degree_low_1 = 0
t_degree_high_1 = 90
t_degree_low_2 = 270
t_degree_high_2 = 360
```

### distmap
```bash=
$ cat command_distmap.txt
$ python revise_distMap.py --video Video_20210331/square0331_1.MOV --min_score 0.3 --model_yolo model_data/yolov4.h5 --model_feature model_data/mars-small128.pb --output tobedelete.mp4 --mask mask_0331_square_1.jpg
```
- `--video`: input video
- `--min_score 0.3, --model_yolo, --model_feature`: ML相關model，不動
- `--output`: output video，要注意的是，相關的output檔案都會用此檔名。
- `--mask`: input mask，標示出當然人物走到何處會傳送的mask，如下圖，黑色區塊極為傳送區塊。要注意的是mask的圖片長寬大小要與影片的長寬大小相同，通常會先corp 影片frame之後(revise code的`# 印出frame成圖片`地方解註解或是利用影片撥放軟體)，再使用繪圖軟體上色，以確保長寬大小相同。
![](https://i.imgur.com/IdLCFEu.jpg)

### time
```bash=
$ cat command_time.txt
$ python revise_time.py --video 20210311Video/Execution_time/2P/20210311_2p_left.MOV --min_score 0.3 --model_yolo model_data/yolov4.h5 --model_feature model_data/mars-small128.pb --output 20210311_2p_left_track_j2.mp4 --mask mask_0311_2p_1.jpg --jump_frame 2
```
大致上與distmap相同，就略過相同部分
- `jump_frame`: paper比較用，不是像原先本的程式每個frame都跑，而是跳過幾個frame執行一次程式，減少處理量，增加執行效率。數字(2)代表30FPS的影片需需要跑30/2=15個frame，也就是跑一個跳一個

另外此程式會有執行時間的csv output，檔名與`--output`相同不過去掉副檔名。

### socketdend
```bash=
 $ python revise_socketsend.py --input ./pk_20210311_2p_left_track/pk_20210311_2p_left_track_2_859.pk > msg.msg
```
模擬3camera用。
在執行完第一次第1,2台camera後，在執行第2,3台camera時，使用這個程式來模擬第1台camera傳送資料。
- `--input`: 要傳送的packet，在執行第1,2台camera時會產生對應的pk file，在這裡標出即可。檔案名最後的數字(859)是原先在執行時，傳送那一刻的frame coount，所以理論上在類似的時間傳送執行就好。
- `>`: 只是個輸出重導向

---
### code

程式內有註解，更多詳細的設定可以直接改code調整，不過建議備份一下，或是換個檔名，有問題再問我。
