news 2026/4/16 12:14:40

毕设分享 深度学习街道行人流量计数系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
毕设分享 深度学习街道行人流量计数系统

文章目录

  • 0 前言
  • 1 项目运行效果
  • 2 设计概要
  • 2 原理介绍
    • 2.1 目标检测概况
      • 什么是目标检测?
      • 发展阶段
    • 2.2 行人检测
      • 行人检测简介
      • 行人检测技术难点
      • 行人检测实现效果
  • 4 最后

0 前言

🔥这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。并且很难找到完整的毕设参考学习资料。

为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目提供大家参考学习,今天要分享的是

🚩毕业设计 深度学习街道行人流量计数系统

🥇学长这里给一个题目综合评分(每项满分5分)

难度系数:3分
工作量:3分
创新点:4分

🧿 项目分享:见文末!

1 项目运行效果

视频效果:

毕业设计 深度学习街道行人流量计数系统

2 设计概要

行人跟踪( Pedestrian Detection)是利用计算机视觉技术判断图像或者视频序列中是否存在行人并给予精确定位,并在后续视频中跟踪行人。该技术可与行人重识别等技术结合,应用于人工智能系统、车辆辅助驾驶系统、智能机器人、智能视频监控、人体行为分析、智能交通等领域。由于行人兼具刚性和柔性物体的特性 ,外观易受穿着、尺度、遮挡、姿态和视角等影响,使得行人跟踪成为计算机视觉领域中一个既具有研究价值同时又极具挑战性的热门课题。


1.对单个行人跟踪分析并建立数学模型:
(1)了解视频数据的特点
(2)根据视频数据确定相应的算法
(3)建立整个过程的数学模型
2.行人检测的设计:
(1)了解行人检测的原理
(2)对比几种行人检测的方法确定合适的算法
(3)理解并掌握该行人检测的方法
(4)编程实现该算法
3.行人跟踪的设计:
(1)了解行人跟踪的原理
(2)对比几种跟踪的方法并选出合适的算法
(3)理解并掌握该行人检测的方法
(4)编成实现该算法
4.编程的实现:
(1)利用python实现程序的编写
(2)实现整个行人跟踪过程的控制

2 原理介绍

这里以一个简单的demo进行原理介绍。

2.1 目标检测概况

什么是目标检测?

目标检测,粗略来说就是:输入图片/视频,经过处理,得到:目标的位置信息(比如左上角和右下角的坐标)、目标的预测类别、目标的预测置信度(confidence)。

发展阶段

  1. 手工特征提取算法,如VJ、HOG、DPM

  2. R-CNN算法(2014),最早的基于深度学习的目标检测器之一,其结构是两级网络:

  • 1)首先需要诸如选择性搜索之类的算法来提出可能包含对象的候选边界框;
  • 2)然后将这些区域传递到CNN算法进行分类;
  1. R-CNN算法存在的问题是其仿真很慢,并且不是完整的端到端的目标检测器。

  2. Fast R-CNN算法(2014末),对原始R-CNN进行了相当大的改进:提高准确度,并减少执行正向传递所花费的时间。
    是,该模型仍然依赖于外部区域搜索算法。

  3. faster R-CNN算法(2015),真正的端到端深度学习目标检测器。删除了选择性搜索的要求,而是依赖于

  • (1)完全卷积的区域提议网络(RPN, Region Purpose Network),可以预测对象边界框和“对象”分数(量化它是一个区域的可能性的分数)。
  • (2)然后将RPN的输出传递到R-CNN组件以进行最终分类和标记。
  1. R-CNN系列算法,都采取了two-stage策略。特点是:虽然检测结果一般都非常准确,但仿真速度非常慢,即使是在GPU上也仅获得5 FPS。

  2. one-stage方法有:yolo(2015)、SSD(2015末),以及在这两个算法基础上改进的各论文提出的算法。这些算法的基本思路是:均匀地在图片的不同位置进行密集抽样,抽样时可以采用不同尺度和长宽比,然后利用CNN提取特征后直接进行分类与回归。
    整个过程只需要一步,所以其优势是速度快,但是训练比较困难。

  3. yolov3(2018)是yolo作者提出的第三个版本(之前还提过yolov2和它们的tinny版本,tinny版本经过压缩更快但是也降低了准确率)。

2.2 行人检测

