# NCHC Hackathon WTMH ## WTMH GUI A ECG detection system using CNN ## 前置作業 - docker [載點](https://www.docker.com/products/docker-desktop/) - Xming [載點](https://sourceforge.net/projects/vcxsrv/) - github (給帳號名協作) ## 專案方向 - CuPy RAPIDS CuSignal CWT [參考 code](https://docs.cupy.dev/en/latest/reference/generated/cupyx.scipy.signal.cwt.html) 負責人: 朱俊憲,組員:陳政瑋 - ONNX to TensorRT example (前面兩行而已,後面是一些做測試的code)[參考 code](https://github.com/WarrenTseng/monai_endoscopy_tutorial/blob/main/TensorRT/Convert_to_TensorRT.ipynb) 負責人:謝侑良 - Pytorch Wavelet [參考 code](https://pytorch-wavelets.readthedocs.io/en/latest/readme.html) 負責人:李振楊,組員:卓子平、黃伊靜 ## docker 使用 下載安裝 docker 和 Xming 確定有在 docker desktop 中開啟 WSL ![image](https://hackmd.io/_uploads/HyFNiyrEa.png) 如果沒有,便在 powershell 打上 ``` wsl --install ``` 並重開機 如果有 ,開啟 powershell$\downarrow$ ![image](https://hackmd.io/_uploads/SJoqH0N46.png) 在 Powershell 鍵入$\downarrow$,以下載 docker image ``` docker pull chokevin417/wtmh_gui ``` 等待下載完成$\downarrow$ ![image](https://hackmd.io/_uploads/HyzL3RENa.png) 在 docker GUI 中會出現 chokevin417/wtmh_gui 的 image$\downarrow$ ![image](https://hackmd.io/_uploads/BJpzpC4Vp.png) 在 power shell 鍵入$\downarrow$ ``` ipconfig ``` 查詢 ip 位置$\downarrow$ ![image](https://hackmd.io/_uploads/S1yApR4Ea.png) 我的是 172.20.128.1 ,所以在 powershell 鍵入$\downarrow$ ``` set-variable -name DISPLAY -value 172.20.128.1:0.0 #(這是註解不要複製) 上面是要讓 docker 的顯示裝置能連到 Xmin 所以把 Display 這個參數指定為 docker 的 IP docker run -e DISPLAY=$DISPLAY --gpus all -t -d -i chokevin417/wtmh_gui #(這是註解不要複製) 上面是要建造 docker container 基於 chokevin417/wtmh_gui 這個 image 且顯示的 IP 是 我們剛剛設好的,而且能動用所有GPU ``` 建造成功後,在 docker GUI 中能看到多出了 container ![image](https://hackmd.io/_uploads/rkcMnySEp.png) 在 running 的狀態下,按下 CLI 就可以進入環境進行操作了 ![image](https://hackmd.io/_uploads/SyLW6krVp.png) 環境使用 linux語法操作 ([語法參考](https://blog.ossii.com.tw/?p=2241)) 我們使用 ls 便可以看到環境中已有 1001.txt 這個測試檔案 ![image](https://hackmd.io/_uploads/rJOKFHLVp.png) 結束使用後,可以使用按 STOP 終止環境 (關機),下次進入可以用 START (開機) ![image](https://hackmd.io/_uploads/Sy9zRyHEp.png) ## SOURCE CODE 首先要設定 ssh key 以跟 github 連結,參考教學文[連結] ``` ssh-keygen #(這是註解) 生成 SSH key cat /root/.ssh/id_rsa.pub #(這是註解) 顯示 SSH key ``` (https://zhuanlan.zhihu.com/p/454666519) 複製 SSH key 到 Github 中 ![image](https://hackmd.io/_uploads/ryfnoHINT.png) ``` git clone git@github.com:mn12you/wtmh_GUI #(這是註解) 從 github 複製 source code ``` ![image](https://hackmd.io/_uploads/ryJ6nrIEa.png) 以下方的程式碼將測試資料放入鍋做資料夾中,並進入工作資料夾 ``` cp 1001.txt wtmh_GUI/ cd wtmh_GUI ``` 再次 ls 便可看見 souce code ![image](https://hackmd.io/_uploads/BJdvTBIVa.png) 共 11 份檔案 - 1001.txt 測試資料包含 3小時的心電圖資料。 - CWT112.py 連續小波轉換的操作程式,包含怎麼切資料,怎麼做前處理(normalized)還有最後將資料轉換成 112*112 的形式。 - GUI.py 實際的專案檔,讓使用者參錯如何放資料並顯示結果。 - README.md 專案介紹 markdown 形式 - model112.pth 訓練好的模型權重檔 (pytorch) - tfa_morlet_112m.py 實際計算連續小波轉換的程式,CWT112.py 會呼叫他 - CNN.py 模型架構 - Dockerfile.txt 建構 docker image 的 source code - GUI_test.py m3 GUI 所使用的程式相同,但沒有圖形介面輸出,並會將 segmentation,CWT 和 CNN 的運算時間顯示於終端機裡 - docker_run_windows.txt 讓 docker 跑起來的 source code - requirements.txt 除了 default python packages 外還需要下載的 package 可以嘗試在終端機上執行 GUI.py 和 GUI_test.py 執行結果如下 ``` python GUI_test.py ``` ![image](https://hackmd.io/_uploads/rkiLG8IN6.png) ``` python GUI.py ``` ![image](https://hackmd.io/_uploads/Sk_bQ8IV6.png) ## 專案目的 為了加速整體速度,我們從兩個方面著手,模型推論及連續小波轉換。 大家先著手修改 GUI_test.py。 請 CuPY 組和 Pytorch Wavelet 組專注在 CWT112.py中。 onnx 組 則是在 CNN 中。 請大家執行 GUI_test.py 並比較改動前後的時間。 ## 在 docker 環境中使用 IDE 開發 可以參考教學文[連結](https://medium.com/%E5%A4%BE%E7%B8%AB%E4%B8%AD%E6%B1%82%E7%94%9F%E5%AD%98%E7%9A%84%E4%BA%BA%E9%A1%9E/%E4%BD%BF%E7%94%A8visual-studio-code-%E9%81%A0%E7%AB%AF%E6%93%8D%E4%BD%9Cdocker%E7%92%B0%E5%A2%83%E4%B8%8B%E7%9A%84%E6%AA%94%E6%A1%88-ebb35292a5b1) 開啟 VS code,點選 docker ![image](https://hackmd.io/_uploads/BJPlDLLET.png) 點選想要開啟的檔案上面的 open 按鈕,便可開始編輯檔案 ![image](https://hackmd.io/_uploads/B1PIPULNa.png) 對著所屬 container 按右鍵,點選 attaach shell ![image](https://hackmd.io/_uploads/rkJhw8UEa.png) 便可進入 container 的終端操控或執行程式 ![image](https://hackmd.io/_uploads/ryQb_I8VT.png)