iT邦幫忙

2021 iThome 鐵人賽

DAY 19
0
AI & Data

觀賞魚辨識的YOLO全餐系列 第 19

Day 19 - 安裝 AlexeyAB/darknet ON Amazon Linux 2

  • 分享至 

  • xImage
  •  

Day 19 - 安裝 AlexeyAB/darknet ON Amazon Linux 2

今天的任務案安裝 AlexeyAB/darknet 版本的 YOLO,這是 YOLOV4 的主要作者,而這個版本的可以產生更多的衡量指標,當然,也可以使用 YOLOV4 來進行影像辨識,只是安裝難度比較高。

以下的安裝設定需使用下列的 AWS EC2:

  • EC2 Instance type: g4dn.2xlarge
  • AMI ID: ami-0cccf4ac9f2e9bd92
  • AMI 名稱: Deep Learning AMI (Amazon Linux 2) Version 49.0

https://ithelp.ithome.com.tw/upload/images/20210919/20129510DFcYiCaFj6.png
圖 1、EC2 組態資訊

啟動 EC2 後,透過 ssh 協定登錄到 EC2 的主機上,首先更新所有套件。

sudo yum update -y

根據 AlexeyAB/darknet github 官網上的說明,需要先安裝下列元件:

檢查 cmake 版本 >= 3.18

檢查版本是否符合系統需求,檢查 cmake,版本為 3.20.4,符合大於 3.18 的需求,使用 rpm 指令檢查的結果為自行安裝,非用 yum 安裝的。

cmake --version
which cmake
rpm -qf /usr/local/bin/cmake

https://ithelp.ithome.com.tw/upload/images/20210919/20129510NZ7bSJQB4y.png
圖 2、檢查 cmake 版本

以下為將原先的 cmake 更新到 3.21 版,到 cmake 官方網站下載原始檔,並安裝需要的開發套件,重新編譯、安裝。原則上我們的安裝都是在使用者目錄下,所以下載前都會先到使用者目錄。

sudo yum remove cmake cmake3
sudo yum install mesa-libGL mesa-libGL-devel -y
cd ~
mkdir cmake && cd cmake
wget https://github.com/Kitware/CMake/releases/download/v3.21.0/cmake-3.21.0.tar.gz
tar zxfv cmake-3.21.0.tar.gz
cd cmake-3.21.0/
./bootstrap # 找尋目前系統所擁有的組態,大約要 20 分鐘左右,產生 Makefile
make # 需要 20 分鐘左右編譯
sudo make install # 安裝需要有管理者權限,因為會安裝到 /usr/local/bin 目錄
cd ~

檢查 CUDA 版本 >= 10.2

檢查 CUDA 的版本,發現在這個 AMI 中安裝了多個版本的 CUDA 版本,使用 nvidia-smi 觀看 GPU 的運行,發現 GPU 使用的是 11.0 ,但是目前可用的版本卻是 10.0 ,整個系統安裝了 10.0, 10.1, 10.2, 11.1. 11.1 等 5 個版本。

nvidia-smi
nvcc --version
ls -ld /usr/local/cuda*

https://ithelp.ithome.com.tw/upload/images/20210919/20129510g7fWHJhF75.png
圖 3、檢查 CUDA 版本

刪掉原來的鏈結,並重新指定,這樣就可以對應到 CUDA 11.0 版。

sudo rm /usr/local/cuda
sudo ln -s /usr/local/cuda-11.0 /usr/local/cuda
export CUDA_BIN_PATH="/usr/local/cuda-11.0/bin"
export CUDA_HOME="/usr/local/cuda-11.0/"
export CUDA_PATH="/usr/local/cuda-11.0/"

https://ithelp.ithome.com.tw/upload/images/20210919/20129510V07OvcfTeq.png
圖 4、設定 CUDA 版本為 11.0

檢查 cuDNN 版本 >= 8.0.2

cuDNN 的版本檢查為下列指令,會顯示出 cuDNN 的版本號,這個 AMI 中安裝的版本是比 8.0.2 還少,可以參考 Installing cuDNN On Linux 這個來安裝,因為還要去 nVidia 註冊,才能下載,所以就不去管它了。(很任性的作者,討厭一直註冊新帳號)

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