这里学长以行人检测作为例子来讲解目标检测。

行人检测简介

行人检测( Pedestrian Detection)一直是计算机视觉研究中的热点和难点。行人检测要解决的问题是:找出图像或视频帧中所有的行人,包括位置和大小,一般用矩形框表示,和人脸检测类似,这也是典型的目标检测问题。

行人检测技术有很强的使用价值,它可以与行人跟踪,行人重识别等技术结合,应用于汽车无人驾驶系统(ADAS),智能机器人,智能视频监控,人体行为分析,客流统计系统,智能交通等领域。

行人检测技术难点

由于人体具有相当的柔性,因此会有各种姿态和形状,其外观受穿着,姿态,视角等影响非常大,另外还面临着遮挡 、光照等因素的影响,这使得行人检测成为计算机视觉领域中一个极具挑战性的课题。行人检测要解决的主要难题是:

  • 外观差异大:包括视角,姿态,服饰和附着物,光照,成像距离等。从不同的角度看过去,行人的外观是很不一样的。处于不同姿态的行人,外观差异也很大。由于人穿的衣服不同,以及打伞、戴帽子、戴围巾、提行李等附着物的影响,外观差异也非常大。光照的差异也导致了一些困难。远距离的人体和近距离的人体,在外观上差别也非常大。

  • 遮挡问题: 在很多应用场景中,行人非常密集,存在严重的遮挡,我们只能看到人体的一部分,这对检测算法带来了严重的挑战。

  • 背景复杂:无论是室内还是室外,行人检测一般面临的背景都非常复杂,有些物体的外观和形状、颜色、纹理很像人体,导致算法无法准确的区分。

  • 检测速度:行人检测一般采用了复杂的模型,运算量相当大,要达到实时非常困难,一般需要大量的优化。

行人检测实现效果

检测到行人后还可以做流量分析:

importcv2importnumpyasnpimportrandomdefload_images(dirname,amout=9999):img_list=[]file=open(dirname)img_name=file.readline()whileimg_name!='':# 文件尾img_name=dirname.rsplit(r'/',1)[0]+r'/'+img_name.split('/',1)[1].strip('\n')img_list.append(cv2.imread(img_name))img_name=file.readline()amout-=1ifamout<=0:# 控制读取图片的数量breakreturnimg_list# 从每一张没有人的原始图片中随机裁出10张64*128的图片作为负样本defsample_neg(full_neg_lst,neg_list,size):random.seed(1)width,height=size[1],size[0]foriinrange(len(full_neg_lst)):forjinrange(10):y=int(random.random()*(len(full_neg_lst[i])-height))x=int(random.random()*(len(full_neg_lst[i][0])-width))neg_list.append(full_neg_lst[i][y:y+height,x:x+width])returnneg_list# wsize: 处理图片大小,通常64*128; 输入图片尺寸>= wsizedefcomputeHOGs(img_lst,gradient_lst,wsize=(128,64)):hog=cv2.HOGDescriptor()# hog.winSize = wsizeforiinrange(len(img_lst)):ifimg_lst[i].shape[1]>=wsize[1]andimg_lst[i].shape[0]>=wsize[0]:roi=img_lst[i][(img_lst[i].shape[0]-wsize[0])//2:(img_lst[i].shape[0]-wsize[0])//2+wsize[0],\(img_lst[i].shape[1]-wsize[1])//2:(img_lst[i].shape[1]-wsize[1])//2+wsize[1]]gray=cv2.cvtColor(roi,cv2.COLOR_BGR2GRAY)gradient_lst.append(hog.compute(gray))# return gradient_lstdefget_svm_detector(svm):sv=svm.getSupportVectors()rho,_,_=svm.getDecisionFunction(0)sv=np.transpose(sv)returnnp.append(sv,[[-rho]],0)# 主程序# 第一步:计算HOG特征neg_list=[]pos_list=[]gradient_lst=[]labels=[]hard_neg_list=[]svm=cv2.ml.SVM_create()pos_list=load_images(r'G:/python_project/INRIAPerson/96X160H96/Train/pos.lst')full_neg_lst=load_images(r'G:/python_project/INRIAPerson/train_64x128_H96/neg.lst')sample_neg(full_neg_lst,neg_list,[128,64])print(len(neg_list))computeHOGs(pos_list,gradient_lst)[labels.append(+1)for_inrange(len(pos_list))]computeHOGs(neg_list,gradient_lst)[labels.append(-1)for_inrange(len(neg_list))]# 第二步:训练SVMsvm.setCoef0(0)svm.setCoef0(0.0)svm.setDegree(3)criteria=(cv2.TERM_CRITERIA_MAX_ITER+cv2.TERM_CRITERIA_EPS,1000,1e-3)svm.setTermCriteria(criteria)svm.setGamma(0)svm.setKernel(cv2.ml.SVM_LINEAR)svm.setNu(0.5)svm.setP(0.1)# for EPSILON_SVR, epsilon in loss function?svm.setC(0.01)# From paper, soft classifiersvm.setType(cv2.ml.SVM_EPS_SVR)# C_SVC # EPSILON_SVR # may be also NU_SVR # do regression tasksvm.train(np.array(gradient_lst),cv2.ml.ROW_SAMPLE,np.array(labels))# 第三步:加入识别错误的样本,进行第二轮训练# 参考 http://masikkk.com/article/SVM-HOG-HardExample/hog=cv2.HOGDescriptor()hard_neg_list.clear()hog.setSVMDetector(get_svm_detector(svm))foriinrange(len(full_neg_lst)):rects,wei=hog.detectMultiScale(full_neg_lst[i],winStride=(4,4),padding=(8,8),scale=1.05)for(x,y,w,h)inrects:hardExample=full_neg_lst[i][y:y+h,x:x+w]hard_neg_list.append(cv2.resize(hardExample,(64,128)))computeHOGs(hard_neg_list,gradient_lst)[labels.append(-1)for_inrange(len(hard_neg_list))]svm.train(np.array(gradient_lst),cv2.ml.ROW_SAMPLE,np.array(labels))# 第四步:保存训练结果hog.setSVMDetector(get_svm_detector(svm))hog.save('myHogDector.bin')

