绝缘手套穿戴智能识别系统

绝缘手套穿戴智能识别系统通过opencv+python深度学习技术,绝缘手套穿戴智能识别系统对现场人员是否佩戴绝缘手套进行识别检测,当绝缘手套穿戴智能识别系统检测到现场人员违规行为未佩戴绝缘手套时立刻抓拍告警。我们使用YOLO(你只看一次)算法进行对象检测。YOLO是一个聪明的卷积神经网络(CNN),用于实时进行目标检测。该算法将单个神经网络应用于完整的图像,然后将图像划分为多个区域,并预测每个区域的边界框和概率。这些边界框是由预测的概率加权的。要理解YOLO,我们首先要分别理解这两个模型。

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包装器。

YOLOv5是一种单阶段目标检测算法,该算法在YOLOv4的基础上添加了一些新的改进思路,使其速度与精度都得到了极大的性能提升。主要的改进思路如下所示:

输入端:在模型训练阶段,提出了一些改进思路,主要包括Mosaic数据增强、自适应锚框计算、自适应图片缩放;

基准网络:融合其它检测算法中的一些新思路,主要包括:Focus结构与CSP结构;

Neck网络:目标检测网络在BackBone与最后的Head输出层之间往往会插入一些层,Yolov5中添加了FPN+PAN结构;

Head输出层:输出层的锚框机制与YOLOv4相同,主要改进的是训练时的损失函数GIOU_Loss,以及预测框筛选的DIOU_nms。

本文转载于网络 如有侵权请联系删除

