0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

OpenCV学堂 来源:OpenCV学堂 2023-11-15 16:44 次阅读

RetinaNet网络介绍

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

681846d0-838b-11ee-939d-92fbcf53809c.png

最终RetinaNet网络结构如下:

68238f22-838b-11ee-939d-92fbcf53809c.png

数据集准备与制作

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

6831c72c-838b-11ee-939d-92fbcf53809c.png

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

https://gitee.com/opencv_ai/opencv_tutorial_data/tree/master/tools

三:模型训练

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

683d01e6-838b-11ee-939d-92fbcf53809c.png

总计训练了25个轮次以后,发现效果已经是相当的不错了,直接导出ONNX格式RetinaNet模型文件。 把模型转换为ONNX格式,Pytorch是原生支持的,只需要把通过torch.onnx.export接口,填上相关的参数,然后直接运行就可以生成ONNX模型文件。相关的转换代码如下:
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'}}
)
运行时候控制台会有一系列的警告输出,但是绝对不影响模型转换,影响不影响精度我还没做个仔细的对比。 模型转换之后,可以直接查看模型的输入与输出结构,图示如下:

6847acc2-838b-11ee-939d-92fbcf53809c.png

推理运行

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

6875599c-838b-11ee-939d-92fbcf53809c.png


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 网络
    +关注

    关注

    14

    文章

    7517

    浏览量

    88627
  • 无人机
    +关注

    关注

    228

    文章

    10340

    浏览量

    179631
  • 数据集
    +关注

    关注

    4

    文章

    1205

    浏览量

    24644

原文标题:Pytoorch轻松学 – RetinaNet自定义对象检测

文章出处:【微信号:CVSCHOOL,微信公众号:OpenCV学堂】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    自定义函数测试学习工程

    自定义函数测试学习工程
    发表于 07-01 16:37 5次下载

    SOPC中自定义外设和自定义指令性能分析

    SOPC中自定义外设和自定义指令性能分析 NiosII是一个建立在FPGA上的嵌入式软核处理器,灵活性很强。作为体现NiosII灵活性精髓的两个最主要方面,自
    发表于 03-29 15:12 1599次阅读
    SOPC中<b class='flag-5'>自定义</b>外设和<b class='flag-5'>自定义</b>指令性能分析

    1602自定义字符

    1602液晶能够显示自定义字符,能够根据读者的具体情况显示自定义字符。
    发表于 01-20 15:43 1次下载

    JAVA教程之自定义光标

    JAVA教程之自定义光标,很好的学习资料。
    发表于 03-31 11:13 7次下载

    PDH网管盘 自定义字节

    PDH网管盘 自定义字节
    发表于 12-26 22:13 0次下载

    基于自定义特征的飞机结构件智能检测规划技术_曾德标

    基于自定义特征的飞机结构件智能检测规划技术_曾德标
    发表于 02-08 01:56 1次下载

    苹果新版Reality Converter应用可自定义3D对象

    苹果在今日向开发人员通报了新版Reality Converter应用的发布,该程序旨在协助用户在Mac上转换、查看和自定义USDZ 3D对象
    的头像 发表于 01-14 16:04 2219次阅读

    自定义视图组件教程案例

    自定义组件 1.自定义组件-particles(粒子效果) 2.自定义组件- pulse(脉冲button效果) 3.自定义组件-progress(progress效果) 4.
    发表于 04-08 10:48 14次下载

    ArkUI如何自定义弹窗(eTS)

    自定义弹窗其实也是比较简单的,通过CustomDialogController类就可以显示自定义弹窗。
    的头像 发表于 08-31 08:24 2130次阅读

    基于AI自定义视觉工作场所安全检测系统

    电子发烧友网站提供《基于AI自定义视觉工作场所安全检测系统.zip》资料免费下载
    发表于 12-09 10:25 0次下载
    基于AI<b class='flag-5'>自定义</b>视觉工作场所安全<b class='flag-5'>检测</b>系统

    用于改进应用的自定义逻辑外设

    具有可配置自定义逻辑 (CCL) 外设。为了快速轻松地进行设置,MPLAB® 代码配置器 (MCC) 可用于为正在使用的外设设置和生成 API。
    的头像 发表于 05-06 09:51 904次阅读
    用于改进应用的<b class='flag-5'>自定义</b>逻辑外设

    labview自定义控件

    labview自定义精美控件
    发表于 05-15 16:46 17次下载

    自定义神经网络对象识别开源分享

    电子发烧友网站提供《自定义神经网络对象识别开源分享.zip》资料免费下载
    发表于 06-16 09:27 0次下载
    <b class='flag-5'>自定义</b>神经网络<b class='flag-5'>对象</b>识别开源分享

    自定义算子开发

    一个完整的自定义算子应用过程包括注册算子、算子实现、含自定义算子模型转换和运行含自定义op模型四个阶段。在大多数情况下,您的模型应该可以通过使用hb_mapper工具完成转换并顺利部署到地平线芯片上……
    的头像 发表于 04-07 16:11 2744次阅读
    <b class='flag-5'>自定义</b>算子开发

    labview超快自定义控件制作和普通自定义控件制作

    labview超快自定义控件制作和普通自定义控件制作
    发表于 08-21 10:32 12次下载