# yolo + opencv ## 環境 - host machine: mac - docker: docker desktop for mac - docker image: adnrv/opencv - x window: [XQuartz](https://www.xquartz.org) ## 下載程式與檔案 ``` mkdir yolo cd yolo git clone https://github.com/pjreddie/darknet darknet_joe git clone https://github.com/AlexeyAB/darknet darknet_alexey mkdir weights wget -P weights https://pjreddie.com/media/files/darknet.weights wget -P weights https://pjreddie.com/media/files/yolov3-tiny.weights ``` ## 啟動x window - 偏好設定->安全性,開啟「允許從網路用戶端連線」:![](https://i.imgur.com/PooMxZ4.jpg) - 執行XQuartz - 允許指定host連入:```xhost + 192.168.9.144```。請換成自己host machine的ip ## 建立與啟動容器 - 從dockerhub下載image,約858MB,需要一點時間 ``` docker pull adnrv/opencv ``` - 啟動容器,記得視實際情況修改ip address及掛載的目錄路徑。啟動完成後,就會進入容器內的console上。 ``` docker run --name yolo-opencv -it -e DISPLAY=192.168.9.144:0 -v /tmp/.X11-unix:/tmp/.X11-unix -v /Users/huzhongwei/Development/python/yolo:/root/yolo adnrv/opencv bash ``` - 由於那個image用的ubuntu是19.04,不是LTS,所以在更新與安裝套件時會發生套件清單Not Found的問題。先備份原本的/etc/apt/sources.list,然後編輯它(可以先cp到host machine上做編輯,然後再cp回容器內),把「archive.ubuntu.com」、「security.ubuntu.com」都置換成「old-releases.ubuntu.com」 - 安裝vim,它是最常用的文字編輯器 ``` apt-get update apt-get install vim ``` ## 編繹darknet並進行第一個運作測試 由於啟動容器時已經用mount volume的方式把下載回來的程式與檔案掛載到容器內的/root/yolo目錄上了,所以在容器內可以直接使用它們。 - 建立第一個專案 ``` cd /root/yolo cp -r darknet_alexey 20200513 ``` - 修改Makefile,GPU、CUDNN、AVX、OPENMP、LIBSO都維持原值0,只把opencv改成1 ``` cd 20200513/ vi Makefile ``` - 編繹darknet:```make -j4``` - 執行第一個物件偵測試驗 ``` ./darknet detector test cfg/coco.data cfg/yolov3-tiny.cfg ../weights/yolov3-tiny.weights data/dog.jpg -thresh 0.5 ``` 偵測結果就會透過x window顯示在host machine上:![](https://i.imgur.com/jE6R3Hj.jpg)