李宏铭
(宁波职业技术学院,浙江宁波,315800)
随着饲养宠物狗的家庭越来越多,宠物狗的大量出现也给人们带来了很多烦扰,引发了不少的社会问题,宠物狗与人类之间的矛盾冲突也越来越频繁。近年来宠物狗咬人事件、遛狗不牵狗绳、不清理宠物狗的大小便等问题事件层出不穷,城市养狗所带来的问题已经成为城市管理急需而又难以解决的社会事件。
与频繁的宠物狗所带来的大量的纠纷相比,国家行政管理部门的执法力量却相对薄弱。另一方面,宠物类管理活动的执法程序相对复杂,相关的程序和要求较多,取证难度大,执法成本相对较高。因此,基于目前相对成熟的人工智能技术,利用布置在街道和小区的各类摄像头,设计一款宠物目标检测的系统,就显得非常有必要。本文提出了基于YOLO的宠物狗牵绳检测程序,使用flask 作为web 应用程序的设计语言,实现了宠物狗牵绳检测的系统,能够对宠物狗未牵绳的现象进行预警,从而可以提前预防因宠物狗未牵绳而导致咬人或扰民事件的发生,也能够对事件发生后的取证提供便利。
宠物狗牵绳检测系统将摄像头的视频流接入到系统中,对视频流中的图像进行检测,判断宠物狗是否牵绳,如果没有牵绳,则会进行相应的预警处理,主要的流程如图1 所示。系统首先对接入的视频流进行定期检测,截取视频流中的帧作为检测图像,送入系统检测模块,利用训练好的YOLO 模型进行检测,主要检测图像中是否存在狗、人和绳,对不存在狗的图像直接做略过处理,而对于存在狗的图像,则继续判断狗是否位于图像边缘,如果是在图像边缘,则可能人还未进入摄像头范围,因此不作任何处理,如果在图像中间检测到狗的存在,判断是否有人,如果没有人的出现,则判定宠物狗未牵绳,直接将图片保存下来,并发出相应的预警信息,如果检测到狗和人,则判断是否有绳的存在,如果没有绳子的存在,则判定宠物狗没有牵绳,将图片保存下来并进行预警处理,如果存在绳子,则判断绳子是否在狗和人之间,如果没在狗和人之间,也判定狗没有牵绳,将图片保存并进行预警处理。
图1 系统检测流程
由于摄像头覆盖的范围一般比较大,狗在摄像头中的活动范围相对较广,从摄像头拍摄到的位置的一边跑到另外一边,往往需要较长的时间,因此狗在摄像头拍摄的视频中不会一闪而过,没有必要检测视频中的每一帧。另外考虑到调用YOLO模型检测图像需要消耗大量的系统资源和算力,为了节省系统的资源,采用每隔3 秒截取摄像头捕获的视频流中的帧作为检测图像,对图像进行狗牵绳的检测。
YOLO 模型是目前比较常用的目标检测方法,由Redmon 等研究人员在2016 年发表的一篇论文中被提出,英文全称为“You Only Look Once”,其意思是你只需要看一眼就够了。在深度学习的目标检测领域中,YOLO 模型属于单阶段式(One-stage)目标检测方法,和其他深度学习模型相比,它最大的特点是实现快速检测的同时,它还兼顾了较高的精度,被广泛地应用在实时系统中,受到了广大爱好深度学习者的喜爱。YOLO 模型具有非常大的优势,采用单神经网络来预测检测目标的边界和类别概率,它直接将目标边界的定位转换成回归问题,图像会被统一到相同的尺寸,采用网格形式进行平均分割,只需要处理一次图像就能得到定位的坐标,因此速度相当快,精度也比较高。
(1)模型的选择
YOLO 目前的最新版本为V7,而V5 是YOLO 目前比较成熟的版本,而且应用比较广泛。由于我们的系统需要在实际系统中进行应用,因此从模型的实用性和稳定性考虑,选择V5 作为系统的模型。YOLOv5 模型最早发布于2020年6 月,是由Ultralytics 公司公开发布的,它是通过改进YOLOv3 模型实现。目前的YOLOv5 有v5s、v5m、v5l 和v5x4 个版本,其中YOLOv5s 网络深度最小,特征图的宽度也最小,因此相比其他几个版本速度最快,相对应的精度也最低,因此,该版本对于追求速度的项目来说是比较合适的,其他版本则在该版本的基础上加深网络和加宽特征图。
(2)模型的训练
基于YOLOv5 已经存在很多训练好的人和狗的模型,精度也相当不错,但没有发现绳子的模型,所以需要自己训练相应的模型。模型训练需要大量的图片资源,图片的来源主要通过网络搜索和安装摄像头实时捕获,另外在检测过程中没有识别出来的图片,也可以加入原来的图片集中进行再训练。首先,通过网络搜索相关的图片,然后利用脚本下载人遛狗的图片,接着通过人工识别,将不合适的图片剔除出去,最后剩下约两百张左右的图片。两百张的图片在模型训练中是比较少的,因此采用深度学习领域比较常用的数据增强的方法,将图片扩展到1 千张。根据以往的经验,使用网络上的图片进行训练,在实际应用中的效果并不理想,因此,需要收集大量的摄像头拍摄的图片。由于人工检测摄像头拍摄的有狗的图片太过费时费力,因此使用网络上已经训练好的检测狗的YOLO 模型,将所有摄像头拍摄的图像中出现狗的图片抓取下来。利用三个部署在街道和社区的摄像头,经过一段时间的抓取,除了中途有几次出现意外而没抓取到外,共抓取到七百多张图片,其中图像元素重复得较多,经过挑选,选取了一百张图片作为训练模型的原始图像。将选取好的图片采用数据增强的方法,扩展到五百张,和先前网络上收集的图片一起进行训练,然后将训练好的模型用于实际的检测。图片在训练前先要进行分类,将80%的图片划分到训练集,剩余的20%的图片用于验证集。用于模型训练的图片都要进行打标签操作,打标签的软件选择labelImg,标签分成三类,分别是person、dog 和cord。
基于web 的系统在部署方面非常方便,使用简单,可移植性强。本系统的检测使用web 架构,有利于系统的快速部署,也有利于其他web 系统的调用,可以方便地为其他web 系统提供数据。由于YOLOv5 使用的是Python 环境,因此,web应用程序优先考虑使用基于Python的web框架,这样有利于方便地调用YOLOv5 的模型。Python 拥有很多优秀的web 框架,主要有Django、Flask、CherryPy、Pyramid、Grok、Turbogers 等,由于我们项目规模较小,因此选择Flask 作为本次项目的框架。Flask 是Python 下的一个轻量级的web 框架,其使用内核较为简单,被业界称为微框架,易于上手,较其他框架更为轻便和灵活,非常适合小型项目的快速开发和实现,而其强大的功能库可以让开发者开发出功能强大的网站。数据库采用小型的SQLite3数据库,该数据库的最大特点是占用资源非常低,运行速度快,很多嵌入式产品和小型的系统中都使用该数据库。很多操作系统都能非常方便地安装和使用SQLite3 数据库,其他很多程序设计语言也能和该数据库无缝对接。Python 已经集成了SQLite 数据库,不需要额外安装,就可以非常方便地调用SQLite 数据库,Python+SQLite 已经成为开发Python 小项目的选择。
(1)系统功能的设定
本系统的主要功能是使用摄像头的视频流来实现宠物狗未牵绳的检测和预警功能,因此涉及开启功能、查看功能和管理功能等主要功能,整个系统分为用户管理、角色管理、系统管理和图像管理四大块。用户管理包括人员的添加、删除、修改和密码重置等功能,角色管理主要包括人员的角色的设定,系统管理主要包括系统的运行和状态的改变,通过选取不同线路的摄像头来开启系统的运行,也可以停止系统的运行,图像管理主要是查看系统上抓取的宠物检测的图像,以及备份图像的功能和推送预警的功能。
(2)用户功能的设定
本系统将角色分成三类,一类是超级管理员,一类是普通管理员,一类是普通用户。超级管理员具有所有权限,包括用户管理、角色管理、系统管理和查看功能,普通管理员主要拥有系统管理和图像管理权限,而普通用户则只有图像管理的权限。
(3)页面的设计
本系统主要拥有登录界面、人员管理界面、角色管理界面、系统管理界面和图像管理界面。登录界面包括输入用户名、密码和验证码,成功后进入主界面,主界面根据不同的角色展现不同的页面。人员管理界面主要有人员的添加和删除功能,以及人员的信息修改和密码重置功能。系统管理界面主要是采用摄像头的选择来开启系统的运行,可以选择网络上的实时摄像头,也可以选择视频文件,另外可以根据不同线路的摄像头开始或停止检测。图像管理界面可以根据日期来查看宠物检测所抓取的未牵绳的图像,并能将图像进行备份,以及推送预警的开启和关闭。
(1)调用摄像头视频的功能实现
管理员在登录系统后,可以输入视频流地址,启动宠物检测模块系统功能,该功能在后台会自动调用YOLOv5 模型对视频流中是否有出现狗未牵绳的情况进行检测,输入视频流地址的页面如图2 所示,后台调用YOLOv5 模型进行视频流实时检测的代码如图3 所示。
图2 视频流的输入界面
图3 调用模型检测的代码
为了更好地调用YOLO 模型,发挥模型的最佳检测效果,需要对相关的参数进行设置,参数设置如图4 所示。
图4 YOLOv5 模型参数设置
(2)图像备份和预警推送的实现
系统检测出狗未牵绳的情况,会将视频流中的该帧图像保存到系统后台,并推送到相关预警模块。宠物狗未牵绳的图像按照日期进行保存,图像保存代码如图5 所示。宠物狗未牵绳的相关信息也会推送给专门的预警信息进行处理,推送到预警系统的代码如图6 所示。
图5 保存狗未牵绳的图像的代码
图6 将图像推送至预警系统的代码
系统开发完成后,部署在一个小区的物业公司的一台服务器上,摄像头是4 路不同线路接入,有高空摄像头,也有安装在较低位置的门禁类的摄像头。经过一段时间的上线运行,系统的效果比较理想,基本达到了预想的目标,大部分狗未牵绳的图像都被检测出来了,检测效果如图7 所示。但也存在着一些本该检测出来,而没有检测出来的情况,以及一些其他事务被误检测成了狗的情况,如图8 所示。
图7 检测正确的图像
图8 未检测到绳子或检测错误的图像
本系统运行的结果,主要取决于模型的训练程度,模型直接影响了系统最终的效果。从系统运行的整体情况来看,YOLO 是一个比较不错的目标检测模型,经过一些图片的训练,就能达到比较理想的效果。从整体运行的情况来看,系统的宠物狗未牵绳检测率达到了60%以上,存在的问题也比较明显,主要体现在三个方面:一是光线问题,光线亮的效果优于光线暗的效果,白天的检测效果明显优于晚上的检测效果,光线所带来的图像的变化,对于检测效果具有非常大的影响;二是摄像头的像素问题,不同像素的摄像头,检测的效果也不一样;三是绳子的检测效果不佳,这也是本系统目前存在的最主要的问题,宠物狗牵绳子的时候没有检测出绳子,这在光线暗的时候出现的概率较大,而宠物狗没有牵绳子的时候,有时候会把地面的纹理误检测成绳子。
随着人工智能技术的不断发展和应用,机器换人成为社会发展的必然趋势。宠物狗牵绳的自动检测,在不久的将来也会成为现实。本系统基于YOLO 开发,基本实现了宠物狗牵绳的自动检测机制,为其他研究和开发人员实现类似系统提供了方向。本系统由于图像样本数量不多,导致不同场景和复杂环境下的检测效果不佳,下一步的研究将从扩大样本数量和利用迁移学习技术来提高宠物狗牵绳的检测精度,从而提高整个宠物狗系统的检测效率。
相关知识
一种基于YOLO的宠物图像识别方法
毕业设计:基于深度学习的遛狗牵绳检测系统 人工智能 python
毕业设计:基于计算机视觉的遛狗牵绳识别系统 目标检测
[数据集][目标检测]遛狗不牵绳数据集VOC格式
基于YOLO特征检测模型的非法溜宠物识别
基于大数据的宠物领养系统设计与实现
[1174]基于JAVA的宠物化验检测智慧管理系统的设计与实现
宠物狗购买系统的设计与实现
基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的障碍物检测系统(深度学习代码+UI界面+训练数据集)
基于java的宠物管理系统设计与实现
网址: 基于YOLO 的宠物狗牵绳检测系统的设计与实现 https://m.mcbbbk.com/newsview348646.html
上一篇: 关于宠物狗绳的问卷调查 |
下一篇: 沈阳中宠宠物用品有限公司 |