竞赛 深度学习实现行人重识别 - python opencv yolo Reid
文章目录
- 0 前言
- 1 课题背景
- 2 效果展示
- 3 行人检测
- 4 行人重识别
- 5 其他工具
- 6 最后
0 前言
🔥 优质竞赛项目系列,今天要分享的是
🚩 **基于深度学习的行人重识别算法研究与实现 **
该项目较为新颖,适合作为竞赛课题方向,学长非常推荐!
🥇学长这里给一个题目综合评分(每项满分5分)
- 难度系数:3分
- 工作量:3分
- 创新点:5分
🧿 更多资料, 项目分享:
https://gitee.com/dancheng-senior/postgraduate
1 课题背景
行人重识别是计算机视觉领域的研究热点之一,旨在研究不重叠的多个摄像区域间对于特定行人的匹配准确率,是图像检索的子问题,多应用于安防和刑侦。我国实现的视频监控“天网”,就是通过在人流量大的公共区域密集安装监控设备来实现“平安城市”建设。尽管部分摄像头可转动,但仍存在监控盲区和死角等局限性问题,Re-
ID技术弥补了摄像设备的视觉局限性。然而,在实际应用中异时异地相同行人的图像数据,在姿势、前景背景、光线视角以及成像分辨率等方面差异大,使得Re-
ID研究具有挑战性。
行人重识别展示
2 效果展示
手动标记
检测结果
3 行人检测
本项目实现了基于 yolo框架的行人目标检测算法,并将该目标检测算法应用在图像和视频的识别检测之中。
简介
下图所示为 YOLOv5 的网络结构图,分为输入端,Backbone,Neck 和 Prediction 四个部分。其中,
输入端包括 Mosaic 数据增强、自适应图片缩放、自适应锚框计算,Backbone 包括 Focus 结构、CSP
结 构,Neck 包 括 FPN+PAN 结 构,Prediction 包 括GIOU_Loss 结构。
Head输出层
输出层的锚框机制与YOLOv4相同,主要改进的是训练时的损失函数GIOU_Loss,以及预测框筛选的DIOU_nms。
对于Head部分,可以看到三个紫色箭头处的特征图是40×40、20×20、10×10。以及最后Prediction中用于预测的3个特征图:
①==>40×40×255
②==>20×20×255③==>10×10×255
相关代码
class Yolo(object):def __init__(self, weights_file, verbose=True):self.verbose = verbose# detection paramsself.S = 7 # cell sizeself.B = 2 # boxes_per_cellself.classes = ["aeroplane", "bicycle", "bird", "boat", "bottle","bus", "car", "cat", "chair", "cow", "diningtable","dog", "horse", "motorbike", "person", "pottedplant","sheep", "sofa", "train","tvmonitor"]self.C = len(self.classes) # number of classes# offset for box center (top left point of each cell)self.x_offset = np.transpose(np.reshape(np.array([np.arange(self.S)]*self.S*self.B),[self.B, self.S, self.S]), [1, 2, 0])self.y_offset = np.transpose(self.x_offset, [1, 0, 2])self.threshold = 0.2 # confidence scores threholdself.iou_threshold = 0.4# the maximum number of boxes to be selected by non max suppressionself.max_output_size = 10self.sess = tf.Session()self._build_net()self._build_detector()self._load_weights(weights_file)
4 行人重识别
简介
行人重识别(Person re-identification)也称行人再识别, 被广泛认为是一个图像检索的子问题,
是利用计算机视觉技术判断图像或者视频中是否存在特定行人的技术,
即给定一个监控行人图像检索跨设备下的该行人图像。行人重识别技术可以弥补目前固定摄像头的视觉局限, 并可与行人检测、行人跟踪技术相结合,
应用于视频监控、智能安防等领域。
行人重识别系统
行人检测
主要用于检测视频中出现的人像,作为一个行人重识别首先要做到的就是能够将图片中的行人识别出来,称为Gallery输入。当然,在学术研究领域,行人重识别主要还是关注的下面这个部分,而对于行人检测这部分多选择采用目前已经设计好的框架。
行人重识别
这一部分就是对上面的Probe以及Gallery进行特征提取,当然提取的方式可以是手工提取,也可以使用卷积神经网络进行提取。然后呢,就是对图片的相似度进行度量,根据相似图进行排序。
针对行人重识别系统从细节来说,包括下面几个部分:
- 特征提取(feature Extraction):学习能够应对在不同摄像头下行人变化的特征。
- 度量学习(Metric Learning) :将学习到的特征映射到新的空间使相同的人更近不同的人更远。
- 图像检索(Matching):根据图片特征之间的距离进行排序,返回检索结果
Reid提取特征
行人重识别和人脸识别是类似的,刚开始接触的可以认为就是人脸换成行人的识别。
-
截取需要识别的行人底库
-
保存行人特征,方便进行特征比对
相关代码
# features:reid模型输出512dim特征
person_cossim = cosine_similarity(features, self.query_feat)
max_idx = np.argmax(person_cossim, axis=1)
maximum = np.max(person_cossim, axis=1)
max_idx[maximum < 0.6] = -1
score = maximum
reid_results = max_idx
draw_person(ori_img, xy, reid_results, self.names) # draw_person name
5 其他工具
OpenCV
是一个跨平台的计算机视觉处理开源软件库,是由Intel公司俄罗斯团队发起并参与和维护,支持与计算机视觉和机器学习相关的众多算法。
本项目中利用opencv进行相关标记工作,相关代码:
import cv2
import numpy as npdef cv_imread(filePath):cv_img = cv2.imdecode(np.fromfile(filePath,dtype=np.uint8), -1)return cv_img# 需要可视化的图片地址
img_path = ‘’
# 对应图片的检测结果
detection_result = []# 如果路径中包含中文,则需要用函数cv_imread的方式来读取,否则会报错
img = cv_imread(img_path)# 可视化
for bb in detection_result:# bb的格式为:[xmin, ymin, xmax, ymax]cv2.rectangle(img, (int(bb[0]), int(bb[1])),(int(bb[2]), int(bb[3])),(255, 0, 0), 2)cv2.imshow('1', img)
cv2.waitKey(0)
6 最后
🧿 更多资料, 项目分享:
https://gitee.com/dancheng-senior/postgraduate
相关文章:

