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

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 辨识结果

参考资料


<<:  [Day04] 空降主管的战地生存术

>>:  Day06:爸爸这麽做都是为你好

Python - Python SimpleHTTPServerWithUpload 参考笔记

Python - Python SimpleHTTPServerWithUpload 参考笔记 参考...

Day.20 从零开始 - 实务需求学SQL_1

今天的主题来透过应用实例复习常用SQL语法,普通的解释相对无聊~所以我们边举例边看过程中可能遇到的...

目前销售流程遇到什麽问题?

在探讨这个问题之前,先来分享我们目前的销售流程 搜集名单 透过脸书投放名单型广告,或是 Google...

[Day25] React - 建立React元素

建立元素 我们可以透过以下函式来建立一个React元素: React.cloneElement(el...

AE卷轴制作5-Day6

1.将要遮罩的Shape>Pre compose 2.最後就是最简单的部分,找张图用遮罩就完成...