项目理念 - 对象检测和跟踪
项目名称:目标检测和跟踪
简介:很多人去超市和零售店和商店闲逛和逛街,而不是购买任何产品。分析这种行为的想法很有趣。
- 这种行为如何影响产品销售?
- 这些人是什么时间段来的?
- 什么可以帮助业主通过交叉引用计费数据来计算客户数量,但是您如何计算没有购物的人呢?
目标检测和跟踪是计算机视觉领域正在迅速成熟的领域之一。它使我们能够识别和定位图像或视频中的对象。通过这种识别和定位,可以使用对象检测和跟踪来计算特定场景中的对象并确定和跟踪它们的精确位置,同时准确地标记它们。
在这个项目中,我们使用了两个最流行的Python库进行对象检测, OpenCV和ImageAI 。
如今,每个超市都至少安装了一台闭路电视摄像机。数据存储在带有时间戳的集中存储库中。我们的最终目标是识别进出超市或零售店的人,并将他们分类为“客户”或“非客户”标签。通过实现这一目标,我们可以计算每个客户的实际成本。
方法论
我们的工作流程分为两个主要部分,
- 视频优化。
- 视频中的人体目标检测和跟踪。
视频优化
优化视频以使其尽可能轻,以使算法顺利运行并达到速度。视频只不过是一系列图像,因此要实现在图像的最低级别识别对象的目标,将通过在视频组成的所有图像上迭代过程来实现在视频上实现相同的目标的。
优化包括:
- 将图像/视频转换为灰度
- 将图像/视频还原为纯黑白色形式
- 屏蔽图像/视频
- 读取视频帧
视频中的人体目标检测和跟踪
对于目标检测和跟踪,我们使用了 OpenCV 和 ImageAI。对象检测和跟踪适用于录制的视频以及直接来自不同类型摄像机的实时信息。
对象检测和跟踪包括:
- 使用相机进行实时视频
- 使用现有的视频片段
- 使用 opencv 和对象检测和计数器方法的输入输出跟踪器
- 最后是一个 Web 应用程序作为 GUI,用于分析使用 streamlit 完成的超市和零售店的检测和跟踪结果。
目标检测与跟踪方法
我们接受一组人的边界框并计算他们各自的质心,然后计算任何新质心与现有质心之间的欧几里得距离以跟踪运动。
当质心从帧顶部截取选通线时,IN 计数器递增,当质心从下方截取时,帧 OUT 计数器递增。因此我们可以计算定义区域内的人数。
项目中使用的工具和技术
- Numpy:使用Python进行科学计算的基础包。
- OpenCV: “开源计算机视觉库”是一个开源的计算机视觉和机器学习软件库。 OpenCV 旨在为计算机视觉应用程序提供通用基础架构。
- ImageAI:它是一个Python库,旨在使开发人员、研究人员和学生能够使用简单的几行代码来构建具有自包含深度学习和计算机视觉功能的应用程序和系统。 ImageAI 提供了三种最强大的对象检测和跟踪模型——RetinaNet、YOLOv3 和 TinyYOLOv3。
- 在我们的项目中,我们使用了 YOLOv3 ,因为它的性能适中,准确度适中,检测速度和时间适中。
- Streamlit:它是一个开源Python库,可以轻松创建和共享用于机器学习和数据科学的精美自定义 Web 应用程序。
分步实施
- 安装要求
- 点子
- Opencv-python
- 张量流 2.4.0
- 图像人工智能
- 流线型
- 其他依赖:keras==2.4.3 numpy==1.19.3枕头==7.0.0 scipy==1.4.1 h5py==2.10.0 matplotlib==3.3.2 keras-resnet==0.2.0
- 下载 YOLOV3 模型
- 克隆已经推送到 github 的 repo 点击这里
- 运行代码以流式传输 webapp
运行代码的命令:
> streamlit run webapp.py [webapp.py – main file name]
展示输出的测试用例
我们决定在一个虚拟视频上检查我们的程序,以检查它是否可以计算进出商店/商场/集市的人数。系统识别质心并根据它们穿过门线的方向更新计数器。
理想输出:
IN : 7
OUT: 3
实际输出:
IN : 7
OUT: 3
正如视频中所展示的,我们可以看到我们的程序在准确计算人数方面做得很好。 (我们没有找到很多视频来测试我们在不同视频上的程序。)
程序流程
现实生活中的项目应用
该项目可以在各个领域实施,我们考虑在当地市场实施。目标很简单:
我们与业主交谈,他们让我们使用他们的电脑在他们的闭路电视录像中运行我们的程序。在我们这样做之后,制作一个相同的 Excel 表并进行一些基本的可视化,以帮助业主根据一天中的时间找出人们的脚。这将帮助他们相应地操纵价格并获得更多利润,同时也为客户提供一些回报。
示例:他们可以提供仅限于该特定时间段的折扣,他们在没有的时候获利,并且客户以比平时更便宜的价格获得产品。这对双方来说都是双赢的局面。
该应用程序还可以应用于各种其他领域,例如商店和公共场所的安全系统。可以对系统进行培训以识别威胁并通知最近的当局作为警报+记录事件作为证据。
项目团队 -
Tanya Ranjan, Rishab Sarkar, Jesal Jadeja, Bartolomeu Carvalho