【项目】YOLOv8/YOLOv5/YOLOv9半监督ssod火灾烟雾检测(YOLOv8_ssod)

假期闲来无事找到一份火灾烟雾数据集,自己又补充标注了一些,通过论文检索发现现在的火灾检测工作主要局限于对新场景的泛化性不够强,所以想着用半监督,扩充数据集的方法解决这个问题,所以本文结合使用现在检测精度较高、速度较快的YOLOv8算法和阿里巴巴开源的YOLOv5_ssod,结合提出YOLOv8_ssod算法,来对火灾烟雾进行检测。

一、 数据集

通过别人标注和自己标注总共得到大约一万张火灾烟雾数据。标注情况也有两种,一种是一大片烟雾直接全部都标,另一种是分为好几个小框进行标注。
在这里插入图片描述

二、YOLOv8算法

笔者在搞完这个算法之后,YOLOv9就已经出来了,不得不感叹迭代速度之快,但是YOLOv9的变动并不大,这里还是附上一张v8的结构图

在这里插入图片描述

三、阿里巴巴的YOLOv5半监督算法EfficientTeacher

代码在以下链接:https://github.com/AlibabaResearch/efficientteacher
还是给出一张EfficientTeacher半监督算法的结构图YOLO
阿里巴巴官方的包里面给出了YOLOv5和YOLOv8的实现代码,但是仅给出了YOLOv5的半监督代码,所以我们通过自己修改代码结构,把半监督改成了YOLOv8算法下的。
但是直接修改又有个问题是YOLOv5是AnchorBase的算法,半监督的运算原理就是使用这种基于Anchor的,而YOLOv8是AnchorFree的,所以我们还需要进一步把YOLOv8修改为AnChorBase的,好在修改并不复杂

 for i, (f, n, m, args) in enumerate(d['backbone'] + d['head']):  # from, number, module, args
        m = eval(m) if isinstance(m, str) else m  # eval strings
        for j, a in enumerate(args):
            try:
                args[j] = eval(a) if isinstance(a, str) else a  # eval strings
            except:
                pass

        n = max(round(n * gd), 1) if n > 1 else n  # depth gain
        if m in [nn.Conv2d, Conv, RobustConv, RobustConv2, DWConv, GhostConv, RepConv, RepConv_OREPA, DownC, 
                 SPP, SPPF, SPPCSPC, GhostSPPCSPC, MixConv2d, Focus, Stem, GhostStem, CrossConv, 
                 Bottleneck, BottleneckCSPA, BottleneckCSPB, BottleneckCSPC, 
                 RepBottleneck, RepBottleneckCSPA, RepBottleneckCSPB, RepBottleneckCSPC,  
                 Res, ResCSPA, ResCSPB, ResCSPC, 
                 RepRes, RepResCSPA, RepResCSPB, RepResCSPC, 
                 ResX, ResXCSPA, ResXCSPB, ResXCSPC, 
                 RepResX, RepResXCSPA, RepResXCSPB, RepResXCSPC, 
                 Ghost, GhostCSPA, GhostCSPB, GhostCSPC,
                 SwinTransformerBlock, STCSPA, STCSPB, STCSPC,
                 SwinTransformer2Block, ST2CSPA, ST2CSPB, ST2CSPC]:
            c1, c2 = ch[f], args[0]
            if c2 != no:  # if not output
                c2 = make_divisible(c2 * gw, 8)

四、检测效果

最后提了大概一两个点,但是泛化能力有了一点提升,检测效果如下所示

YOLOv8火灾烟雾检测


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

训练精度曲线如下所示:
在这里插入图片描述
在这里插入图片描述

五、源码/数据集

项目,大作业,bishe等 
技术够硬,认真负责,保证质量
q:1831255794

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-26 17:34:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-26 17:34:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-26 17:34:05       82 阅读
  4. Python语言-面向对象

    2024-04-26 17:34:05       91 阅读

热门阅读

  1. GRUB故障转储——/etc/kdump.conf指定故障转储分区

    2024-04-26 17:34:05       32 阅读
  2. git强制覆盖本地命令

    2024-04-26 17:34:05       30 阅读
  3. Ubuntu编译AOSP Android9

    2024-04-26 17:34:05       31 阅读
  4. Uniapp 跨页面传复杂参、传对象

    2024-04-26 17:34:05       27 阅读
  5. pytorch与深度学习

    2024-04-26 17:34:05       35 阅读
  6. Dockerfile COPY、ADD 作用和区别

    2024-04-26 17:34:05       36 阅读