相关文章

  • NFC芯片选型及基本电路框架

    RFID作为一项专业度较高的技术,在一些公司,可能还会专门招聘专业的RFID工程师。本篇阐述的涉及到的只是基本选型设计、电路框架,关于RFID天线调试、低功耗检卡调试等,后续再其他篇章会继续更新!NFC(NearFieldCommunication)芯片选型:主要考量点:芯片支持的协议、是否支持低功耗检卡、是否能过金融认证、芯片价格芯片支持协议:ISO14443A/B、ISO15693、ISO18092和ISO21481等ISO14443A卡:Mifare系列、Ultralight系列、Plus系列、CPU卡系列等。ISO14443B卡:身份证、SR176、SRI512等。ISO15693:NXP的ICODE系列、TI的Tag_itHF-I、STLRI等。ISO18092:包括读卡模式、卡模式、点对点通信模式。ISO21481:在ISO18092基础上兼容ISO15693协议。LPCD功能:芯片低功耗检测卡片功能。没有卡片靠近时,芯片处于低功耗状态,仅需10uA电流,就能完成卡片侦测,当卡片靠近时,芯片侦测到卡片,唤醒单片机读卡。金融认证:PBOC2.0/3.0标准、EMV标准电路架构

  • 来了来了它来了,100条必背JAVA知识点(下)

    来了来了,100条必背JAVA知识点它来了。 接着昨天的前50条来分享,今天的部分涉及更多的代码,全文都是干货,建议收藏后观看。51、重写的规则:①子类重写的方法的方法名和形参列表与父类被重写的方法的方法名和形参列表相同。②子类重写的方法的权限修饰符不小于父类被重写的方法的权限修饰符特殊情况:子类不能重写父类中声明为private权限的方法。③返回值类型: 父类被重写的方法的返回值类型是void,则子类重写的方法的返回值类型只能是void。父类被重写的方法的返回值类型是A类型,则子类重写的方法的返回值类型可以是A类或A类的子类。父类被重写的方法的返回值类型是基本数据类型(比如:double),则子类重写的方法的返回值类型必须是相同的基本数据类型(必须也是double)。④子类重写的方法抛出的异常类型不大于父类被重写的方法抛出的异常类型。52、什么是重写和什么是重载?53、super调用属性、方法:①在子类的方法或构造器中,通过使用"super.属性"或"super.方法"的方式,显式的调用父类中声明的属性或方法,通常情况下,习惯省略"s

  • Socket通信

    Socket理论知识OSI七层网络模型OSI七层网络模型(从下往上): OSI是一个理想的模型,一般的网络系统只涉及其中的几层,在七层模型中,每一层都提供一个特殊的网络功能,从网络功能角度观察:下面4层(物理层、数据链路层、网络层和传输层)主要提供数据传输和交换功能,即以节点到节点之间的通信为主 第4层作为上下两部分的桥梁,是整个网络体系结构中最关键的部分;上3层(会话层、表示层和应用层)则以提供用户与应用程序之间的信息和数据处理功能为主简言之,下4层主要完成通信子网的功能,上3层主要完成资源子网的功能。 OSI七层模型详解TCP/IP四层模型TCP/UDP区别Socket开发相关的一些概念名词:IP地址IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。复制端口用于区分不同的应用程序端口号的范围为0-65535,其中0-1023未系统的保留端口,我们的程序尽可能别使用这些端口!IP地址和端口号组成了我们的Socket,Socket是网络运行程序间双向通信链路的终结点,是TCP和UDP的基础!常用协议使用的端口:H

  • Tomcat内存设置方法

    Tomcat 内存设置方法 windows中大家都知道,JAVA程序启动时都会JVM都会分配一个初始内存和最大内存给这个应用程序。这个初始内存和最大内存在一定程度都会影响程序的性能。比如说在应用程序用到最大内存的时候,JVM是要先去做垃圾回收的动作,释放被占用的一些内存。 所以想调整Tomcat的启动时初始内存和最大内存就需要向JVM声明,一般的JAVA程序在运行都可以通过中-Xms-Xmx来调整应用程序的初始内存和最大内存: 如:java-Xms64m-Xmx128ma.jar. tomcat的启动程序是包装过的,不能直接使用java-X…..tomcat.*来改变内存的设置。在Tomcat在改变这个设置 有两种方法: 1.适合用%tomcat_home%/bin中的startup.bat脚本启动,需要在环境变量中加上CATALINA_OPTS这个属性。 如SETCATALINA_OPTS=-Xms64m-Xmx512m; ms是最小的,mx是最大,64m,512m分别是指内存的初始和最大容量.因为:用startup.bat启动tomcat服务器,会调用catalina.bat文件,

  • VBA解析复合文档06——改写数据流

    改写数据流和读取是类似的,只需要逐个扇区去处理就可以,需要注意的是,如果改写的数据长度比原来的数据长度变大了,这时候要注意是否会超越扇区的边界,如果超过了,那么就得改变文件的长度,处理起来就会很麻烦了,这种情况暂时就不进行改写。'改写数据流 'dir_name需要被改写的文件名称,是复合文档中的文件名称 'WriteBytes需要改写为的数据Byte数组 'Return返回出错信息 FunctionReWriteStream(dir_nameAsString,WriteBytes()AsByte)AsString Ifcf.h.Exists(dir_name)Then ReWriteStream=ReWriteStreamByDirIndex(VBA.CLng(cf.h.GetItem(dir_name)),WriteBytes) Else ReWriteStream="复合文档:不存在的目录" ExitFunction EndIf EndFunction PrivateFunctionReWriteStreamByDirI

  • MySQL常见问题之SQL查询慢

    MySQL常见问题之SQL查询慢可能是经常处理业务,最近总是听到开发的同学说SQL的查询慢。然后问我为什么,让我在数据库层面找原因。这样的需求接的多了,对于这类需求,我已经有了一套比较官方的回答思路,我来说,大家看,看看还有什么没有考虑到的地方,欢迎指正。 首先,当有业务方对我说SQL查询慢的时候,一般我会先问几个问题:1、这个SQL是偶尔比较慢还是一直这么慢?如果是偶尔比较慢,那大概率说明不是SQL层面的问题,应该是在某个时间点遇到了数据库的其他动作,导致产生了影响,例如:第一、该条语句要扫描的表被加锁了,所以导致拿不到数据,查询很慢。第二、查询的时间点,恰好数据库在刷新脏页,我们知道数据库进行了更新操作之后,不会立刻将这些数据进行落盘,而是刷新到redolog中去,等到空闲的时候,通过redolog里面的日志将数据同步到磁盘中去。第三、当前时间点正在进行一个大的备份任务,导致磁盘的IO突然增高,内存和磁盘的交互速度变慢,自然而然,查询的速度也就降下来了。第四、其他未知的神秘力量,例如大表操作、大事务、网络带宽被占用等等如果是一直这么慢,一般情况下,SQL层面的问题可能比较大,而SQ

  • 用了 10 多年的 Tomcat 居然有bug !

    为了解决分布式链路追踪的问题,我们引入了实现OpenTracing的Jaeger来实现。然后我们为SpringBoot框架写了一个starter以让用户实现近零改造接入全链路。由于公司有一个封装了SpringBoot的内部框架,然后我们的starter就以最新框架所使用的SpringBoot版本为基础进行开发。所以业务系统在接入的时候需要先升级框架,然后再引入我们的starter才行无缝接入全链路。故障描述然后有一个业务系统就按照步骤,升级框架,引入starter就接入了全链路系统,并且功能测试压力测试都已经通过了。结果我们满怀信心地就上线了。结果,线上nginx报大量http400错误。故障排查出现故障后,业务系统的研发人员查了所有的日志,包括elk以及机器上的日志,都没有发现明显的错误日志。这个就……几番挣扎后还是没有在线上的日志中找到任何蛛丝马迹。这个就比较绝望了。更奇怪的是在测试环境中是正常的,这个就比较诡异了。然后我们猜想是不是之前压力测试做得不够啊,我们还是在压测环境中再压测一下看看会不会复现。然后正好之前这个业务系统做过压测,那就赶紧找运维搭建一个压测环境。结果刚搭建完就

  • JS-JavaScript类库整理 [更新中...]

    老大、jQuery插件库  ——收集最全最新最好的jQuery插件  http://www.jq22.com/一、Moment.js  ——JavaScript日期处理类库  http://momentjs.cn/二、layui  ——经典模块化前端框架  http://www.layui.com/三、layer  ——JQ弹出层框架  http://layer.layui.com/四、Bootstrap  ——响应式开发前端框架  http://www.bootcss.com/五、Chart.js  ——HTML5canvas图表绘制工具库  http://www.bootcss.com/p/chart.js/docs/六、Videojs  ——html视频播放器,开源插件  http://videojs.com/全套、jQuery插件库常用前端库引用地址http://www.jq22.com/jquery/jquery.html以下整理他们的线上引用地址1) jQuery  (一个快速、简洁的JavaScript框架)  <scriptsrc="http://www

  • 10.10.10.1可以设置为网关吗_个人如何做跨境电商

    大家好,又见面了,我是你们的朋友全栈君。一:导入pms_category数据库二:获取三级列表数据1.在CategoryController修改list方法/***查出所有分类以及子分类,以树状结构组装起来*@return*/ @RequestMapping("/list/tree") publicRlist(){ List<CategoryEntity>entities=categoryService.listWithTree(); returnR.ok().put("data",entities); }复制2.在CategoryEntity添加子分类信息/***当前菜单的所有子分类*@TableField(exist=false)*数据表不存在此字段*/ @TableField(exist=false) privateList<CategoryEntity>children;复制3.在CategoryServiceImpl重写listWithTree方法/***查询所有清单*@return*/ List<C

  • 解决Ubuntu 20.04下VS code无法使用中文输入法的问题

    技术背景 在Ubuntu20.04下,如果从应用商城中直接下载VScode,有可能会导致无法使用中文输入法的问题,那么就只能从其他地方写了中文再复制过来,非常的麻烦。从一些文章中收集到的信息来看,应该是从应用商城中下载的VSCode是一个阉割版的软件,其中就把中文输入法这一项给抛弃了。因此我们的操作是先把从应用商城安装的VScode卸载掉,然后重新安装一个完整版的VScode即可解决问题。 操作流程 整体流程基本上是先删除,后重新安装的策略。 $sudosnapremovecode [sudo]dechin的密码: 已删除code $wget-qO-https://packages.microsoft.com/keys/microsoft.asc|gpg--dearmor>packages.microsoft.gpg $sudoinstall-oroot-groot-m644packages.microsoft.gpg/etc/apt/trusted.gpg.d/ $sudosh-c'echo"deb[arch=amd64,arm64,armhfsigned-by=/etc/ap

  • P1980 计数问题 试计算在区间 11 到 n n的所有整数中,数字 x(0 ≤ x ≤ 9)x(0≤x≤9)共出现了多少次?例如,在 11到 11 11中,即在 1,2,3,4,5,6,7,8,9,10,111,2,3,4,5,6,7,8,9,10,11 中,数字 11 出现了 44 次。 输入输出格式 输入格式: 22个整数n,xn,x,之间用一个空格隔开。 输出格式: 11个整数,表示

    #include<stdio.h> #include<stdlib.h> intmain() { intn,x,i,j,m,N,s[10],a,b,c,d,e,f,h; scanf("%d%d",&n,&x); m=0; for(i=1;i<=n;i++)//n次循环,遍历n个数 { a=i/1000000;//分解1000000内数字的各个位数字 b=(i%1000000)/100000; c=(i%100000)/10000; d=(i%10000)/1000; e=(i%1000)/100; f=(i%100)/10; h=i%10; s[0]=h;//将各个位上的数字赋值到数组s中 s[1]=f; s[2]=e; s[3]=d; s[4]=c; s[5]=b; s[6]=a; if(i<10)N=1;//判断数字位数,将位数赋值给N作为循环搜索条件 if(9<i&&i<100)N=2; if(99<i&&i<1000)N=3; if(999<i&&

  • 石油大 盒子 贪心

    文章目录 题目描述输入数据范围输出 想法贪心的正确性实现 题目描述 小D在玩堆盒子的游戏,每个盒子有⼀个强度,代表它上⽅最多能堆多少个盒子。由于盒子都是⼀样⼤的,所以不能在⼀个盒子上并列放超过⼀个盒子。现在小D有n个盒子,第i个盒子的强度为xi。⼩D想知道,如果他要把这些盒子全部堆起来,至少要堆多少堆。 输入 第一行读入一个整数n,代表小D有的盒子个数。第二行读入n个整数,第i个整数xi表示第i个盒子的强度。 数据范围 对于20%的数据,n≤10;对于50%的数据,n≤1000;对于100%的数据,n≤500000,xi≤1000000000。 输出 共一行,一个整数表示小D至少要堆多少堆。 想法 先看一眼数据范围,5e5数据量,n²是不行了,经过G大佬分析,估计是要贪心了不难发现:用优先队列维护一个小根堆,表示每一摞当前的size将强度从小到大排序后进行贪心如果当前的盒子能放在最小的size下,就放,并更新size,否则另开一堆 贪心的正确性 实现 #include<cstdio> #include<iostream> #in

  • 你是码农还是Geek?

    现在深深的体会到,不仅仅人与人的差别是巨大的,程序员与程序员之间的差别同样很明显的。 普通的程序员仅仅是完成自己的任务,完成任务后不思进取,不再修改自己的代码,不再去想有没有更好的实现方式,其实重构自己的代码真的是一件很重要的事情,他们完成任务,满足于现状,或者仅仅只是为了养家糊口,当然了,这也是很现实的问题,相信很多程序员都是这样,为了生活所迫,没有办法。 但是我们可不可以在写代码里面找到乐趣呢?答案是肯定的。 优秀的程序员(在我看来geek就是优秀的程序员,他们有很多的相同之处),他们往往头脑聪明,思维清晰,希望自己的程序得到别人的认可,完成一个很不错的作品,从而得到一种欣慰,骄傲感,满足感,成就感。据我的观察,我们公司就有那么一些人,埋头做事,每天记下来自己要做的每一件事情,总结自己今天做了什么,有什么不足的地方,每天书写自己的得失,每次星期一开会的时候总是说的头头是道。优秀的程序员是我崇拜的,他们往往不用花多长时间就能很快的完成任务,然后改善自己的代码,寻求更好地实现方法。他们不经常逛技术类的博客,他们也不看技术类的书籍,只是沉迷于自己的项目不能自拔,研究自己的东西,他们思维活

  • 负能量程序员杂谈(1)-世界上最单纯的职业:程序员

    本系列文章仅从个人有限的对事物的认知出发,如有不同意见,请温和提出态度,毕竟都是成年人,别那么幼稚。   我一直都认为,任何正当的职业都一样,本质都是首先养活自己,在满足这个前提下实现为人民服务的崇高理想。我是一个程序员,我很喜欢我的职业和从事这个职业的大部分人。 程序员是一个很奇葩的职业,在外界很多人看来高科技,高智商,高收入的一群人。殊不知,绝大部分程序员都拿着一份不高的薪水,整天被苦逼项目弄到精力憔悴,乔帮主阵亡的时候还忙着改自己的签名:stayhungrystayfoolish。哥,你本来就是foolish,本来就hungry,你stay个啥劲儿啊。 我接触过的大部分程序员是单纯的!低于实际年龄很多的单纯!这个是其它行业极其罕见的,这也是这个群体的一个巨大的人性闪光点。讲2个真事, 一个朋友L帮忙做了一个系统,由于部署文档描述是针对普通的部署方式,L为了安装方便,把tomact和程序整个打包,客户在验收的时候发现这个问题,但是由于对方也不想大家这么为难,还是做了初步验收,但是要求重写一下文档,补充一下整个部署方式。本来就增补文档就好了嘛,我确信和他描述的也很清楚,问

  • Phone-reset

    /*normalize.css*/ html{ line-height:1.15; /*1*/ -ms-text-size-adjust:100%; /*2*/ -webkit-text-size-adjust:100%; /*2*/ } body{ margin:0; } article, aside, footer, header, nav, section{ display:block; } h1{ font-size:2em; margin:0.67em0; } figcaption, figure, main{ /*1*/ display:block; } figure{ margin:1em40px; } hr{ box-sizing:content-box; /*1*/ height:0; /*1*/ overflow:visible; /*2*/ } pre{ font-family:monospace,monospace; /*1*/ font-size:1em; /*2*/ } a{ background-color:transparent; /*

  • Oracle EBS-SQL (OM-2):检查OM常用表

    --多语言视图 ALTERSESSIONSETNLS_LANGUAGE=AMERICAN; --组织化视图 BEGIN FND_CLIENT_INFO.set_org_context(218); END; --组织化视图  R12 BEGIN  mo_global.set_policy_context('S',218); END; --customer select*fromar_customerstwheret.customer_number='74213'; select*fromar_addresses_vtwheret.customer_id=112332; select*fromar_site_uses_vtwheret.site_use_id=630028; select*fromar_addresses_vtwheret.address_id=449831;             HZ_CUST_ACCOUNTS 

  • mysql逆向工程(mybatis)

    1.添加插件 <plugin>  <groupId>org.mybatis.generator</groupId>  <artifactId>mybatis-generator-maven-plugin</artifactId>  <version>1.3.2</version>  <configuration>    <!--配置文件的位置-->    <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>    <verbose>true</verbose>    <overwrite>true</overwrite>  </configuration>  <executions>    <execution>      <id>GenerateMyBat

  • idea中打jar包并放在Linux cdh-spark环境下运行

    (1)添加pom.xml中的依赖包 注意依赖包必须跟cdh中的组件版本一致。附上cdh3.2.1版的pom.xml内容: <?xmlversion="1.0"encoding="UTF-8"?> <projectxmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>spark_lenovo</groupId> <artifactId>spark</artifactId> <version>1.0-SNAPSHOT</version> <p

  • macOS平台下Qt应用程序菜单翻译及调整

    一、翻译    在macOS平台上,系统会为应用程序菜单添加一些额外的菜单项。先来看一些典型的例子: 这个是QtCreator的菜单,系统为应用程序菜单添加了一些桌面显示操作相关的菜单项; 这个是QtDesigner的应用程序菜单,也添加了一些额外的菜单项。并且我们可以注意到,这些菜单项在中文语言环境是翻译好的。那么我们自己的应用程序,怎么去让它们也翻译好呢? Qt应用程序的国际化都是通过ts文件来做翻译的。通过lupdate程序扫描源代码中被tr()宏包裹的字符串,得到需要翻译的字符串。但是这些系统添加的字符串,并没有存在我们的源码当中。这个应该如何处理嗯?通过网上的一番搜寻发现,有一个直接且简单的方法,直接在ts文件里面添加这些字符串并做好翻译即可。如下所示: 1<?xmlversion="1.0"encoding="utf-8"?> 2<!DOCTYPETS> 3<TSversion="2.1"language="zh_CN"> 4<context> 5<name>demoMainW

  • A Silverlight Bug ?

    昨日在写Silverlight程序的时候,遇到一个问题,感觉是Silverlight的Bug。使用版本是Silverlight5。异常信息如下: 行:56错误:Silverlight应用程序中未处理的错误代码:4004类别:ManagedRuntimeError消息:System.ArgumentException:值不在预期的范围内。位于System.Windows.Size.set_Width(Doublevalue)位于System.Windows.Controls.Primitives.TabPanel.ArrangeHorizontal(SizearrangeSize)位于System.Windows.Controls.Primitives.TabPanel.ArrangeOverride(SizefinalSize)位于System.Windows.FrameworkElement.ArrangeOverride(IntPtrnativeTarget,SingleinWidth,SingleinHeight,Single&outWidth,Single&ou

  • Django model 中的 class Meta 详解

    Djangomodel中的classMeta详解   通过一个内嵌类classMeta给你的model定义元数据,类似下面这样: classFoo(models.Model): bar=models.CharField(maxlength=30) classMeta: #... 复制 Model元数据就是"不是一个字段的任何数据"--比如排序选项,admin选项等等.   下面是所有可能用到的Meta选项.没有一个选项是必需的.是否添加classMeta到你的model完全是可选的. app_label   app_label这个选项只在一种情况下使用,就是你的模型类不在默认的应用程序包下的models.py文件中,这时候你需要指定你这个模型类是哪个应用程序的。比如你在其他地方写了一个模型类,而这个模型类是属于myapp的,那么你这是需要指定为: classFoo(models.Model): bar=models.CharField(maxlength=30) classMeta: app_label='myapp' 复制 db_table   db_table是用于指定自定义数

相关推荐

推荐阅读