竞赛 深度学习实现行人重识别 - python opencv yolo Reid
文章目录 0 前言1 课题背景2 效果展示3 行人检测4 行人重识别5 其他工具6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习的行人重识别算法研究与实现 ** 该项目较为新颖,适合作为竞赛课题方向,…...

当代都市的时尚先锋:气膜建筑的魅力
当代城市的崛起如一部快速奔腾的时光流。在这个光速发展的都市中,时间被看作珍贵的黄金,而效率被视为无价的生命。而在这个节奏日益加快的现代都市背后,一个独特的“神器”——气膜建筑,悄然崭露头角,成为城市发展的领…...

品牌加盟商做信息展示预约小程序的效果如何
很多行业都有中部或头部品牌,对实体品牌企业来说想要快速高效发展,除了多地直营店外还需要招募加盟商进而提升生意营收。 因此线上渠道变得尤为重要,除了网站外,小程序是连接多平台生态很好的工具,随时打开、直接触达…...

delphi 11.3 FastReport 多设备跨平台 打印之解决方法
以下能WINDOWS10 DELPHI 11.3 FastReport6.0上顺利通过 FastReport6.2对Multi-Device Application应用的支持不够友好,如下图;在palette FastReport6.0才出现几个制件。 非Multi-Device Application应用时是一大堆; 非Multi-Device Appl…...

配置vue 环境
一、安装Node.js及配置环境 环境变量配置 第一步:“此电脑”-右键-“属性”-“高级系统设置”-“高级”-“环境变量” 第二步(我的为:C:\Program Files\nodejs ),然后编辑path,新建,为…...