檢查 OpenCV 版本>= 2.4

使用以下三種方法來找:

  1. 透過套件管理程式: rpm
  2. linux內的套件組態:pkg-config
  3. 整個磁盤的文件:locate / find

前兩種都沒有找到,第三種有找到,但是不完整,所以只好自行安裝。

rpm -qa | grep opencv
pkg-config --cflags --libs opencv4
sudo updatdb 
locate opencv4

安裝 opencv 4.2 的指令如下,安裝的內容包含了 opencv 與他的延伸模組 contrib :

sudo yum install git cmake gcc-c++
mkdir opencv && cd opencv
# 下載原始檔 
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.2.0.zip
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.2.0.zip
unzip opencv.zip 
unzip opencv_contrib.zip 

mv opencv-4.2.0/ opencv
mv opencv_contrib-4.2.0/ opencv_contrib
mkdir -p build && cd build
# ../opencv_contrib/modules/ 是額外模組, -DOPENCV_GENERATE_PKGCONFIG=ON 是建立套件的安裝組態檔,../opencv 是 opencv 原始檔所在目錄,
cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules -DOPENCV_GENERATE_PKGCONFIG=ON ../opencv
make # 大約需要一個小時編譯
sudo make install # 安裝OpenCV,這個很快

# 確認 opencv 的分享庫 (share library) 可以讓其他程式存取
more /etc/ld.so.conf.d/opencv.conf
sudo ldconfig -v

https://ithelp.ithome.com.tw/upload/images/20210919/201295107wD7NrDc9L.png
圖 5、啟用 OpenCV 的分享庫

設定 OpenCV 的安裝環境,在使用者目錄下的 .bashrc 中加上這兩行,如下圖所示。

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib64/pkgconfig/
export PKG_CONFIG_PATH

https://ithelp.ithome.com.tw/upload/images/20210919/20129510X0kdz6EXCR.png
圖 6、設定使用者啟動檔

最後再來檢查 opencv 安裝情形,結果如下圖。

pkg-config --cflags --libs opencv4

https://ithelp.ithome.com.tw/upload/images/20210919/20129510eKT3JhcRxc.png
圖 7、設定使用者啟動檔

檢查 GPU with Compute Capability (CC)>= 3.0
直接連上 GPU with Compute Capability (CC) 網站,直接找 Tesla T4 的 GPU 型號,就可以看到,如下圖,版本號是 7.5。

https://ithelp.ithome.com.tw/upload/images/20210919/20129510nCHwP57Dcn.png
圖 8、GPU 計算架構型號

安裝 AlexeyAB/darknet

檢查完相關軟體後,開始安裝 AlexeyAB/darknet,輸入以下指令分別為設定好目錄,下載原始檔,建立編譯環境,編譯安裝。接著就是下載訓練好的 yolov4 的權重檔,然後進行辨識,執行畫面如下圖,可以發現跟 yolov3 比起來,多辨識出了一個盆栽植物 (potted plant)。

cd 
mkdir AlexeyAB && cd AlexeyAB
git clone https://github.com/AlexeyAB/darknet .
mkdir build_release && cd build_release
cmake ..
cmake --build . --target install --parallel 8

cd ..
wget https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v3_optimal/yolov4.weights
./darknet detector test ./cfg/coco.data ./cfg/yolov4.cfg ./yolov4.weights data/dog.jpg

https://ithelp.ithome.com.tw/upload/images/20210919/20129510AaEbxLHlqk.png
圖 9、執行 yolov4 進行辨識

https://ithelp.ithome.com.tw/upload/images/20210919/20129510RXW3FRio0g.jpg
圖 10、 yolov4 辨識結果

參考資料


上一篇
Day 18 - 深入討論 YOLO 相關設定
下一篇
Day 20 - 重新檢視 mAP, F1, IoU, Precision-Recall 精準度
系列文
觀賞魚辨識的YOLO全餐38
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言