yolov5模型训练及文件类型转换

部署运行你感兴趣的模型镜像

以VOC数据集为例

在voc文件夹打开终端

python voc_label.py

打开voc2007,打开终端(把生成的labels文件下的txt文件移至图片目录)

mv lables/*.txt JPEGImages/

pycharm打开yolov5文件,复制一份coco128.yaml

终端运行

cp data/coco128.yaml data/garbage.yaml

在复制后的文件修改类别和类别名称

复制models 中的yolov5s.yaml文件

cp models/yolov5s.yaml models/garbage_yolov5.yaml

在复制后的文件中修改类别

训练模型

python train.py --weights yolov5s.pt --cfg models/garbage_yolov5.yaml --data/gatbage.yaml --epoch 10 --batch-size 8

完成后将best.pt文件进行wts转换

wts文件转换

git clone https://github.com/wang-xinyu/tensoorrtx.git

将文件tensorrtx/yolov5/gen_wts.py复制到yolov5文件下

在yolov5文件下打开终端

执行生成yolov5s.wts文件

python gen_wts.py --weights best.pt

在nano上将wts文件转换为yolov5s.engine

cd /home/mx/xj_main/yolo_trt
mkdir build
cp ./name.wts /home/mx/xj_main/yolo_trt
cd /home/mx/xj_main/yolo_trt/build
cmake..	
make
sudo ./yolov5 -s name.wts name.engine s #尺寸根据实际训练的尺寸调整

错误:

运行yolov5-5.0出现AttributeError: Can‘t get attribute ‘SPPF‘ 正确解决方法

将下面代码加到model/common.py里面             

import warnings
class SPPF(nn.Module):
    # Spatial Pyramid Pooling - Fast (SPPF) layer for YOLOv5 by Glenn Jocher
    def __init__(self, c1, c2, k=5):  # equivalent to SPP(k=(5, 9, 13))
        super().__init__()
        c_ = c1 // 2  # hidden channels
        self.cv1 = Conv(c1, c_, 1, 1)
        self.cv2 = Conv(c_ * 4, c2, 1, 1)
        self.m = nn.MaxPool2d(kernel_size=k, stride=1, padding=k // 2)
 
    def forward(self, x):
        x = self.cv1(x)
        with warnings.catch_warnings():
            warnings.simplefilter('ignore')  # suppress torch 1.9.0 max_pool2d() warning
            y1 = self.m(x)
            y2 = self.m(y1)
            return self.cv2(torch.cat([x, y1, y2, self.m(y2)], 1))

用DeepStream部署(nano)

克隆项目

git clone https://github.com/DanaHan/Yolov5-in-Deepstream-5.0.git

进入Yolov5-in-Deepstream-5.0/Deepstream 5.0/nvdsinfer_custom_impl_Yolo/目录下

修改nvdsparsebbox_Yolo.cpp文件中的类型数量

static const int NUM_CLASSES_YOLO = 2;

更改自己 的模型类型数量

保存编译

make

返回上级目录,进入Yolov5-in-Deepstream-5.0/Deepstream 5.0/

将生成的.engine文件和libmyplugins.so放到目录下

修改DeepStream处理流程配置文件deepstream_app_config_yoloV5.txt      

         

...
 
[source0]
#Type - 1=CameraV4L2(usb摄像头) 2=URI(文件) 3=MultiURI
type=1
camera-width=2560
camera-height=720
camera-fps-n=30
camera-fps-d=1
 
...
 
 
[streammux]
...
width=1344
height=376
...
 
[primary-gie]
...
model-engine-file=best.engine
...
 
[tracker]
enable=0
tracker-width=512
tracker-height=320
ll-lib-file=/opt/nvidia/deepstream/deepstream-5.1/lib/libnvds_mot_klt.so
 
...

修改[source0],改为用摄像头实时跑识别,需要加上长宽和帧率设置。

[streammux]显示窗口改为1344*376

[primary-gie]修改权重路径

[tracker]改为deepstream5.1的地址

修改config_infer_primary_yoloV5.txt

...
 
model-engine-file=best.engine
 
...
 
num-detected-classes=2
 
...
 
custom-lib-path=nvdsinfer_custom_impl_Yolo/libnvdsinfer_custom_impl_Yolo.so
 
...

                             

修改权重路径

修改识别类型数量,原本为80

修改编译文件路径

注意,文件里还有个labels文件路径的配置

labelfile-path=labels.txt

文件夹里是没有labels                                    .txt的,补上labels.txt标签类型文件

执行命令运行DeepStream

LD_PRELOAD=./libmyplugins.so deepstream-app -c deepstream_app_config_yoloV5.txt

您可能感兴趣的与本文相关的镜像

Yolo-v5

Yolo-v5

Yolo

YOLO(You Only Look Once)是一种流行的物体检测和图像分割模型,由华盛顿大学的Joseph Redmon 和Ali Farhadi 开发。 YOLO 于2015 年推出,因其高速和高精度而广受欢迎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值