计算机毕设 深度学习实现行人重识别 - python opencv yolo Reid

news2024/9/22 11:25:21

文章目录

  • 0 前言
  • 1 课题背景
  • 2 效果展示
  • 3 行人检测
  • 4 行人重识别
  • 5 其他工具
  • 6 最后


0 前言

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

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

🚩 **基于深度学习的行人重识别算法研究与实现 **

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

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

在这里插入图片描述

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 params
        self.S = 7  # cell size
        self.B = 2  # boxes_per_cell
        self.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 threhold
        self.iou_threshold = 0.4
        #  the maximum number of boxes to be selected by non max suppression
        self.max_output_size = 10

        self.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提取特征
行人重识别和人脸识别是类似的,刚开始接触的可以认为就是人脸换成行人的识别。

  1. 截取需要识别的行人底库
    在这里插入图片描述

  2. 保存行人特征,方便进行特征比对

相关代码

# 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 np

def 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 最后

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/815101.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue3使用vxetable进行表格的编辑、删除与新增

效果图如下: vxetable4传送门 一、引入插件 package.json中加入"vxe-table": "4.0.23",终端中执行npm i导入import {VXETable, VxeTableInstance

YouIcons-矢量图标、LOGO和插图素材下载 48000000+

YouIcons是一个免费下载矢量图标、LOGO和插图素材下的网站&#xff0c;图标量高达千万级别&#xff0c;目前共收录48109736个&#xff0c;是世界领先的创意徽标logo社区&#xff0c;供创意人员下载、分享、成长和使用&#xff0c;是设计师获取灵感、发现并与全球设计师联系的社…

大模型中的注意力机制——MHA、GQA、MQA

注意力机制是Transformer模型的核心组件。考虑到注意力机制的计算效率问题&#xff0c;研究人员也进行了许多研究。代表的就是以下三种模式&#xff1a; MHA&#xff08;Multi-head Attention&#xff09;是标准的多头注意力机制&#xff0c;包含h个Query、Key 和 Value 矩阵。…

DM数据库Linux安装

创建用户账号密码 groupadd dinstalluseradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdbapasswd dmdba安装前必须创建 dmdba 用户&#xff0c;禁止使用 root 用户安装数据库。 dmdba ncayu123456修改文件打开最大数 vi /etc/security/limits.conf在最后添加四条语句dm…

Siamese+Resnet进行相似度计算

SiameseResnet进行相似度计算 基本介绍效果肺部resnet34肺部Resnet50人脸自定义网络 完整代码 基本介绍 使用SiameseNet进行肺部相似度计算&#xff0c;同样可以用于人脸识别等场景。 特征提取网络结果为Resnet&#xff0c;可以为Resnet34、Resnet50等。 数据组织结构如下图所…

基于STM32设计的数码相册

一、项目介绍 项目是基于STM32设计的数码相册&#xff0c;能够通过LCD显示屏解码显示主流的图片&#xff0c;支持bmp、jpg、gif等格式。用户可以通过按键或者触摸屏来切换图片&#xff0c;同时还可以旋转显示&#xff0c;并能够自适应居中显示&#xff0c;小尺寸图片居中显示&…

复习之kickstart无人职守安装脚本

一、kickstart简介 kickstart是红帽发行版中的一种安装方式&#xff0c;它通过以配置文件的方式来记录linux系统安装的各项参数和想要安装的软件。只要配置正确&#xff0c;整个安装过程中无需人工交互参与&#xff0c;达到无人值守安装的目的。 二、kickstar文件的生成 进入/…

销售易和管易云接口打通对接实战

销售易和管易云接口打通对接实战 来源系统:销售易 销售易CRM支持企业从营销、销售到服务的全流程自动化业务场景&#xff0c;创新性地利用AI、大数据、物联网等新型互联网技术打造双中台型CRM&#xff1b;既能帮助B2B企业连接外部经销商、服务商、产品以及最终用户&#xff0c;…

提升稳定性与动态响应,深入探究PID串级多闭环控制的应用价值

引言&#xff1a; PID&#xff08;比例-积分-微分&#xff09;控制作为自动控制系统中常用的控制算法&#xff0c;可以通过对系统的反馈进行调整&#xff0c;实现目标状态的稳定控制。而PID串级多闭环控制是在基本PID控制的基础上&#xff0c;引入多个PID控制器&#xff0c;形成…

某coin数据加密接口分析

新建项目&#xff0c;然后添加frida代码提示 frida 代码提示安装--vscode / node npm i types/frida-gum 任务 : sign 和 data&#xff0c;止于mobilekey是设备号&#xff0c;测试可以随机 sign 加密在 native 层 动态调试配置: 把ida 的 dbsgv 文件下的 android_server 复…

SFL218、SFL214、SFL216、SFL218B双喷嘴挡板两级电液伺服阀

SFZ141直接驱动式伺服阀 SFL317电反馈三级伺服阀 SFL316电反馈三级伺服阀 SFL218A双喷嘴挡板两级电液伺服阀 SFL218双喷嘴挡板两级电液伺服阀 SFL214双喷嘴挡板两级电液伺服阀 SFL216双喷嘴挡板两级电液伺服阀 SFL218B双喷嘴挡板两级电液伺服阀 SFL212B双喷嘴挡板两级电…

HTSA101伺服流量阀放大器

电液伺服阀放大器HTSA101特点&#xff1a; 可用拨码方式选择比例、积分(PI)控制前面板有电源、阀电流和继电器指示灯可开关选择阀电流的输出电流范围可选输出电流或者电压信号来匹配伺服阀或者比例阀采用标准 DIN rail 规格带有颤振信号、颤振信号的幅值和频率可调标准的DIN 导…

Day05-作业(SpringBootWeb请求响应)

作业1&#xff1a;联网创建SpringBoot工程&#xff0c;完成如下需求 测试接口数据&#xff0c;提取码&#xff1a;5555&#xff08;将上述json文件,下载并导入postman&#xff09;https://pan.baidu.com/s/1rwUfKTCgncB_xxarzOUpfA 需求&#xff1a; springboot的版本选择 2…

ALLEGRO之View

本文主要介绍ALLEGRO中的View菜单。 &#xff08;1&#xff09;Zoom By Points&#xff1a;按照选型区域放大&#xff1b; &#xff08;2&#xff09;Zoom Fit&#xff1a;适合窗口放大&#xff1b; &#xff08;3&#xff09;Zoom In&#xff1a;放大&#xff1b; &#xf…

Java---Shiro框架

第一章 入门概述 1.1 什么是shiro Apache Shiro 是一个功能强大且易于使用的 Java 安全(权限)框架。Shiro 可以完成:认证、授权、加密、会话管理、与 Web 集成、缓存 等。借助 Shiro 您可以快速轻地保护任何应用程序——从最小的移动应用程序到最大的 Web 和企业应用程序。 …

释放三年版本:Aspose.Total For NET [21.7/22.7/23.7]

请各位对号入座&#xff0c;选择自己需求范围&#xff0c;你懂的&#xff0c;你懂的&#xff0c;你懂的 Aspose.Total for .NET is the most complete package of all .NET File Format Automation APIs offered by Aspose. It empowers developers to create, edit, render, …

日撸java_day54-55

文章目录 第 54 、55 天: 基于 M-distance 的推荐代码运行截图 第 54 、55 天: 基于 M-distance 的推荐 1.M-distance, 就是根据平均分来计算两个用户 (或项目) 之间的距离. 2.邻居不用 k 控制. 距离小于 radius (即 ϵ ) 的都是邻居. 使用 M-distance 时, 这种方式效果更好. …

tinkerCAD案例:28. Build a Mobile Amplifier 构建移动放大器(3)

tinkerCAD案例&#xff1a;28. Build a Mobile Amplifier 构建移动放大器(3) 原文 step 1 “爵士乐”放大器 Lesson Overview: 课程概述&#xff1a; Now we’re going to decorate our design! 现在我们要装饰我们的设计&#xff01; step 2 In this step we will ref…

纯CSS实现手风琴效果(常用样式)

【效果图】&#xff1a; 【html代码】&#xff1a; <div class"rowd"><ul class"fold_wrap"><li><a href"#"><div class"pic_auto pic_auto1 trans"></div><div class"adv_intro flex&…

qt子进程和父进程读写数据通信

进程A&#xff08;例如主程序&#xff09;创建了一个QProcess B&#xff0c;这个B就称为A的子进程&#xff0c;而A称为B的父进程。 这也称为进程间通信&#xff0c;有多种方式&#xff1a; TCP/IPLocal Server/Socket共享内存D-Bus &#xff08;Unix库&#xff09;QProcess会…