加油站视频监控智能分析盒

加油站视频监控智能分析盒基于yolov5人工智能视觉技术,加油站视频监控智能分析盒对现场画面中明火和烟雾以及人员抽烟、打电话等违规行为进行识别。除此之外,加油站视频监控智能分析盒还可以对现场画面中卸油时灭火器未按要求正确摆放以及静电释放时间不足和人员离岗等不规范行为进行自动预警。YOLOv5在YOLOv4算法的基础上做了进一步的改进,检测性能得到进一步的提升。虽然YOLOv5算法并没有与YOLOv4算法进行性能比较与分析,但是YOLOv5在COCO数据集上面的测试效果还是挺不错的。

FPN+PAN-YOLOv5的Neck网络仍然使用了FPN+PAN结构,但是在它的基础上做了一些改进操作,YOLOv4的Neck结构中,采用的都是普通的卷积操作。而YOLOv5的Neck网络中,采用借鉴CSPnet设计的CSP2结构,从而加强网络特征融合能力。

我们通常可以将其划分为4个通用的模块,具体包括:输入端、基准网络、Neck网络与Head输出端,对应于上图中的4个红色模块。YOLOv5算法具有4个版本,具体包括:YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x四种,本文重点讲解YOLOv5s,其它的版本都在该版本的基础上对网络进行加深与加宽。

输入端-输入端表示输入的图片。该网络的输入图像大小为608*608,该阶段通常包含一个图像预处理阶段,即将输入图像缩放到网络的输入大小,并进行归一化等操作。在网络训练阶段,YOLOv5使用Mosaic数据增强操作提升模型的训练速度和网络的精度;并提出了一种自适应锚框计算与自适应图片缩放方法。

基准网络-基准网络通常是一些性能优异的分类器种的网络,该模块用来提取一些通用的特征表示。YOLOv5中不仅使用了CSPDarknet53结构,而且使用了Focus结构作为基准网络。

Neck网络-Neck网络通常位于基准网络和头网络的中间位置,利用它可以进一步提升特征的多样性及鲁棒性。虽然YOLOv5同样用到了SPP模块、FPN+PAN模块,但是实现的细节有些不同。

Head输出端-Head用来完成目标检测结果的输出。针对不同的检测算法,输出端的分支个数不尽相同,通常包含一个分类分支和一个回归分支。YOLOv4利用GIOU_Loss来代替Smooth L1 Loss函数,从而进一步提升算法的检测精度。

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

