Yolo5使用


Yolov5_训练and识别

环境配置

python 3.8.5

安装conda

wget -c https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
chmod 777 Miniconda3-latest-Linux-x86_64.sh
sh Miniconda3-latest-Linux-x86_64.sh
vim ~/.bashrc
export  PATH="/home/gaoxiang/miniconda3/bin:"$PATH
source ~/.bashrc


添加源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
conda config --set show_channel_urls yes 
conda config --get channels

conda env list

conda create -n name python=3.8.5

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python

pip install --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple torch torchvision

pip install numpy scipy seaborn

如果还有没有安装上的请继续安装。

github源

主要参考的是官方yolov5.
https://github.com/ultralytics/yolov5

训练自己的任务

训练前的配置

主要采用COCO数据集,配置好上述的环境后,就可以进行使用。

首先更改你的dataset.yaml文件

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: /home/wkp/yolov5-master  # 数据集目录
train: images  # 图片路径
val: images  # 图片路径
test:  /home/wkp/yolov5-master/test # 测试图像,非必填

# Classes
nc: 201  # number of classes
names: ['pl80', 'w9', 'p6', 'ph4.2', 'i8', 'w14', 'w33', 'pa13', 'im', 'w58', 'pl90', 'il70', 'p5', 'pm55', 'pl60', 'ip', 'p11', 'pdd', 'wc', 'i2r', 'w30', 'pmr', 'p23', 'pl15', 'pm10', 'pss', 'w1', 'p4', 'w38', 'w50', 'w34', 'pw3.5', 'iz', 'w39', 'w11', 'p1n', 'pr70', 'pd', 'pnl', 'pg', 'ph5.3', 'w66', 'il80', 'pb', 'pbm', 'pm5', 'w24', 'w67', 'w49', 'pm40', 'ph4', 'w45', 'i4', 'w37', 'ph2.6', 'pl70', 'ph5.5', 'i14', 'i11', 'p7', 'p29', 'pne', 'pr60', 'pm13', 'ph4.5', 'p12', 'p3', 'w40', 'pl5', 'w13', 'pr10', 'p14', 'i4l', 'pr30', 'pw4.2', 'w16', 'p17', 'ph3', 'i9', 'w15', 'w35', 'pa8', 'pt', 'pr45', 'w17', 'pl30', 'pcs', 'pctl', 'pr50', 'ph4.4', 'pm46', 'pm35', 'i15', 'pa12', 'pclr', 'i1', 'pcd', 'pbp', 'pcr', 'w28', 'ps', 'pm8', 'w18', 'w2', 'w52', 'ph2.9', 'ph1.8', 'pe', 'p20', 'w36', 'p10', 'pn', 'pa14', 'w54', 'ph3.2', 'p2', 'ph2.5', 'w62', 'w55', 'pw3', 'pw4.5', 'i12', 'ph4.3', 'phclr', 'i10', 'pr5', 'i13', 'w10', 'p26', 'w26', 'p8', 'w5', 'w42', 'il50', 'p13', 'pr40', 'p25', 'w41', 'pl20', 'ph4.8', 'pnlc', 'ph3.3', 'w29', 'ph2.1', 'w53', 'pm30', 'p24', 'p21', 'pl40', 'w27', 'pmb', 'pc', 'i6', 'pr20', 'p18', 'ph3.8', 'pm50', 'pm25', 'i2', 'w22', 'w47', 'w56', 'pl120', 'ph2.8', 'i7', 'w12', 'pm1.5', 'pm2.5', 'w32', 'pm15', 'ph5', 'w19', 'pw3.2', 'pw2.5', 'pl10', 'il60', 'w57', 'w48', 'w60', 'pl100', 'pr80', 'p16', 'pl110', 'w59', 'w64', 'w20', 'ph2', 'p9', 'il100', 'w31', 'w65', 'ph2.4', 'pr100', 'p19', 'ph3.5', 'pa10', 'pcl', 'pl35', 'p15', 'w7', 'pa6', 'phcs', 'w43', 'p28', 'w6', 'w3', 'w25', 'pl25', 'il110', 'p1', 'w46', 'pn-2', 'w51', 'w44', 'w63', 'w23', 'pm20', 'w8', 'pmblr', 'w4', 'i5', 'il90', 'w21', 'p27', 'pl50', 'pl65', 'w61', 'ph2.2', 'pm2', 'i3', 'pa18', 'pw4'] #数据类

