2026/4/9 18:47:31
网站建设
项目流程
wordpress下载,宁波seo博客,凡科做网站视频,百度网站怎么做的赚钱文章目录 0 前言1 项目运行效果2 设计概要2 原理介绍2.1 目标检测概况什么是目标检测#xff1f;发展阶段 2.2 行人检测行人检测简介行人检测技术难点行人检测实现效果 4 最后 0 前言
#x1f525;这两年开始毕业设计和毕业答辩的要求和难度不断提升#xff0c;传统的毕设题…文章目录0 前言1 项目运行效果2 设计概要2 原理介绍2.1 目标检测概况什么是目标检测发展阶段2.2 行人检测行人检测简介行人检测技术难点行人检测实现效果4 最后0 前言这两年开始毕业设计和毕业答辩的要求和难度不断提升传统的毕设题目缺少创新和亮点往往达不到毕业答辩的要求这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。并且很难找到完整的毕设参考学习资料。为了大家能够顺利以及最少的精力通过毕设学长分享优质毕业设计项目提供大家参考学习今天要分享的是毕业设计 深度学习街道行人流量计数系统学长这里给一个题目综合评分(每项满分5分)难度系数3分工作量3分创新点4分 项目分享:见文末!1 项目运行效果视频效果毕业设计 深度学习街道行人流量计数系统2 设计概要行人跟踪( Pedestrian Detection)是利用计算机视觉技术判断图像或者视频序列中是否存在行人并给予精确定位并在后续视频中跟踪行人。该技术可与行人重识别等技术结合应用于人工智能系统、车辆辅助驾驶系统、智能机器人、智能视频监控、人体行为分析、智能交通等领域。由于行人兼具刚性和柔性物体的特性 外观易受穿着、尺度、遮挡、姿态和视角等影响使得行人跟踪成为计算机视觉领域中一个既具有研究价值同时又极具挑战性的热门课题。.对单个行人跟踪分析并建立数学模型了解视频数据的特点根据视频数据确定相应的算法建立整个过程的数学模型.行人检测的设计了解行人检测的原理对比几种行人检测的方法确定合适的算法理解并掌握该行人检测的方法编程实现该算法.行人跟踪的设计了解行人跟踪的原理对比几种跟踪的方法并选出合适的算法理解并掌握该行人检测的方法编成实现该算法.编程的实现利用python实现程序的编写实现整个行人跟踪过程的控制2 原理介绍这里以一个简单的demo进行原理介绍。2.1 目标检测概况什么是目标检测目标检测粗略来说就是输入图片/视频经过处理得到目标的位置信息比如左上角和右下角的坐标、目标的预测类别、目标的预测置信度confidence。发展阶段手工特征提取算法如VJ、HOG、DPMR-CNN算法2014最早的基于深度学习的目标检测器之一其结构是两级网络1首先需要诸如选择性搜索之类的算法来提出可能包含对象的候选边界框2然后将这些区域传递到CNN算法进行分类R-CNN算法存在的问题是其仿真很慢并且不是完整的端到端的目标检测器。Fast R-CNN算法2014末对原始R-CNN进行了相当大的改进提高准确度并减少执行正向传递所花费的时间。是该模型仍然依赖于外部区域搜索算法。faster R-CNN算法2015真正的端到端深度学习目标检测器。删除了选择性搜索的要求而是依赖于1完全卷积的区域提议网络RPN, Region Purpose Network可以预测对象边界框和“对象”分数量化它是一个区域的可能性的分数。2然后将RPN的输出传递到R-CNN组件以进行最终分类和标记。R-CNN系列算法都采取了two-stage策略。特点是虽然检测结果一般都非常准确但仿真速度非常慢即使是在GPU上也仅获得5 FPS。one-stage方法有yolo2015、SSD2015末以及在这两个算法基础上改进的各论文提出的算法。这些算法的基本思路是均匀地在图片的不同位置进行密集抽样抽样时可以采用不同尺度和长宽比然后利用CNN提取特征后直接进行分类与回归。整个过程只需要一步所以其优势是速度快但是训练比较困难。yolov32018是yolo作者提出的第三个版本之前还提过yolov2和它们的tinny版本tinny版本经过压缩更快但是也降低了准确率。2.2 行人检测这里学长以行人检测作为例子来讲解目标检测。行人检测简介行人检测( Pedestrian Detection)一直是计算机视觉研究中的热点和难点。行人检测要解决的问题是找出图像或视频帧中所有的行人包括位置和大小一般用矩形框表示和人脸检测类似这也是典型的目标检测问题。行人检测技术有很强的使用价值它可以与行人跟踪行人重识别等技术结合应用于汽车无人驾驶系统(ADAS)智能机器人智能视频监控人体行为分析客流统计系统智能交通等领域。行人检测技术难点由于人体具有相当的柔性因此会有各种姿态和形状其外观受穿着姿态视角等影响非常大另外还面临着遮挡 、光照等因素的影响这使得行人检测成为计算机视觉领域中一个极具挑战性的课题。行人检测要解决的主要难题是:外观差异大包括视角姿态服饰和附着物光照成像距离等。从不同的角度看过去行人的外观是很不一样的。处于不同姿态的行人外观差异也很大。由于人穿的衣服不同以及打伞、戴帽子、戴围巾、提行李等附着物的影响外观差异也非常大。光照的差异也导致了一些困难。远距离的人体和近距离的人体在外观上差别也非常大。遮挡问题 在很多应用场景中行人非常密集存在严重的遮挡我们只能看到人体的一部分这对检测算法带来了严重的挑战。背景复杂无论是室内还是室外行人检测一般面临的背景都非常复杂有些物体的外观和形状、颜色、纹理很像人体导致算法无法准确的区分。检测速度行人检测一般采用了复杂的模型运算量相当大要达到实时非常困难一般需要大量的优化。行人检测实现效果检测到行人后还可以做流量分析importcv2importnumpyasnpimportrandomdefload_images(dirname,amout9999):img_list[]fileopen(dirname)img_namefile.readline()whileimg_name!:# 文件尾img_namedirname.rsplit(r/,1)[0]r/img_name.split(/,1)[1].strip(\n)img_list.append(cv2.imread(img_name))img_namefile.readline()amout-1ifamout0:# 控制读取图片的数量breakreturnimg_list# 从每一张没有人的原始图片中随机裁出10张64*128的图片作为负样本defsample_neg(full_neg_lst,neg_list,size):random.seed(1)width,heightsize[1],size[0]foriinrange(len(full_neg_lst)):forjinrange(10):yint(random.random()*(len(full_neg_lst[i])-height))xint(random.random()*(len(full_neg_lst[i][0])-width))neg_list.append(full_neg_lst[i][y:yheight,x:xwidth])returnneg_list# wsize: 处理图片大小通常64*128; 输入图片尺寸 wsizedefcomputeHOGs(img_lst,gradient_lst,wsize(128,64)):hogcv2.HOGDescriptor()# hog.winSize wsizeforiinrange(len(img_lst)):ifimg_lst[i].shape[1]wsize[1]andimg_lst[i].shape[0]wsize[0]:roiimg_lst[i][(img_lst[i].shape[0]-wsize[0])//2:(img_lst[i].shape[0]-wsize[0])//2wsize[0],\(img_lst[i].shape[1]-wsize[1])//2:(img_lst[i].shape[1]-wsize[1])//2wsize[1]]graycv2.cvtColor(roi,cv2.COLOR_BGR2GRAY)gradient_lst.append(hog.compute(gray))# return gradient_lstdefget_svm_detector(svm):svsvm.getSupportVectors()rho,_,_svm.getDecisionFunction(0)svnp.transpose(sv)returnnp.append(sv,[[-rho]],0)# 主程序# 第一步计算HOG特征neg_list[]pos_list[]gradient_lst[]labels[]hard_neg_list[]svmcv2.ml.SVM_create()pos_listload_images(rG:/python_project/INRIAPerson/96X160H96/Train/pos.lst)full_neg_lstload_images(rG:/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_ITERcv2.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/hogcv2.HOGDescriptor()hard_neg_list.clear()hog.setSVMDetector(get_svm_detector(svm))foriinrange(len(full_neg_lst)):rects,weihog.detectMultiScale(full_neg_lst[i],winStride(4,4),padding(8,8),scale1.05)for(x,y,w,h)inrects:hardExamplefull_neg_lst[i][y:yh,x:xw]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 最后项目包含内容 项目分享:见文末!