相关文章

  • Auto.js中的脚本引擎

    1. 在脚本引擎中运行脚本//通过脚本引擎调用脚本程序,可添加相关配置 //engines.execScript(name,script,[config]) engines.execScript('name','toast("你好");',{ //延迟时间 delay:2000, //循环次数 loopTimes:3, //间隔时间 interval:2000, });复制要执行的脚本程序可以单独封装,执行时转换为字符串。//封装执行的程序 functionfunc(){ toast('你好'); }; engines.execScript('name','func();\n'+func.toString());复制封装一个脚本执行方法,可以在执行脚本时加入参数。//封装执行方法 functionexec(action,args){ varparams=args||{}; vartemp=action.toString(); varreg=/function\s*

  • 【笔记】《计算机图形学》(15)——曲线

    这一章介绍了曲线的表示,用到了比较多的数学.前半部分主要是介绍了曲线的性质和表示方式,并介绍了多项式插值曲线,后半部分主要介绍了包括贝塞尔曲线和B样条曲线在内的拟合曲线.样条曲线的内容在样条曲线曲面有过一些简单的介绍,这一章没有介绍曲面部分,但是在曲线部分则进行了更加详细的介绍,我也对这部分有了更好的理解.本篇字数7.5k,内容较多,对曲线绘制不感兴趣的话可以跳过本章.才疏学浅,错漏在所难免。本文同步存于我的Github仓库,有错误会在那里更新(https://github.com/ZFhuang/Study-Notes/blob/main/Content/%E3%80%8AFundamentals%20of%20Computer%20Graphics%2C%20Fourth%20Edition%E3%80%8B%E7%AC%94%E8%AE%B0/Chapter15%20Curves%20%E6%9B%B2%E7%BA%BF/README.md)15.1Curves曲线 首先曲线是什么我们应该都很熟悉了,在数学上曲线的定义分为两种:离散的,连续的.不管是哪一种曲线都是在n维空间中的一

  • windows下安装tflearn

    1、安装anaconda2、安装pycharm3、“启动”--“cmd”输入pipinstalltflearn或condainstalltflearn4、将python--lib--site-packages下的tflearn相关文件夹复制到anaconda路径下lib--site-packages出现的问题:cursesisnotsupportedonthismachine(pleaseinstall/reinstallcursesforanoptimalexperience)原因:curse在Windows下的pycharm中安装,curse是不能直接在Windows下跑的。需要安装相关环境,要根据直接project的编译器版本来选择下载相关的whl。解决方法:https://blog.csdn.net/u011511601/article/details/80254709https://www.douban.com/note/541346584/首先,下载包文件curses‑2.2‑cp36‑cp36m‑win_amd64.whl。然后,在文件所在目录执行命令pipinstall

  • 设计模式第一讲(单例模式)

    文章导读大家好,我是卡二条,很感谢大家关注我的个人微信公众号.为什么写这篇文章呢?主要是因为最近在公司负责架构这一块所遇到的一些问题,所感想而来。到今天加入现在的团队也整整3个月了,一直负责架构这一块的工作内容,从最开始接手项目,可谓是十分糟糕,之前的项目经常出现数据不一致,扩展性差,异常不易排查等情况.在重构的过程中,将自己所学到的设计模式大量用到项目中,保证了项目后期的正常运行,同时也保证了项目的高可用、高扩展.于是便想着将自己了解到的设计模式通过文章的方式写出来,尽可能的保证每天分享一个设计模式,希望对大家有所帮助.如文章有什么不合适的地方,往大家指正.分享的内容主要是以PHP代码作为演示代码,或许有时会参考其他的编程语言.分享的几点,主要是围绕以下几点.设计模式的定义设计模式的利与弊设计模式的代码演示设计模式的使用场景其实个人最看中的是使用场景,很多的文章或者很多的书籍都只是单纯的讲理论知识,讲设计模式的好处等等,却缺乏对使用场景的分析,导致学习后不能很快的掌握.单例模式的定义作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统全局地提供这个实例。它

  • Entity Framework(EF)数据查询

    EntityFramework(EF)存取Entity的三种方式。LINQtoEntities直接通过LINQ存取,可完全将程序与数据库分离,由LINQ在内部自动使用ObjectService进行数据库操作ObjectService可以透过EntitySQL(eSQL)来存取Entity,并且直接以对象的方式来存取结果集(因为结果集本身就是对象的集合)。EntityClient通过过类似ADO.NET的方法,以及EntitySQL存取Entity。EF,有一个容器管理着里面所有附着在其上的对象。它们通过一种叫ObjectTracking的机制来跟踪对象的变化,以便于在用户需要的时候把这些变化持久化到数据库中去。有时候,我们可能并不需要改动数据(比如我们只是简单地取出一个Entity然后把它绑定到UI上面去),那么在这个时候,Tracking机制就比较多余了。在EF中,我们可以以MergeOption.NoTracking=false来取得同样的效果。在EF中,有个QueryPlanCaching的功能,它可以Cache编译后的ESQL。如果使用ObjectiveService,可以用S

  • shiro教程1(HelloWorld)

    shiro简介官网   ApacheShiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。框架图说明官网架构说明从外部查看shiro框架   应用代码直接交互的对象是Subject,也就是说Shiro的对外API核心就是Subjectapi说明Subject主体,代表当前’用户’。这个用户不一定是一个具体的人,与当前应用交互的任何东西都是Subject,如网络爬虫,机器人等;即一个抽象概念;所有Subject都绑定到SecurityManager,与Subject的所有交互都会委托给SecurityManager;可以把Subject认为是一个门面;SecurityManager才是实际的执行者ShiroSecurityManager安全管理器;即所有与安全有关的操作都会与SecurityManager交互;且它管理着所有Subject;可以看出它是Shiro的核心,它负责与后边介绍的其他组件进行交互,可以把它看成DispatcherSer

  • 【前端统计图】echarts多条折线图和横柱状图实现

    参考链接:echarts官网:http://echarts.baidu.com/ 原型图(效果图): 图片.png代码:<!DOCTYPEhtml> <html> <head> <metacharset="UTF-8"> <title></title> </head> <body> <!--折线统计图--> <divclass="row"> <divid="main"style="width:900px;height:350px;margin-top:80px;"></div> </div> </body> <scriptsrc="js/echarts/echarts.min.js"type="text/javascript"></script> <scriptsrc=

  • 业界丨格灵深瞳 CEO 赵勇亲自撰文:Nvidia 成功背后的远见与坚持

    编者按:本文作者赵勇,格灵深瞳CEO,AI科技评论授权发布。2016年人工智能最吸引眼球的事件莫过于谷歌旗下的DeepMind依靠人工智能算法的阿尔法狗在围棋比赛中大胜人类顶尖选手。但要算商业价值的落地,2016年人工智能的赢家则非Nvidia(英伟达)莫属。这家全球领先的显卡公司最新的季度财报(截至2016年10月30号)显示该公司的营收比去年同期增长54%,尤其是在数据中心业务方面有了两倍多的增长。该公司的股票在过去的一年中也增长了4倍多,稳坐了标普500的榜首。Nvidia在人工智能芯片市场的真实统治力,可能比股票市场上的亮眼成绩更为显著。尽管市场上也存在其他深度学习训练(training)和预测(Inference)的解决方案,但试问各家AI企业,无论其内部的模型训练,还是销售给最终客户的智能产品,绝大多数还是采用了Nvidia的GPGPU方案。在Nvidia不断从各个角度(服务器、PC、嵌入式、汽车、训练专用和预测专用)推陈出新的时候,其他各家竞争公司基本上还处在尝试初次产品化的过程中。据我粗略估计,Nvidia在人工智能芯片领域,领先最接近的竞争者至少有2年的时间。今天Nv

  • Redis 的几种数据结构&五种数据类型对象

    先看几种数据结构 通过分析底层的数据结构,学习如何根据场景选型和设计  1,简单动态字符串    redis使用的字符串SDS有别于C语言中的字符串    a,结构      free字段为已分配但未使用的空间    len为已使用的空间(不计入'\0')    buf为char数组    b,与C字符串区别        redis的字符环结构可以理解为将C字符串封装了一层,通过加入的属性字段降低字符串操作的复杂度,提高安全性。        通过len属性可以在常数复杂度获取字符串的长度,仅通过len属性可直接获取长度,而C语言字符串复杂度需要遍历,长度为O(N)。       &nbs

  • 1.性能测试概述

     性能测试概念   性能测试环境及注意事项   性能测试流程   性能测试常用术语   性能测试模型   (1)性能测试是指通过特定方式,对被测系统按照一定策略施加压力,获取系统  响应时间、TPS(TransactionPerSecond)、吞吐量、资源利用率等性能指  标,以期保证生产系统的性能能够满足用户需求的过程。  性能测试一般是指大数据量的测试。  性能测试一般包含3个方面:   应用在客户端性能的测试   应用在网络上性能的测试   应用在服务器端性能的测试   性能测试 硬件环境:被测服务器硬件配置,用于加压客户端的机子配置,CPU 内存等 被测服务器硬件配置 同型号不同配置 生产环境:戴尔服务器 R730升级版  cpu    内存 64GB&n

  • 3. Longest Substring Without Repeating Characters - 最长无重复字符子串-Medium

      Examples:   Description:    Givenastring,findthelengthofthe longestsubstring withoutrepeatingcharacters. Example:   Given "abcabcbb",theansweris "abc",whichthelengthis3.  Given "bbbbb",theansweris "b",withthelengthof1.  Given "pwwkew",theansweris "wke",withthelengthof3.Notethattheanswermustbea substring, "pwke" isa subsequence andnotasubstring.复制  复制 思路分析:   1.第一想法:从第一个字符起,逐个计算出最长字串长度,然后到遍历到最后一个字符,得到最大值;   2.其中逐个计

  • 231. 2 的幂(位运算)

    231.2的幂 给你一个整数 n,请你判断该整数是否是2的幂次方。如果是,返回 true ;否则,返回 false 。 如果存在一个整数 x 使得 n==2x ,则认为 n 是2的幂次方。   示例1: 输入:n=1 输出:true 解释:20=1 复制 示例2: 输入:n=16 输出:true 解释:24=16 复制 示例3: 输入:n=3 输出:false 复制 示例4: 输入:n=4 输出:true 复制 示例5: 输入:n=5 输出:false 复制   提示: -231 <=n<=231 -1 1classSolution{ 2public: 3//如果一个数是2的n次幂,用进制表示就是1加上若干个0,该数减去一后为0加上若干个1,两数按位与值为0 4boolisPowerOfTwo(intn){ 5returnn>0&&(n&(n-1))==0; 6} 7};复制 &nb

  • 排序算法之堆排序

    个人感觉堆排序还是在排序算法中比较难懂的,看了一段时间。准备把其中的思路理一理。 首先,堆分为大根堆和小根堆。 堆是满足下列性质的数列{r1,r2,…,rn}:  即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。 那么如何进行排序呢?   1.我们要把序列构建为堆,建堆的核心就是不断的调整堆,是非叶子节点的值大于或小于孩子节点。这样,我们得到的初始堆,其根节点的值必定是最大值或最小值。      2.然后我们将根节点与当前堆的最后一个节点进行交换,这样最后一个节点必定是最大或最小值。将最后一个节点(即最大或最小值)输出,通常将堆底元素送入堆顶,此时根节点已不满足堆的性质,我们需要将剩余的这个堆进行调整使之成为大根堆或小根堆。也就是说,每次我们取得都是根节点的值。取完根节点,再调整堆。     3.重复 步骤2,直到堆中仅剩下一个元素为止.(也就是堆的长度为1时) 所以,函数调整堆adjustHeap()是关键。 代码如下: 1#include<iost

  • Micropython教程之TPYBoard DIY金属探测仪实例演示(萝卜学科编程教育)

    1.实验目的 1.学习在PC机系统中扩展简单I/O?接口的方法。2.进一步学习编制数据输入输出程序的设计方法。3.学习LJ12A3-4-Z/BX金属接近开关的工作原理。4.硬件接线方法。5.学会用TPYBoard接收金属接近开关的输出信号,并对信号进行判断处理,点亮LED发光二极管。(萝卜学科编程教育tpyboard。com) 2.所需元器件 TPYBoard板子一块LJ12A3-4-Z/BX金属接近开关一个面包板一块发光二极管一个数据线一条杜邦线若干 3.LJ12A3-4-Z/BX接近开关工作原理   接近开关既有行程开关、微动开关的特性,同时具有传感性能,且动作可靠,性能稳定,频率响应快,应用寿命长,抗干扰能力强等,并且有防水防震,耐腐蚀等特点。 接近开关的输出信号是输出数字信号,即当没有金属靠近时,输出1,当有金属时,输出0,通过前面的探头检测是否有金属,然后将检测的数字传递到TPYBoard,然后TPYBoard作出相应的判断,广泛应用于机床、冶金、化工、航天航空、轻纺与印刷等行业;在日常生活中,可用于宾馆、饭店、车库的自动门,自动热风机上都有应用;在安全防盗方面,如

  • CountDownLatch和CyclicBarrier

    CyclicBarrier的官方解释: Asynchronizationaidthatallowsasetofthreadstoallwaitforeachothertoreachacommonbarrierpoint. CyclicBarrier是一个同步的辅助类,允许一组线程相互之间等待,达到一个共同点,再继续执行。 CountDownLatch的官方解释: Asynchronizationaidthatallowsoneormorethreadstowaituntilasetofoperationsbeingperformedinotherthreadscompletes. CountDownLatch是一个同步的辅助类,允许一个或多个线程,等待其他一组线程完成操作,再继续执行。 CountDownLatch场景神还原: 一年级期末考试要开始了,监考老师发下去试卷,然后坐在讲台旁边玩着手机等待着学生答题,有的学生提前交了试卷,并约起打球了,等到最后一个学生交卷了,老师开始整理试卷,贴封条,下班,陪老婆孩子去了。这里提前交卷的学生(可以理解为线程),做完自己的试卷是可以去

  • Android Studio git 使用

    先在Windows上面安装git.exe,并加入到环境变量。 https://git-scm.com/ 复制 AndroidStudio配置GIT VCS->EnableVersionControlIntegration选择GIT。 FileSetting里面配置GIT路径 完毕了之后VCS里面就会出现GIT选项,并配置github仓库路径。 选择commit添加当前次修改。 可以选择不commit的文件,去掉勾就可以。 远程仓库建立之后之后,配置了远程仓库地址之后,就可以push 使用https协议push,不需要key文件,只需要账号密码就可以了。 ReadTheFuckingSourceCode

  • MATLAB等距扇形反投影分析

    MATLAB等距扇形反投影分析   摘要:MATLABphantom函数产生的Shepp-Logan模型,可以用来验证二维图像重建算法的数值精确度,本文首先据此模型,结合正弦图,讨论平行投影时的极坐标表示。扇形投影时,每条射线,可以看做是平行投影线旋转一定角度后的投影,根据几何关系,得出扇形投影时的极坐标表示。反投影是投影的逆变换,根据正弦图,可以很容易得出平行反投影的处理过程。对于扇形反投影,本文介绍了两种方法,一是参考MATLABifanbeam函数,将扇形投影数据重排成平行投影数据,这是个插值的过程,然后再按照平行反投影处理;二是对照平行反投影的过程,由扇形投影时的极坐标表示,直接扇形反投影。 关键字:MATLABifanbeam;平行投影正弦图;扇形投影到平行投影的数据重排;扇形直接反投影                      

  • 【容斥原理+状压DP+DFS】[CQOI2012]-局部极小值

    嘤嘤嘤好难,写的乱七八糟 题目链接(https://www.luogu.com.cn/problem/P3160) 题目描述 有一个\(n\)行\(m\)列的整数矩阵,其中\(1\)到\(nm\)之间的每个整数恰好出现一次。如果一个格子比所有相邻格子(相邻是指有公共边或公共顶点)都小,我们说这个格子是局部极小值。 给出所有局部极小值的位置,你的任务是判断有多少个可能的矩阵。 输入描述: 输入第一行包含两个整数n和m(1≤n≤4,1≤m≤7),即行数和列数。 以下n行每行m个字符,其中“X”表示局部极小值,“.”表示非局部极小值。 复制 输出描述: 输出仅一行,为可能的矩阵总数除以12345678的余数。 复制 示例1 输入 32 X. .. .X 复制 输出 60 复制 备注: 对于100%的数据,保证1≤n≤4,1≤m≤7。 复制 思路 题意言简意赅,没有想到可以用状压处理局部极小值的个数,做法参考了博客 由题意很容易就能知道\(X\)肯定不能相邻或者对角相邻,一个\(X\)相邻\(8\)个空格一不能在存在\(X\),数据范围很小,可知该图最多只能有\(8\)个局部极小值,联想到状压

  • delphi与汇编

    我一直认为Delphi功能与C++相比毫不逊色,提供了丰富的控件和类、全部API以及嵌入的汇编。最近小弟在把C版的Huffman压缩改用Delphi写时,顺便“研究”了一下Delphi的位操作和嵌入式汇编,利用嵌入汇编我们可以得到高效的程序代码,完成一些Delphi没有提供的底层功能。借贵报一方宝地与大家分享我的“研究”。  Delphi的位操作  每个学习C的朋友都会被告之C是“中级语言”,其位操作非常方便,而Pascal之流只适用于教学。但是Delphi中提供了一组位操作,可别以过去对Pascal的态度看Delphi。  *按位的逻辑操作:  Delphi中的AND、OR、NOT可不仅仅只对逻辑表达式有作用,它们还可以操作数;  AND:按位与,如:1AND2其结果为0  OR:按位或,如:1OR2其结果为3  Not:按位取反:如Not1其结果对于有符号数是-2,对于无符号数是65534  另外,还有按位异或XOR:如:1XOR2结果为3  *移位操作  Delphi提供了SHL和SHR进行移位左移和右移:  例如:2SHR1表示2按位右移一位结果为1。  *Delphi中的数 

  • Vue之父子组件传参

    父组件给子组件传参的时候我们先把子组件组册到父组件里面如下 <template> <div> <zi:data="name":BookProp="books"></zi>//这个:号后面的名字就是到子组件里面的名字 </div> </template> <script> //导入子组件 importzifrom'./zi.vue' exportdefault{ data(){ return{ name:'', books:[ { 'name':'你好牛逼啊' }, { 'name':'就是你打个电话' }, { 'name':'真是垃圾啊' } ] } }, components:{ //注册子组件 zi:zi },}复制 子组件获取数据 <template> <div><ul> <liv-for="kinBookProp"@click="testProp">{{k.name}}</li>//获取到数据接着遍历出来 </ul&

  • ORA-22922: nonexistent LOB value

    ORA-22922:nonexistentLOBvalue TableofContents 1.现象及错误信息 2.分析 3.解决 4.知识总结 1现象及错误信息 项目现场反馈报表查询系统执行一个查询并导出的功能,无法将查询结果导出,报错:文件太大,不能作为附件。而实际上数据量是很小的。 同时发来了执行的SQL语句。我连上环境执行,发现报的是ORA-22922错误。错误信息如下: oerrora22922 22922,00000,"nonexistentLOBvalue" //*Cause:TheLOBvalueassociatedwiththeinputlocatordoesnotexist. //TheinformationinthelocatordoesnotrefertoanexistingLOB. //*Action:Repopulatethelocatorbyissuingaselectstatementandretry //theoperation. 复制 按照官方的提示信息来看,是在根据一定条件查询LOB时,没有找到LOB对象。sql语句由于是涉及到了业

相关推荐

推荐阅读