自己的数据按照上述的路径进行修改。

打标签

图像和标签分别放在 labels和images两个目录下,可以通过makesense.ai打标签,但更推荐开源标签软件-LabelImg。

将标签导出为YOLO 格式,.txt每个图像一个文件(如果图像中没有对象,则不需要.txt文件)。该*.txt文件规格有:

  • 每个对象一行
  • 每一行都是class x_center y_center width height格式。
  • 框坐标必须采用标准化 xywh格式(从 0 - 1)。如果您的箱子以像素为单位,划分x_center并width通过图像宽度,y_center并height通过图像高度。
  • 类号是零索引的(从 0 开始)。


如图所示,分别代表了分类0的矩形的x\y宽高。

数据集整理

将自己的数据集按照以上的方式进行一个整理,然后进行学习训练。

例如:

数据集/iamges/im0.jpg   #图像
数据集/labels/im0.txt   #标签

选择一个预训练模型

选择一个预训练模型开始训练。这里我们选择YOLOv5s,这是可用的最小和最快的模型。

进行训练

YOLOv5s 5 epochs $ python train.py --img 640 --batch 16 --epochs 5 --data dataset.yaml --weights yolov5s.pt

训练结果




目标检测

运行程序进行识别(将识别模型改成自己的进行使用)

$ python detect.py --source 0  # webcam
                            file.jpg  # image 
                            file.mp4  # video
                            path/  # directory
                            path/*.jpg  # glob
                            'https://youtu.be/NUsoVlDFqZg'  # YouTube video
                            'rtsp://example.com/media.mp4'  # RTSP, RTMP, HTTP stream

训练coco模型可以

$ python train.py --data coco.yaml --cfg yolov5s.yaml --weights '' --batch-size 64
                                         yolov5m                                40
                                         yolov5l                                24
                                         yolov5x                                16

树莓派安装Berryconda+pytorch

安装conda

Berryconda

不建议安装Miniconda的armv7l二进制包,它的包都很久没有更新了。直接使用Berryconda,armv7l版本可以在rpi4上正常使用,下载并安装:

wget https://github.com/jjhelmus/berryconda/releases/download/v2.0.0/Berryconda3-2.0.0-Linux-armv7l.sh
chmod a+x Berryconda3-2.0.0-Linux-armv7l.sh
./Berryconda3-2.0.0-Linux-armv7l.sh

安装结束后,python 和 conda 还不能正常使用,我们还需要配置 .bashrc 文件,我们打开 ~/.bashrc,在配置文件最后添加以下语句:


export PATH="/home/pi/berryconda3:$PATH"

配置完成后,我们将更新以下配置:

source ~/.bashrc

miniconda

uname -a

>> Linux raspberrypi 4.19.118-v7l+ #1311 SMP Mon Apr 27 14:26:42 BST 2020 armv7l GNU/Linux


wget http://repo.continuum.io/miniconda/Miniconda3-latest-Linux-armv7l.sh

sudo bash Miniconda3-latest-Linux-armv7l.sh

export PATH="/root/miniconda3/bin:$PATH"

source ~/.bashrc


conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/


conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/

conda config --set show_channel_urls yes


sudo chown pi:pi -R miniconda3
conda update conda

创建虚拟环境

conda create -n pytorch python=3.8

pytorch

安装依赖

source activate pytorch

sudo apt-get install libopenblas-dev m4 libblas-dev cmake

conda install opencv numpy pyyaml cython

pip install numpy==1.16

git clone https://github.com/pytorch/pytorch.git
cd pytorch
git checkout v1.2.0
git submodule update --init --recursive
export NO_CUDA=1
export NO_DISTRIBUTED=1
export NO_MKLDNN=1
export NO_TEST=1

文章作者: 万鲲鹏
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 万鲲鹏 !
评论
  目录