首页 > 其他分享 >河道治理漂浮物识别监测系统 YOLOv3

河道治理漂浮物识别监测系统 YOLOv3

时间:2024-08-08 10:24:36浏览次数:14  
标签:YOLOv3 河道 self torch 漂浮物 grid 识别

河道治理漂浮物识别监测系统通过深度视觉分析技术,河道治理漂浮物识别监测系统实时检测着河道水面是否存在漂浮物、水浮莲以及生活垃圾等。河道治理漂浮物识别监测系统识别到河道水面存在水藻垃圾等漂浮物,系统立即抓拍存档并同步发出报警。河道治理漂浮物识别监测系统可以提升传统监控方式对河道的管控效率,降低因人工因素产生的误报漏报。

2018年,作者Redmon又在YOLOv2的基础上做了一些改进。特征提取部分采用Darknet-53网络结构代替原来的Darknet-19,利用特征金字塔网络结构实现了多尺度检测,分类方法使用逻辑回归代替了softmax,在兼顾实用性的同时保证了目标检测的准确性。从YOLOv1到YOLOv3,每一代性能的提升都与backbone(骨干网络)的改进密切相关。在YOLOv3中,作者不仅提供了darknet-53,还提供了轻量级的tiny-darknet。如果你想检测精度与速度兼备,可以选择darknet-53作为backbone;如果你想达到更快的检测速度,精度方面可以妥协。那么tiny-darknet是你很好的选择。总之,YOLOv3的灵活性使得它在实际工程中得到很多人的青睐。

随着社会的发展和科技水平的进步,大家对于河道水利治理以及生态卫生管控更加重视,一旦河道水质受到漂浮物以及生活垃圾或者污染物水源的污染比如有的市民不讲卫生、乱丢垃圾导致水面都是悬浮物,加上上游常常排出大,量水浮莲,导致捞起工作压力大进一步会严重影响市容环境和城市景观,所以要加强清除力度,让河面上恢复原先的干净整洁。

class Detect(nn.Module):
    stride = None  # strides computed during build
    onnx_dynamic = False  # ONNX export parameter

    def __init__(self, nc=80, anchors=(), ch=(), inplace=True):  # detection layer
        super().__init__()
        self.nc = nc  # number of classes
        self.no = nc + 5  # number of outputs per anchor
        self.nl = len(anchors)  # number of detection layers
        self.na = len(anchors[0]) // 2  # number of anchors
        self.grid = [torch.zeros(1)] * self.nl  # init grid
        self.anchor_grid = [torch.zeros(1)] * self.nl  # init anchor grid
        self.register_buffer('anchors', torch.tensor(anchors).float().view(self.nl, -1, 2))  # shape(nl,na,2)
        self.m = nn.ModuleList(nn.Conv2d(x, self.no * self.na, 1) for x in ch)  # output conv
        self.inplace = inplace  # use in-place ops (e.g. slice assignment)

    def forward(self, x):
        z = []  # inference output
        for i in range(self.nl):
            x[i] = self.m[i](x[i])  # conv
            bs, _, ny, nx = x[i].shape  # x(bs,255,20,20) to x(bs,3,20,20,85)
            x[i] = x[i].view(bs, self.na, self.no, ny, nx).permute(0, 1, 3, 4, 2).contiguous()

            if not self.training:  # inference
                if self.onnx_dynamic or self.grid[i].shape[2:4] != x[i].shape[2:4]:
                    self.grid[i], self.anchor_grid[i] = self._make_grid(nx, ny, i)

                y = x[i].sigmoid()
                if self.inplace:
                    y[..., 0:2] = (y[..., 0:2] * 2 - 0.5 + self.grid[i]) * self.stride[i]  # xy
                    y[..., 2:4] = (y[..., 2:4] * 2) ** 2 * self.anchor_grid[i]  # wh
                else:  # for YOLOv5 on AWS Inferentia https://github.com/ultralytics/yolov5/pull/2953
                    xy = (y[..., 0:2] * 2 - 0.5 + self.grid[i]) * self.stride[i]  # xy
                    wh = (y[..., 2:4] * 2) ** 2 * self.anchor_grid[i]  # wh
                    y = torch.cat((xy, wh, y[..., 4:]), -1)
                z.append(y.view(bs, -1, self.no))

        return x if self.training else (torch.cat(z, 1), x)

    def _make_grid(self, nx=20, ny=20, i=0):
        d = self.anchors[i].device
        if check_version(torch.__version__, '1.10.0'):  # torch>=1.10.0 meshgrid workaround for torch>=0.7 compatibility
            yv, xv = torch.meshgrid([torch.arange(ny).to(d), torch.arange(nx).to(d)], indexing='ij')
        else:
            yv, xv = torch.meshgrid([torch.arange(ny).to(d), torch.arange(nx).to(d)])
        grid = torch.stack((xv, yv), 2).expand((1, self.na, ny, nx, 2)).float()
        anchor_grid = (self.anchors[i].clone() * self.stride[i]) \
            .view((1, self.na, 1, 1, 2)).expand((1, self.na, ny, nx, 2)).float()
        return grid, anchor_grid

