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