Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Pytoorch轻松学 – RetinaNet自定义对象检测

Pytoorch轻松学 – RetinaNet自定义对象检测

作者头像
OpenCV学堂
发布于 2023-11-15 09:28:46
发布于 2023-11-15 09:28:46
19400
代码可运行
举报
运行总次数:0
代码可运行

点击上方蓝字关注我们

微信公众号:OpenCV学堂 关注获取更多计算机视觉深度学习知识

RetinaNet网络介绍

2017发布,实现了一阶段网络首次在精度方面超过二阶段网络的经典网络,作者最大的一个创新就是在训练损失函数方面,论文比较了CE、BCE、以及论文提出感知损失函数(FL),最后说明感知损失可以有效解决一阶段网络训练中的样本不平衡现象,从而取得更佳的训练效果。论文中提出的感知损失函数如下:

最终RetinaNet网络结构如下:

数据集准备与制作

自己百度收集了一个无人机与飞鸟的数据集,其中训练集270张图像,测试集26张图像。

使用labelImg工具完成标注,工具下载地址:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://gitee.com/opencv_ai/opencv_tutorial_data/tree/master/tools

三:模型训练

制作好数据集之后,模型训练就成为一件很简单事情,基于OpenMV工具软件,零代码即可实现模型训练。运行下面界面如下:

总计训练了25个轮次以后,发现效果已经是相当的不错了,直接导出ONNX格式RetinaNet模型文件。

把模型转换为ONNX格式,Pytorch是原生支持的,只需要把通过torch.onnx.export接口,填上相关的参数,然后直接运行就可以生成ONNX模型文件。相关的转换代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
model = tv.models.detection.retinanet_resnet50_fpn(pretrained=True)
dummy_input = torch.randn(1, 3, 1333, 800)
model.eval()
model(dummy_input)
im = torch.zeros(1, 3, 1333, 800).to("cpu")
torch.onnx.export(model, im,
                    "retinanet_resnet50_fpn.onnx",
                    verbose=False,
                    opset_version=11,
                    training=torch.onnx.TrainingMode.EVAL,
                    do_constant_folding=True,
                    input_names=['input'],
                    output_names=['output'],
                    dynamic_axes={'input': {0: 'batch', 2: 'height', 3: 'width'}}
                  )

运行时候控制台会有一系列的警告输出,但是绝对不影响模型转换,影响不影响精度我还没做个仔细的对比。

模型转换之后,可以直接查看模型的输入与输出结构,图示如下:

推理运行

推理部分的代码很简单,只有三十几行,Python就是方便使用,这里最需要注意的是输入图像的预处理必须是RGB格式,需要归一化到0~1之间。对得到的三个输出层分别解析,就可以获取到坐标(boxes里面包含的实际坐标,无需转换)。基于OpenMV工具软件,可以实现一键零代码推理演示,效果如下:

推荐阅读

YOLOv8修改+注意力模块 训练与部署

普通PC上CPU运行YOLOv5推理 400+FPS