Visio文件编辑查看工具Visio Viewer for Mac
Visio Viewer mac版是一款Visio文件查看工具,可以使用本程序打开所有的visio文件数据,支持多种语言环境,可以对visio文件进行编辑、跳转参数等设置。 Visio Viewer for Mac可以打开和查看Visio文件(.vsd、.vdx和.vsdm文件&#x…...

现在软文发布平台都有哪些?如何在正规媒体发稿?
近年来,随着广告行业竞争愈加激烈,越来越多的企业开始注重软文宣传。软文推广平台是企业在网络上发布软文、传播信息和推广产品的重要工具。 媒介易软文平台介绍更好的品牌宣传和市场推广:软文推广发稿有哪些平台, 软文发稿好方法?软文不仅能…...

【卷积神经网络】YOLO 算法原理
在计算机视觉领域中,目标检测(Object Detection)是一个具有挑战性且重要的新兴研究方向。目标检测不仅要预测图片中是否包含待检测的目标,还需要在图片中指出它们的位置。2015 年,Joseph Redmon, Santosh Divvala 等人…...

云计算与ai人工智能对高防cdn的发展
高防CDN(Content Delivery Network)作为网络安全领域的一项关键技术,致力于保护在线内容免受各种网络攻击,包括分布式拒绝服务攻击(DDoS)等。然而,随着人工智能(AI)和大数…...

Web3时代:探索DAO的未来之路
Web3 的兴起不仅代表着技术进步,更是对人类协作、创新和价值塑造方式的一次重大思考。在 Web3 时代,社区不再仅仅是共同兴趣的聚集点,而变成了一个价值交流和创新的平台。 去中心化:超越技术的革命 去中心化不仅仅是 Web3 的技术…...
odbcinst文件
odbcinst文件是ODBC(Open Database Connectivity)驱动程序管理器的配置文件。ODBC是一种标准的数据库访问接口,允许应用程序通过统一的方式连接和访问不同类型的数据库。 odbcinst文件通常位于操作系统的特定目录中,并且用于定义…...
(CQUPT 的某数据结构homework)
CQUPT 的某数据结构homework 基于线性表的图书信息管理基于栈的算术表达式求值基于字符串模式匹配算法的病毒感染检测问题 基于哈夫曼树的数据压缩算法基于二叉树的表达式求值算法基于 Dijsktra 算法的最短路基于广度优先搜索的六度空间排序算法的实现与分析 基于线性表的图书信…...

Android页面周期、页面跳转
1.什么是Activity? Activity是Android的四大组件之一,它是一种可以包含用户界面的组件,主要用于和用户进行交互。Activity用于显示用户界面,用户通过Activity交互完成相关操作,一个APP允许有多个Activity。 2.Activi…...

腾讯云轻量应用镜像、系统镜像、Docker基础镜像、自定义镜像和共享镜像介绍
腾讯云轻量应用服务器镜像类型分为应用镜像、系统镜像、Docker基础镜像、自定义镜像和共享镜像,腾讯云百科txybk.com来详细说下不同镜像类型说明和详细介绍: 轻量应用服务器镜像类型说明 腾讯云轻量应用服务器 应用镜像:独有的应用镜像除了包…...
YOLOv8芒果独家首发 | 改进新主干:改进版目标检测新范式骨干PPHGNetv2,百度出品,提升YOLOv8检测能力
💡本篇内容:YOLOv8改进新主干:目标检测新范式骨干PPHGNetv2改进版,百度出品,提升YOLOv8检测能力 💡🚀🚀🚀本博客 改进源代码改进 适用于 YOLOv8 按步骤操作运行改进后的代码即可 💡本文提出改进 原创 方式:二次创新,YOLOv8专属,充分结合YOLOv8和 PPHGNetv…...
工作测试点
智能硬件的兼容性测试 通常涉及以下几个方面: 硬件兼容性测试:测试智能硬件是否与不同类型的设备(如电脑、手机、平板电脑等)硬件兼容。这包括测试设备的接口类型(如USB、HDMI、Bluetooth等)是否能够正确连…...

智慧医院—互联网医院系统带你体验数字化时代
智慧医疗作为当今医疗领域的新热点,也将在未来中得到充分展现。包括智慧医院、远程医疗、医疗大数据等多个方面,这些智慧医疗新产物和服务将改变传统的医疗模式,提供更加高效、便捷的医疗服务。 1、远程医疗服务:智慧医疗为患者提…...

eclipse Occurrence
eclipse Occurrence Occurrence of initUi2_setData_99 Window->Preferences->General->Editors->Text Editors->Annotations->Occurrences 个人感觉最好用的颜色; 边线,正文都可以看得清楚...

浏览器自动化脚本 Selenium WebDriver(Java)常用 API 汇总
一、Selenium Webdriver 常用的API (一)引入依赖 <dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>3.141.59</version></dependency>开始&am…...

学习笔记|两独立样本秩和检验|曼-惠特尼 U数据分布图|规范表达|《小白爱上SPSS》课程:SPSS第十二讲 | 两独立样本秩和检验如何做?
目录 学习目的软件版本原始文档两独立样本秩和检验一、实战案例二、统计策略三、SPSS操作1、正态性检验2、两样本秩和检验 四、结果解读疑问:曼-惠特尼 U数据分布图如何绘制? 五、规范报告1、规范表格2、规范文字 六、划重点 学习目的 SPSS第十二讲 | 两…...

微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...

.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...

html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...