首页 > 编程语言 >智慧工地安全绳检测识别系统 Python

智慧工地安全绳检测识别系统 Python

时间:2024-07-09 08:58:56浏览次数:16  
标签:torch anchors Python self 识别系统 anchor grid 工地

智慧工地安全绳检测识别系统利用现场已有的监控摄像头,智慧工地安全绳检测识别系统通过机器视觉+边缘计算实时分析监控画面数据不用人工控制;智慧工地安全绳检测识别系统可以及时发现监控区域人员未佩戴安全绳违规行为,迅速及时地给予预警提醒,协助后台人员高效的监督现场安全作业,推动施工作业智能化信息化。

Python是一门跨平台、脚本以及开发应用的编程语言。跨平台概念是软件开发中一个重要的概念,即不依赖于操作系统,也不依赖硬件环境。一个操作系统(如Windows)下开发的应用,放到另一个操作系统(如Linux)下依然可以运行。 Python是一种由Guido van Rossum开发的通用编程语言,它很快就变得非常流行,主要是因为它的简单性和代码可读性。它使程序员能够用更少的代码行表达思想,而不会降低可读性。

与C / C++等语言相比,Python速度较慢。也就是说,Python可以使用C / C++轻松扩展,这使我们可以在C / C++中编写计算密集型代码,并创建可用作Python模块的Python包装器。这给我们带来了两个好处:首先,代码与原始C / C++代码一样快(因为它是在后台工作的实际C++代码),其次,在Python中编写代码比使用C / C++更容易。OpenCV-Python是原始OpenCV C++实现的Python包装器。

安全绳是高处作业不可或缺的防护装备。据调查,在安全作业中,人身安全跌落导致的事故很高,人身安全跌落所造成的死伤统计分析约为安全生产事故的17%。可以看出,防止高空坠物和采用个人防护措施是非常有必要的,但实际场景下,高处作业中未系安全绳的情况时常发生。

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

智慧工地安全绳检测识别系统自动识别现场作业人员安全绳配戴情况,当智慧工地安全绳检测识别系统检测到作业人员在高处作业中未按要求穿戴安全绳时,系统会立即打开警报提示,不用人工控制,充分反映事前的预警提醒,在事件过程内进行及时查验,然后再进行规范化管理。

标签:torch,anchors,Python,self,识别系统,anchor,grid,工地
From: https://blog.csdn.net/SuiJiAi/article/details/140277459

相关文章

  • python matplot绘图工具练习
    #pyplotimportmatplotlib.pyplotaspltimportnumpyasnpimportseabornassnsimportpandasaspdx_point=np.array([0,6])y_point=np.array([0,100])plt.plot(x_point,y_point,'b-.v')#格式处理plt.show()x=np.arange(0,4*np.pi,0.1)y=......
  • 【视频讲解】Python、R时间卷积神经网络TCN与CNN、RNN预测时间序列3实例附代码数据
    全文链接:https://tecdat.cn/?p=36944原文出处:拓端数据部落公众号本文旨在探讨时间卷积网络(TemporalConvolutionalNetwork,TCN)与CNN、RNN在预测任务中的应用。通过引入TCN模型,我们尝试解决时间序列数据中的复杂依赖关系,以提高预测的准确性。本文首先介绍了TCN的基本原理,随后详......
  • Python——习题练习 part3 函数进阶
    本篇文章记录函数进阶部分的知识点及例题代码。目录六,函数进阶01 函数的多返回值02函数的传参方式 1,位置参数2,关键字参数3,缺省参数4,不定长参数a,位置传递b,关键字传递03lambda匿名函数六,函数进阶01 函数的多返回值#函数的多返回值deftest_return():......
  • Python进阶入门之DataFrame
    引言接上一篇《关于Python中的series详解与应用》。本篇将详细介绍DataFrame,主要包括它的定义、创建方法、常用操作、应用场景以及与其他数据结构的比较。什么是DataFrameDataFrame是Pandas库中的一种二维标签数据结构,可以看作是一种带有行和列标签的表格数据。它既有行索引......
  • 关于Python中的series详解与应用
    引言近期在学习Python的过程中学到了Pandas库,它是数据处理操作中一款非常强大且流行的工具。而Pandas的两个核心数据结构是Series和DataFrame(下一篇文章便会进行有关学习)。本篇将详细介绍Series,主要包括它的定义、创建方法、常用操作、应用场景以及与其他数据结构的比较,仅为......
  • Python数据结构详解:列表、字典、集合与元组的使用技巧
    前言哈喽,大家好!今天我要和大家分享的是关于Python中最常用的数据结构:列表、字典、集合和元组的使用技巧。你有没有遇到过在处理数据时,不知道该用哪种数据结构来存储和操作数据的情况呢?别担心,今天这篇文章就来帮你搞定这些问题,让你在数据处理上更加得心应手。最后,别忘了关......
  • 用python一个集mes和erp在企业微信协同的服务案例
    要使用Python实现一个集MES和ERP于一体的企业微信协同服务案例,我们可以利用企业微信的API和第三方库`wechatpy`。以下是一个简单的实现思路:1.首先,安装`wechatpy`库,用于实现企业微信的相关功能。```pipinstallwechatpy```2.创建一个`WeChatService`类,用于实现企业微信......
  • python 自动化神器 多平台纯代码RPA办公自动化python框架
    ​ Pyaibote是一款专注于纯代码RPA(机器人流程自动化)的强大工具,支持Android、Browser和Windows三大主流平台。无论您需要自动化安卓应用、浏览器操作还是Windows应用程序,Pyaibote都能轻松应对Pyaibote可以同时协作Windows、Web和Android平台机器人,满足您多样化的办公自动化需求......
  • Python面试题-8
    41.请解释Python中的切片操作。在Python中,切片(Slicing)是一种获取序列(如字符串、列表、元组等)的子集或部分的操作。切片操作使用方括号[],并且可以在方括号中指定开始索引、结束索引和步长。其基本语法如下:sequence[start:end:step]start是切片开始的索引,默认为0(序列的......
  • python+flask计算机毕业设计个性化图书借阅系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在信息化高速发展的今天,图书馆作为知识传播与学术研究的重要基地,其服务模式正经历着深刻的变革。传统的图书借阅方式已难以满足读者日益增......