河道治理漂浮物识别监测系统利用河道两岸已有的监控摄像头,河道治理漂浮物识别监测系统能够对河道湖泊水面进行7*24小时全方位无间断实时检测识别。河道治理漂浮物识别监测系统识别检测到湖面有悬浮物或是生活垃圾时,河道治理漂浮物识别监测系统立即发送给后台人员提醒及时处理。河道治理漂浮物识别监测系统可以降低远程平台人力消耗,通过AI识别技术提高对河道水利方面实时监控系统工作效率。

标签:YOLOv3,河道,self,torch,漂浮物,grid,识别
From: https://blog.csdn.net/SuiJiAi/article/details/141020090

相关文章

  • 01 语音情感识别总纲
    01语音情感识别总纲目录1.重要性2.情感描述模型3.情感语音数据库4.语音情感特征4.1韵律特征......
  • 基于springboot+vue开发的垃圾分类识别系统
    背景随着社会的快速发展,计算机的影响是全面且深入的。日常生活中,“垃圾”无处不在,家庭公寓里的垃圾桶、街头巷尾的垃圾箱、城市郊区的垃圾场、校园的垃圾站点等等,你也常常会发现,垃圾处理时通常有着多种分类,随着垃圾分类的普及,用户的数量和管理员的工作量在不断增加,工作也更......
  • matlab实现车牌识别系统
    在MATLAB中实现一个车牌识别系统通常涉及多个步骤,包括图像预处理、车牌定位、字符分割和字符识别。这里我将给出一个简化的流程和示例代码,帮助你开始这个项目。步骤1:图像预处理图像预处理通常包括灰度化、二值化、滤波等步骤,以去除噪声并增强车牌区域的特征。%读取图像......
  • ESP8266通过CH340驱动板无法识别问题
    官方文档接线图,按照接线就行,电阻用10K,当时没有找到10K的我用的11K的也能用。1.RST、EN用上拉电阻接到3.3V2.VCC用3.3V供电3.GND、GPIO15接地就行4.TX、RX连接串口的RX、TX交叉连接就行还有,官方文档提示:尽量不要使用USB转TTL的3.3V或5V供电。建议使用2节干电池或......
  • 图像识别与处理之Opencv——Mat_类与Mat 类的内存管理
    Mat_类Mat_类是对Mat类的一个包装,其定义如下点击查看代码template<typename_Tp>classMat_:publicMat{public://只定义了几个方法//没有定义新的属性};这是一个非常轻量级的包装,既然已经有Mat类,为何还要定义一个Mat_类?下面我们看这段代码:点击查看代码Ma......
  • 第15天:信息打点—主机架构&蜜罐识别&WAF识别&&端口扫描&协议识别&服务安全
    时间轴主要内容1、端口扫描-应用&协议2、WAF识别-分类&识别3、蜜罐识别-分类&识别解决:1、Web服务器&应用服务器差异性2、WAF防火墙&安全防护&识别技术3、蜜罐平台&安全防护&识别技术端口服务及渗透......
  • 文献综述如何有助于识别研究中的关键变量和概念
    VersaBot文献综述助手进行良好的文献综述对于从多个方面确定研究的关键变量和概念起着至关重要的作用;1.揭示相关领域和理论: 通过沉浸在现有的学术研究中,你会遇到围绕你的主题的各种理论和概念。这些可以作为识别与您的研究问题相关的潜在变量的起点。2.识别关系和相互作......
  • 基于K210智能人脸识别+车牌识别系统(完整工程资料源码)
    运行效果:基于K210的智能人脸与车牌识别系统工程目录:运行效果:目录:前言:一、国内外研究现状与发展趋势二、相关技术基础2.1人脸识别技术2.2车牌识别技术三、智能小区门禁系统设计3.1系统设计方案3.2系统设计目标3.3智能小区门禁系统硬件设计3.3.1控制模块......
  • 【验证码逆向专栏】某安登录流程详解与验证码逆向分析与识别
    声明本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作......
  • 使用pytorch实现数字识别器
    前言:本篇文章是关于数字识别器的识别和卷积神经网络的应用。若对卷积神经网络不熟悉,可参考文章:卷积神经网络关于深度学习的一些代码及实战,可参考深度学习基础(github)下面我们尝试用PyTorch搭建一个卷积神经网络,并用它来解决手写数字识别的问题。1、数据准备#torchvisio......