码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 基于Yolov8的野外烟雾检测(3):动态蛇形卷积(Dynamic Snake Convolution),实现暴力涨点 | ICCV2023


      

    目录

      

    1.Yolov8介绍

    2.野外火灾烟雾数据集介绍

    3.Dynamic Snake Convolution

    3.1 Dynamic Snake Convolution加入到yolov8

    4.训练结果分析

    5.系列篇


    1.Yolov8介绍

             Ultralytics YOLOv8是Ultralytics公司开发的YOLO目标检测和图像分割模型的最新版本。YOLOv8是一种尖端的、最先进的(SOTA)模型,它建立在先前YOLO成功基础上,并引入了新功能和改进,以进一步提升性能和灵活性。它可以在大型数据集上进行训练,并且能够在各种硬件平台上运行,从CPU到GPU。

    具体改进如下:

    1. Backbone:使用的依旧是CSP的思想,不过YOLOv5中的C3模块被替换成了C2f模块,实现了进一步的轻量化,同时YOLOv8依旧使用了YOLOv5等架构中使用的SPPF模块;

    2. PAN-FPN:毫无疑问YOLOv8依旧使用了PAN的思想,不过通过对比YOLOv5与YOLOv8的结构图可以看到,YOLOv8将YOLOv5中PAN-FPN上采样阶段中的卷积结构删除了,同时也将C3模块替换为了C2f模块;

    3. Decoupled-Head:是不是嗅到了不一样的味道?是的,YOLOv8走向了Decoupled-Head;

    4. Anchor-Free:YOLOv8抛弃了以往的Anchor-Base,使用了Anchor-Free的思想;

    5. 损失函数:YOLOv8使用VFL Loss作为分类损失,使用DFL Loss+CIOU Loss作为分类损失;

    6. 样本匹配:YOLOv8抛弃了以往的IOU匹配或者单边比例的分配方式,而是使用了Task-Aligned Assigner匹配方式

    框架图提供见链接:Brief summary of YOLOv8 model structure · Issue #189 · ultralytics/ultralytics · GitHub

    2.野外火灾烟雾数据集介绍

    数据集大小737张,train:val:test 随机分配为7:2:1,类别:smoke

    3.Dynamic Snake Convolution

    论文: 2307.08388.pdf (arxiv.org)

    摘要:血管、道路等拓扑管状结构的精确分割在各个领域都至关重要,确保下游任务的准确性和效率。 然而,许多因素使任务变得复杂,包括薄的局部结构和可变的全局形态。在这项工作中,我们注意到管状结构的特殊性,并利用这些知识来指导我们的 DSCNet 在三个阶段同时增强感知:特征提取、特征融合、 和损失约束。 首先,我们提出了一种动态蛇卷积,通过自适应地关注细长和曲折的局部结构来准确捕获管状结构的特征。 随后,我们提出了一种多视图特征融合策略,以补充特征融合过程中多角度对特征的关注,确保保留来自不同全局形态的重要信息。 最后,提出了一种基于持久同源性的连续性约束损失函数,以更好地约束分割的拓扑连续性。 2D 和 3D 数据集上的实验表明,与多种方法相比,我们的 DSCNet 在管状结构分割任务上提供了更好的准确性和连续性。 我们的代码是公开的。 

            主要的挑战源于细长微弱的局部结构特征与复杂多变的全局形态特征。本文关注到管状结构细长连续的特点,并利用这一信息在神经网络以下三个阶段同时增强感知:特征提取、特征融合和损失约束。分别设计了动态蛇形卷积(Dynamic Snake Convolution),多视角特征融合策略与连续性拓扑约束损失。 

             我们希望卷积核一方面能够自由地贴合结构学习特征,另一方面能够在约束条件下不偏离目标结构太远。在观察管状结构的细长连续的特征后,脑海里想到了一个动物——蛇。我们希望卷积核能够像蛇一样动态地扭动,来贴合目标的结构。

    3.1 Dynamic Snake Convolution加入到yolov8

    核心代码:

    1. class DySnakeConv(nn.Module):
    2. def __init__(self, inc, ouc, k=3) -> None:
    3. super().__init__()
    4. self.conv_0 = Conv(inc, ouc, k)
    5. self.conv_x = DSConv(inc, ouc, 0, k)
    6. self.conv_y = DSConv(inc, ouc, 1, k)
    7. def forward(self, x):
    8. return torch.cat([self.conv_0(x), self.conv_x(x), self.conv_y(x)], dim=1)

    详见:

    首发Yolov8涨点神器:动态蛇形卷积(Dynamic Snake Convolution),实现暴力涨点 | ICCV2023_AI小怪兽的博客-CSDN博客

     4.训练结果分析

    训练结果如下:

    原始mAP@0.5 0.839提升至0.965

    1. YOLOv8-C2f-DySnakeConv summary: 249 layers, 3425699 parameters, 0 gradients, 8.7 GFLOPs
    2. Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 3/3 [00:04<00:00, 1.60s/it]
    3. all 148 148 0.904 0.905 0.965 0.574
    4. Speed: 0.4ms preprocess, 6.0ms inference, 0.0ms loss, 2.1ms postprocess per image

    5.系列篇

    1)基于Yolov8的野外烟雾检测

    2)基于Yolov8的野外烟雾检测(2):多维协作注意模块MCA| 2023.9最新发布

    3)基于Yolov8的野外烟雾检测(3):动态蛇形卷积,实现暴力涨点 | ICCV2023

    4)基于Yolov8的野外烟雾检测(4):通道优先卷积注意力(CPCA) | 中科院2023最新发表 

    5)  基于Yolov8的野外烟雾检测(5):Gold-YOLO,遥遥领先,超越所有YOLO

  • 相关阅读:
    spring 请求 出现实体类大小写不一致 出现的问题
    【JavaEE进阶系列 | 从小白到工程师】JavaEE的可变参数使用
    空闲空间管理和文件系统结构的优化策略
    在北京多有钱能称为富
    为什么 Go 语言 struct 要使用 tags
    CentOS 7 安装 openGauss 3.0 企业版(单节点)
    Constraints --- transition(clock transition、input transition、max transition)
    UE5 GAS 学习笔记 10.3 LyraStarter案例解析(下)
    python使用matplotlib可视化、使用marker参数自定义线图中数据点的标记形状、设定节点的样式(markers of plot)
    Oracle的控制文件多路复用,控制文件备份,控制文件手工恢复
  • 原文地址:https://blog.csdn.net/m0_63774211/article/details/133043242
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号