当前位置:   article > 正文

【基于YOLOv3的行人检测项目】_yolo行人目标检测

yolo行人目标检测


项目已打包放入百度云

1、环境配置

1.1 ubantu

本项目是基于ubantu20.04,主要由于在训练过程中 Linux 可以更好的调动硬件性能。

1.2 GPU环境搭建

以我的笔记本电脑为例,CPU 是 Intel® Core™ i7-8750H CPU @ 2.20GHz,GPU 是 GeForce GTX 1060。然后我分别用 CPU 和 GPU 进行 yolov3 训练相同的一组数据,时长对比如下图。CPU 训练时长在 220s,GPU 在1s 左右,差距在 220 倍。由此可见,GPU 环境搭建的必要性。
在这里插入图片描述

1.2.1 安装NVDIA显卡驱动

首先我们需要禁用 Ubuntu 自带的驱动 nouveau,具体操作如下:
打开系统的 blacklist。

sudo vim /etc/modprobe.d/blacklist-nouveau.conf
  • 1

在 blacklist 中添加禁用 nouveau 的语句。

blacklist nouveau
options nouveau modeset=0
  • 1
  • 2

更新 initramfs。

sudo update-initramfs -u
  • 1

重启系统。

sudo reboot
  • 1

然后我们查找系统推荐的 nvdia 驱动。

ubuntu-drivers devices
  • 1

最后我们安装系统推荐的 nvdia 驱动。

sudo ubuntu-drivers autoinstall
  • 1

之后重启就可以查看 gpu 信息。
Alt

1.2.2 安装CUDA

我们从CUDA官网 下载并安装下图所选。

安装完成后,需要配置环境变量,编辑~/.bashrc 文件,在末尾添加。

export CUDA_HOME=/usr/local/cuda-11.7
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${CUDA_HOME}/lib64
export PATH=${CUDA_HOME}/bin:${PATH}
  • 1
  • 2
  • 3

然后查看 cuda 是否安装成功。
在这里插入图片描述

1.2.3 安装cuDNN

从 cuDNN 官网下载相应的版本(cuDNN Library for Linux (x86_64))的 tar 压缩包。解压后,执行以下命令,拷贝到相应的文件。

sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include
sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
  • 1
  • 2
  • 3

之后便可以查看 cuDNN。

cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
  • 1

至此,GPU 环境搭建完成。

1.3 项目环境搭建

首先在我们的 Ubuntu 系统上,使用 git 命令直接克隆 YOLOv3 的源码工程:

git clone https://github.com/pjreddie/darknet
  • 1

YOLOv3 使用的是开源的神经网络框架 Darknet53,有 CPU 和 GPU 两种模式。默认使用的是 CPU模式,然后我们修改 darknet 目录下的 Makefile 文件,将 CPU 模式改为 GPU 模式。把 GPU 和 CUDNN 都改为 1。

GPU=1
CUDNN=1
OPENCV=0
OPENMP=0
DEBUG=0
  • 1
  • 2
  • 3
  • 4
  • 5

从 NVDIA 官网查找自己的 GPU 算力,比如我的 GTX1060 算力为 6.1。

# This is what I use, uncomment if you know your arch and want to specify
ARCH= -gencode arch=compute_61,code=compute_61
  • 1
  • 2

然后修改 NVCC 的路径。

NVCC=/usr/local/cuda-11.7/bin/nvcc
  • 1

修改完后,在 darknet 目录下执行 make。
至此,项目环境已经搭建完成。

1.4 环境测试

下载官方提供的训练好的权重文件。

wget https://pjreddie.com/media/files/yolov3.weights
  • 1

测试识别对象。

./darknet detector test cfg/coco.data cfg/yolov3.cfg yolov3.weights data/person.jpg
  • 1

在上述命令中,detect 表示调用 darknet 的对象识别功能,coco.data 是记录配置文件位置 yolov3.cfg 是配置文件,包含各层网络的参数、要识别的物体种类数等,yolo.weights 是上一步下载的权重数据,data/person.jpg 是要进行对象识别的照片。

命令执行完成后,将会把识别结果生成到 predictions.jpg。打开图片如下图所示:

2、使用说明

2.1 检测

在”yolov3”目录下打开终端运行。

2.1.1 视频检测

python3 yolov3_test_person.py --video=test/test.flv --device 'cpu'
python3 yolov3_test_person.py --video=test/test.flv --device 'gpu'
  • 1
  • 2

效果如图所示
在这里插入图片描述

2.1.2 图片检测

python3 yolov3_test_person.py --image=test/test.jpg --device 'cpu'
python3 yolov3_test_person.py --image=test/test.jpg --device 'gpu'
  • 1
  • 2

效果如图所示
在这里插入图片描述

2.1.3 摄像头检测

python3 yolov3_test_person.py --device 'cpu'
python3 yolov3_test_person.py --device 'gpu'
  • 1
  • 2

其中yolov3_test_person.py可以替换成yolov3.py,是使用官方权重进行测试。yolov3_test_person.py默认使用的是person_32_2000.weights,如果想使用person_16_10000.weights只需修改modelWeights 即可。
注:图片或视频保存在输入的目录,而不是save,比如上述文件就是保存在test文件夹,摄像头视频保存在yolov3文件夹下。

2.2 训练

训练时,默认环境是GPU=1,cuDNN=1,直接在目录“yolov3/darknet”下,运行以下命令,最后文件保存在“yolov3/darknet/backup”目录下。

make
./darknet detector train cfg/person.data cfg/person.cfg darknet53.conv.74 -gpus 0>&1 > tiny.log
  • 1
  • 2

注:如果想要自己制作训练集训练,可以参考以下博客
https://redstonewill.blog.csdn.net/article/details/117425017

2.3 可视化

可视化采用了loss 和 IOU 图。
可视化时,将tiny.log拷贝到“yolov3/darknet/visualization”目录下,然后运行visualization_loss.py。

python3 visualization_loss.py
  • 1

可视化效果如下图所示
在这里插入图片描述
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/707870
推荐阅读
相关标签
  

闽ICP备14008679号