libtorch部署yolov5

一、环境

  • Ubuntu 16.04
  • CUDA 10.2
  • OpenCV 3.4.12
  • LibTorch 1.7.0 (gpu)
  • Pytorch 1.7.0

二、得到yolov5 的权重模型

https://github.com/ultralytics/yolov5/blob/master/models/export.py
我使用的是3.0版本
用export.py生成的pt文件既可,但是默认是使用CPU的,使用GPU需要修改。

提示:用的coremltools==4.0版本,之前我有升级到4.1版本运行export.py会报错,用回4.0

用GPU修改如下:

#img = torch.zeros((opt.batch_size, 3, *opt.img_size))  # image size(1,3,320,192) iDetection
img = torch.zeros((opt.batch_size, 3, *opt.img_size)).to(device='cuda')

#model = torch.load(opt.weights, map_location=torch.device('cpu'))['model'].float()
 model = torch.load(opt.weights, map_location=torch.device('cuda'))['model'].float()
 
#model.model[-1].export = True 
 model.model[-1].export = False

在终端运行:

python models/export.py --weights yolov5s.pt --img 640 --batch 1  

三、编译运行libtorch-yolov5

git 工程 https://github.com/yasenh/libtorch-yolov5/

cd /path/to/libtorch-yolo5

wget https://download.pytorch.org/libtorch/cu102/libtorch-cxx11-abi-shared-with-deps-1.7.0.zip

unzip libtorch-cxx11-abi-shared-with-deps-1.6.0.zip

mkdir build && cd build

cmake .. && make

各个libtorch版本:https://blog.csdn.net/lxx4610/article/details/105806017/

把yolov5工程中生成的pt文件复制到libtorch-yolov5的weights文件夹

编译成功后在终端运行:

./libtorch-yolov5 --source ../images/bus.jpg --weights ../weights/yolov5s.torchscript.pt --gpu --view-img

由于原来我用的opencv 版本是3.4.2
报错:核心转储

terminate called after throwing an instance of ‘cv::Exception’
what(): OpenCV(3.4.2) /tmp/build/80754af9/opencv-suite_1535558553474/work/modules/highgui/src/window.cpp:615: error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function ‘cvNamedWindow’

四、opencv源码编译

重新下载opencv源码编译
https://opencv.org/releases/
这次我下载了高版本4.3.0
这个版本可能是高了,也报错。
最后还是改成了3.4.12

unzip opencv-3.4.12.zip
cd opencv--3.4.12

mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D OPENCV_GENERATE_PKGCONFIG=ON -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3.4.12 ..
make -j4
sudo make install

编译安装过程很顺利
在这里插入图片描述
在这里插入图片描述

这时需要重新编译libtorch-yolov5工程:
修改CMakeLists.txt 文件

#find_package(OpenCV REQUIRED)
#修改成

set(OpenCV_DIR "/usr/local/opencv3.4.12/") 
find_package(OpenCV 3.4.12 REQUIRED)

在这里插入图片描述
在这里插入图片描述

五、运行结果

编译过后在终端中运行显示结果:

./libtorch-yolov5 --source ../images/bus.jpg --weights ../weights/yolov5s.torchscript.pt --gpu --view-img

在这里插入图片描述

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
libtorch 是一个用于C++的PyTorch C++前端库,它提供了一个用于构建、训练和部署深度学习模型的高级API。而YOLO(You Only Look Once)是一种流行的目标检测算法,能够在图像中实时地检测和定位多个目标。部署 YOLO 模型需要以下步骤: 1. 安装 PyTorch 和 libtorch:首先,需要安装 PyTorch 和 libtorch。PyTorch 用于训练模型,而 libtorch 用于将训练好的模型部署到 C++ 环境中。 2. 训练 YOLO 模型:在 PyTorch 中,可以使用现成的 YOLO 模型实现,也可以自定义模型。通过加载训练数据集,定义模型结构并训练模型,可以得到一个经过训练的 YOLO 模型。 3. 导出模型:在训练完成后,可以通过 PyTorch 提供的导出功能将模型导出为 ONNX 格式或 TorchScript 格式,以便在 C++ 环境中使用。 4. 使用 libtorch 进行部署:在 C++ 程序中,使用 libtorch 库加载导出的模型,并编写代码进行图像的预处理和后处理。通过调用模型的前向传播函数,可以输入图像并获取模型的输出,即目标检测的结果。 5. 图像的预处理和后处理:在图像的预处理过程中,需要将图像转换为模型可接受的输入格式,例如将图像进行缩放、归一化和通道转换等操作。在模型的输出结果中,会包含被检测到的目标的位置和类别信息,可以通过解析输出结果并进行后处理,如非最大值抑制和边界框绘制等,来得到最终的目标检测结果。 综上所述,部署 YOLO 模型需要使用 libtorch 进行模型的加载和前向传播,同时编写相关的预处理和后处理代码,以实现目标检测任务的部署

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值