Ubuntu系统下编译OpenCV4.8源码记录

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-11-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OpenCV学堂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Pytorch轻松学-RetinaNet模型导出与C++部署
亲测以上模型除了SSD导出ONNX格式无法被ONNXRUNTIME、OpenVINO2022解析之外,其他模型导出均可正常加载部署并推理使用。SSD导出无法使用Pytorch官方已经说了,是因为torchvision的Bug,但是好像还一直没有解决。RetinaNet支持自定义模型训练,这个我已经集成到OpenMV工具软件中,准备好数据集支持一键零代码训练自定义数据,导出ONNX模型。单独导出RetinaNet模型为ONNX的脚本如下:
OpenCV学堂
2023/01/04
1.2K0
Pytorch轻松学-RetinaNet模型导出与C++部署
轻松学Pytorch之Faster-RCNN模型ONNX导出与部署
点击上方蓝字关注我们 微信公众号:OpenCV学堂 关注获取更多计算机视觉与深度学习知识 前言 自从我写了这个系列文章以后,已经快两年时间了,我经常被人问到pytorch中的Faster-RCNN是否可以导出ONNX格式,这个问题后来pytorch官方有文档了,可以直接导出。后来第二个问题就是导出ONNX格式文件无法部署,其实原因在于第一条是因为官方导出的那个模式是个超像素的,直接把脚本拿过来用是能导出Faster-RCNN但是无法被ONNXRUNTIME使用,导致后来一系列的问题都无解了。这个就是所谓的死
OpenCV学堂
2022/03/28
1.9K0
轻松学Pytorch之Deeplabv3推理
Torchvision框架中在语义分割上支持的是Deeplabv3语义分割模型,而且支持不同的backbone替换,这些backbone替换包括MobileNetv3、ResNet50、ResNet101。其中MobileNetv3版本训练数据集是COCO子集,类别跟Pascal VOC的20个类别保持一致。这里以它为例,演示一下从模型导出ONNX到推理的全过程。
OpenCV学堂
2023/01/04
9560
轻松学Pytorch之Deeplabv3推理
使用onnx对pytorch模型进行部署
1.onnx runtime安装# 激活虚拟环境conda activate env_name # env_name换成环境名称# 安装onnxpip install onnx # 安装onnx runtimepip install onnxruntime # 使用CPU进行推理# pip install onnxruntime-gpu # 使用GPU进行推理复制代码2.导出模型import torch.onnx # 转换的onnx格式的名称,文件后缀需为.onnxonnx_file_name = "xx
阿珍
2022/09/27
8810
30分钟吃掉pytorch转onnx及推理
pytorch模型线上部署最常见的方式是转换成onnx然后再转成tensorRT 在cuda上进行部署推理。
lyhue1991
2024/06/14
7940
30分钟吃掉pytorch转onnx及推理
FastAPI + ONNX 部署机器学习模型最佳实践
随着人工智能的迅猛发展,将训练好的模型部署到生产环境中,为用户提供实时预测服务,已成为众多企业和开发者关注的重点。然而,模型部署并非易事,涉及到模型格式转换、服务框架选择、性能优化等多个方面。本篇文章将介绍如何结合 FastAPI 和 ONNX,实现机器学习模型的高效部署,并分享其中的最佳实践。
别惹CC
2025/01/13
4830
深度探索ONNX模型部署
这篇文章从多个角度探索了ONNX,从ONNX的导出到ONNX和Caffe的对比,以及使用ONNX遭遇的困难以及一些解决办法,另外还介绍了ONNXRuntime以及如何基于ONNXRuntime来调试ONNX模型等,后续也会继续结合ONNX做一些探索性工作。
计算机视觉
2021/03/17
5.1K0
深度探索ONNX模型部署
学懂 ONNX,PyTorch 模型部署再也不怕!
知道你们在催更,这不,模型部署入门系列教程来啦~在前二期的教程中,我们带领大家成功部署了第一个模型,解决了一些在模型部署中可能会碰到的困难。今天开始,我们将由浅入深地介绍 ONNX 相关的知识。ONNX 是目前模型部署中最重要的中间表示之一。学懂了 ONNX 的技术细节,就能规避大量的模型部署问题。
OpenMMLab 官方账号
2022/05/25
14.1K0
学懂 ONNX,PyTorch 模型部署再也不怕!
轻松学pytorch-构建卷积神经网络
大家好,这个是我的pytorch学习笔记第三篇,主要是使用pytorch来构建一个简单的卷积神经网络,完成mnist手写字符识别。涉及到主要知识点是如何使用torch.nn.Module这个基类来实现一个网络结构定义。这个基类中最重要的是实现自己的forward方法,这个也是自定义网络结构的实现方法。我实现的简单CNN_Net类的代码如下:
OpenCV学堂
2020/05/26
8030
轻松学pytorch-构建卷积神经网络
TorchScript 系列解读(一):初识 TorchScript
小伙伴们好呀,不久前我们推出了模型部署入门系列教程,受到了大家的一致好评,也收到了很多小伙伴的催更,后续教程正在准备中,将在不久后跟大家见面,敬请期待哦~
OpenMMLab 官方账号
2022/04/09
9150
TorchScript 系列解读(一):初识 TorchScript
开源一年多的模型交换格式ONNX,已经一统框架江湖了?
在过去的一年多中,ONNX 这种「通用」的神经网络交换格式已经有了很长远的发展,用不同框架编写的模型可以在不同的平台中流通。在这次研讨会中,我们确切地感受到了这一点,因为开源社区围绕着 ONNX 介绍了很多优化工具和资源库。
机器之心
2018/12/21
2K0
开源一年多的模型交换格式ONNX,已经一统框架江湖了?
项目实践 | 从零开始边缘部署轻量化人脸检测模型——训练篇
在作者的原github中,也提到了一点,如果在实际部署的场景中大多数情况为中近距离、人脸大同时人脸的数量也比较少的时候,则可以采用
集智书童公众号
2021/07/07
1K0
轻松学Pytorch之torchscript使用!
点击上方蓝字关注我们 微信公众号:OpenCV学堂 关注获取更多计算机视觉与深度学习知识 TorchScript介绍 TorchScript是PyTorch模型推理部署的中间表示,可以在高性能环境libtorch(C ++)中直接加载,实现模型推理,而无需Pytorch训练框架依赖。torch.jit是torchscript Python语言包支持,支持pytorch模型快速,高效,无缝对接到libtorch运行时,实现高效推理。它是Pytorch中除了训练部分之外,开发者最需要掌握的Pytorch框架开发
OpenCV学堂
2022/05/12
3K0
轻松学Pytorch之torchscript使用!
旋转目标检测模型-TensorRT 部署(C++)
这次工程部署主要选择了比较熟悉的旋转选择框架-GGHL。如果没有特殊算子的检测框架,依然可以使用下面的这个Pipeline, 旋转目标检测主要分成五参数和八参数的表征方法,分别对应的 x,y,w,h.以及对应的八参数的转化求法 x_1,y_1,x_2,y_2,x_3,y_3,x_4,y_4 。这两种方式在后处理的时候可以互相转换,我们这里选择后者。
墨明棋妙27
2022/09/27
1.7K0
旋转目标检测模型-TensorRT 部署(C++)
TorchVision对象检测RetinaNet推理演示
点击上方蓝字关注我们 微信公众号:OpenCV学堂 关注获取更多计算机视觉与深度学习知识 torchvision对象检测介绍 Pytorch1.11版本以上支持Torchvision高版本支持以下对象检测模型的迁移学习: - Faster-RCNN- Mask-RCNN- FCOS- RetinaNet- SSD- KeyPointsRCNN 其中基于COCO的预训练模型mAP对应关系如下: 最近一段时间本人已经全部亲测,都可以转换为ONNX格式模型,都可以支持ONNXRUNTIME框架的
OpenCV学堂
2022/10/10
8760
TorchVision对象检测RetinaNet推理演示
轻松学Pytorch-使用ResNet50实现图像分类
Hello大家好,这篇文章给大家详细介绍一下pytorch中最重要的组件torchvision,它包含了常见的数据集、模型架构与预训练模型权重文件、常见图像变换、计算机视觉任务训练。可以是说是pytorch中非常有用的模型迁移学习神器。本文将会介绍如何使用torchvison的预训练模型ResNet50实现图像分类。
OpenCV学堂
2020/07/22
8.5K0
轻松学Pytorch-使用ResNet50实现图像分类
超简单的pyTorch训练->onnx模型->C++ OpenCV DNN推理(附源码地址)
很早就想学习深度学习了,因为平时都是自学,业余时间也有限,看过几个pyTorch的入门,都是一些碎片化的东西,始终串不起来。最近也是正好赶的疫情,出差少了,也是在B站看pyTorch视频时有评论说刘二大人的《pyTorch深度学习实践》讲的好,整个教程看下来后,确实是深入浅出,感觉就是宛然打通自己任督二脉,算是入门了。
Vaccae
2022/12/29
2.4K0
超简单的pyTorch训练->onnx模型->C++ OpenCV DNN推理(附源码地址)
亲测有效 | OpenVINO支持ONNX格式文件直接读取了
OpenVINO 2020R04版本支持ONNX格式文件的直接读取了,使用的函数还是跟之前读取IR文件函数保持一致,只是第二个参数缺省为空时候,就会尝试读取ONNX格式文件。相关的函数与参数解释如下:
OpenCV学堂
2020/09/24
4.1K0
亲测有效 | OpenVINO支持ONNX格式文件直接读取了
[DeepSeek]-DeepSeek技术解析:MoE架构实现与代码实战
以下是一篇结合DeepSeek技术解析与代码示例的技术文章,重点展示其核心算法实现与落地应用:
远方2.0
2025/03/15
4980
[DeepSeek]-DeepSeek技术解析:MoE架构实现与代码实战
用opencv的DNN模块做Yolov5目标检测(纯干货,源码已上传Github)
最近在微信公众号里看到多篇讲解yolov5在openvino部署做目标检测文章,但是没看到过用opencv的dnn模块做yolov5目标检测的。于是,我就想着编写一套用opencv的dnn模块做yolov5目标检测的程序。在编写这套程序时,遇到的bug和解决办法,在这篇文章里讲述一下。
计算机视觉研究院
2022/01/28
2.8K0
用opencv的DNN模块做Yolov5目标检测(纯干货,源码已上传Github)
推荐阅读
相关推荐
Pytorch轻松学-RetinaNet模型导出与C++部署
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验