以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
4474

被折叠的 条评论
为什么被折叠?