篇幅有限,更多详细设计见设计论文

4 最后

项目包含内容

🧿 项目分享:见文末!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/6 10:02:26

23种设计模式介绍以及C语言实现

设计模式详解&#xff1a;7大原则和23种设计模式 目录 设计模式7大原则创建型模式&#xff08;5个&#xff09;结构型模式&#xff08;7个&#xff09;行为型模式&#xff08;11个&#xff09; 设计模式7大原则 1. 单一职责原则&#xff08;Single Responsibility Principle…

作者头像 李华
网站建设 2026/4/15 10:23:31

MCP续证Agent开发考核难?掌握这3个关键点轻松过关

第一章&#xff1a;MCP续证Agent开发考核概述MCP&#xff08;Microsoft Certified Professional&#xff09;续证Agent开发考核旨在验证开发者在现代云应用架构下&#xff0c;使用自动化代理&#xff08;Agent&#xff09;实现持续集成、配置管理与安全合规的能力。该考核聚焦于…

作者头像 李华
网站建设 2026/4/11 2:04:05

10 个自考开题报告工具,AI降重免费网站推荐

10 个自考开题报告工具&#xff0c;AI降重免费网站推荐 论文写作的困境&#xff1a;时间紧、任务重&#xff0c;降重成了最难啃的骨头 对于自考学生来说&#xff0c;论文写作从来不是一件轻松的事。从选题到开题报告&#xff0c;再到文献综述和最终的论文撰写&#xff0c;每一个…

作者头像 李华
网站建设 2026/4/12 3:33:26

OS.js企业级Web桌面平台:技术选型与实施全攻略

OS.js企业级Web桌面平台&#xff1a;技术选型与实施全攻略 【免费下载链接】OS.js OS.js - JavaScript Web Desktop Platform 项目地址: https://gitcode.com/gh_mirrors/os/OS.js 在数字化转型浪潮中&#xff0c;企业迫切需要统一、安全、可扩展的云端工作环境。OS.js作…

作者头像 李华
网站建设 2026/4/16 12:14:20

python判断语句

python判断语句 前言 进行逻辑判断,是生活中常见的行为。同样,在程序中,进行逻辑判断也是最为基础的功能。 为什么学习判断语句 判断在程序中广泛应用,如果没有它,这些功能都难以实现。 一、布尔类型和比较运算符 1.1 布尔类型 进行判断,只有2个结果: 是 否 1.2 布尔类…

作者头像 李华