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

Day 19 - 安装 AlexeyAB/darknet ON Amazon Linux 2_第1张图片
图 1、EC2 组态资讯

启动 EC2 后,透过 ssh 协定登录到 EC2 的主机上,首先更新所有套件。

sudo yum update -y

根据 AlexeyAB/darknet github 官网上的说明,需要先安装下列元件:

  • CMake >= 3.18。
  • Powershell:与 Windows 环境相关,不需安装。
  • CUDA >= 10.2。
  • OpenCV >= 2.4。
  • cuDNN >= 8.0.2。
  • GPU with Compute Capability (CC) >= 3.0:

检查 cmake 版本 >= 3.18

检查版本是否符合系统需求,检查 cmake,版本为 3.20.4,符合大于 3.18 的需求,使用 rpm 指令检查的结果为自行安装,非用 yum 安装的。

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

Day 19 - 安装 AlexeyAB/darknet ON Amazon Linux 2_第2张图片
图 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*

Day 19 - 安装 AlexeyAB/darknet ON Amazon Linux 2_第3张图片
图 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/"

Day 19 - 安装 AlexeyAB/darknet ON Amazon Linux 2_第4张图片
图 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

Day 19 - 安装 AlexeyAB/darknet ON Amazon Linux 2_第5张图片
图 5、启用 OpenCV 的分享库

设定 OpenCV 的安装环境,在使用者目录下的 .bashrc 中加上这两行,如下图所示。

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

Day 19 - 安装 AlexeyAB/darknet ON Amazon Linux 2_第6张图片
图 6、设定使用者启动档

最后再来检查 opencv 安装情形,结果如下图。

pkg-config --cflags --libs opencv4

Day 19 - 安装 AlexeyAB/darknet ON Amazon Linux 2_第7张图片
图 7、设定使用者启动档

检查 GPU with Compute Capability (CC)>= 3.0
直接连上 GPU with Compute Capability (CC) 网站,直接找 Tesla T4 的 GPU 型号,就可以看到,如下图,版本号是 7.5。

在这里插入图片描述
图 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

Day 19 - 安装 AlexeyAB/darknet ON Amazon Linux 2_第8张图片
图 9、执行 yolov4 进行辨识

Day 19 - 安装 AlexeyAB/darknet ON Amazon Linux 2_第9张图片
图 10、 yolov4 辨识结果

参考资料

  • Install Cmake 3 on AWS Linux, https://www.matbra.com/2017/12/07/install-cmake-on-aws-linux.html
  • Yolo v4, v3 and v2 for Windows and Linux, https://github.com/AlexeyAB/darknet
  • How to install OpenCV on Amazon Linux?, https://stackoverflow.com/questions/34244606/how-to-install-opencv-on-amazon-linux/34245634
  • Installation in Linux, https://docs.opencv.org/master/d7/d9f/tutorial_linux_install.html
  • Package opencv was not found in the pkg-config search path, https://stackoverflow.com/questions/15320267/package-opencv-was-not-found-in-the-pkg-config-search-path
  • cmake-3.18.1, https://cmake.org/files/v3.18/cmake-3.18.1.tar.gz
  • Installing cuDNN On Linux, https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#installlinux-tar
  • Library for Windows and Linux, Ubuntu(x86_64, armsbsa, PPC architecture), https://developer.nvidia.com/rdp/cudnn-archive

你可能感兴趣的:(YOLO,linux,运维,服务器,aws,ec2)