竞赛 深度学习实现行人重识别 - python opencv yolo Reid

news2024/10/3 23:31:09

文章目录

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

🧿 更多资料, 项目分享:

https://gitee.com/dancheng-senior/postgraduate

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

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

相关文章

vue+iView 动态侧边栏菜单保持高亮选中

iview 组件在使用过程中&#xff0c;多多少少有一些小坑&#xff0c;本文简单罗列一二&#xff1a; 避坑指南&#xff1a; 关于iview 侧边栏菜单未能展开高亮选中回显问题 应用场景&#xff1a;iview-admin下接入动态菜单后&#xff0c;刷新或链接跳入时回显失效 简单就是两个方…

双11数码好物推荐、这几款产品很难让人拒绝

随着双11购物节的临近&#xff0c;各大电商平台纷纷推出了各种吸引人的优惠活动&#xff0c;其中数码产品备受瞩目。在如今数码产品层出不穷的时代&#xff0c;选择一款性价比高、实用性强的数码好物成为了很多人的难题。为此&#xff0c;我想向大家推荐几款绝对值得入手的数码…

C语言数据结构---时间复杂度、空间复杂度

前言 本篇文章讲解C语言的数据结构中&#xff0c;时间复杂度、空间复杂度的定义&#xff0c;以及例题说明。 详细介绍了大O渐进法和如何计算一个代码的时间复杂度和空间复杂度。最后还有一个以空间复杂度换取时间复杂度的思想。 文章目录 前言1.时间复杂度1.1 时间复杂度的概念…

首个保险“远程双录”管理办法出台!菊风持续推进金融业布局双录智能化升级

近期&#xff0c;国家金融监督管理总局宁波监管局印发《宁波保险销售行为远程同步录音录像管理暂行办法》。该《办法》充分结合考虑视频连线方式保险销售特点和线上线下融合开展保险销售中存在的各类问题&#xff0c;梳理线上化保险销售流程和风险控制要点&#xff0c;补齐线上…

将ChatGPT与物理机器人结合,波士顿动力开发了一只怪物!

10月27日&#xff0c;全球顶级机器人开发商波士顿动力&#xff08;Boston Dynamics&#xff09;在官网展示了一项新的研究&#xff0c;通过将ChatGPT、Spot以及其他AI模型相结合&#xff0c;开发了一种会说话的导游机器狗。 据悉,该机器狗能够根据文字、语音提示与人类进行交谈…

代码随想录算法训练营第三十五天 | LeetCode 435. 无重叠区间、763. 划分字母区间、56. 合并区间

代码随想录算法训练营第三十五天 | LeetCode 435. 无重叠区间、763. 划分字母区间、56. 合并区间 文章链接&#xff1a;无重叠区间 划分字母区间 合并区间 视频链接&#xff1a;无重叠区间 划分字母区间 合并区间 1. LeetCode 435. 无重叠区间 1.…

matlab Spongent算法

1、内容简介 略 5-可以交流、咨询、答疑 2、内容说明 Spongent 是一种轻量级 Hash 算法&#xff0c;其原理与“海绵”类似&#xff0c;分为“吸收” 和“榨取”两个阶段&#xff0c;所以又可以称之为“海绵结构”算法。 Hash 函数之所以有广泛的应用&#xff0c;是因为它具…

图的应用4.0-----关键路径(AOE网)

目录 前言 AOE网 1.基本概念 2.应用 关键路径 1.算法理论 2.代码实现&#xff08;C/C&#xff09; 前言 前面学习了图AOV网的应用&#xff0c;即拓扑排序&#xff0c;那这一期我们学习AOE网的应用&#xff0c;这是一个图的一个很广泛问题&#xff0c;也就是关键路径。那…

红色荧光PLGA聚乙酸-羟基乙酸共聚物纤维膜 红色荧光PLGA静电纺丝纤维膜

一种含有荧光染料的硝酸纤维素微孔膜及其制备方法。将提供供体荧光分子的荧光染料直接加到铸膜液中&#xff0c;经相转换直接生产出一种带荧光的硝酸纤维素微孔膜&#xff0c;微孔膜中的荧光强度可以通过添加不同剂量的荧光素来控制调节&#xff0c;该微孔膜适用于生产荧光淬灭…

京东平台数据分析:2023年9月京东扫地机器人行业品牌销售排行榜

鲸参谋监测的京东平台9月份扫地机器人市场销售数据已出炉&#xff01; 根据鲸参谋平台的数据显示&#xff0c;9月份&#xff0c;京东平台扫地机器人的销量近14万&#xff0c;环比增长约2%&#xff0c;同比降低约4%&#xff1b;销售额为2.9亿&#xff0c;环比降低约4%&#xff0…

行情分析——加密货币市场大盘走势(10.27)

目前大饼开始了震荡盘整&#xff0c;目前远离EMA21均线&#xff0c;预计会有大的回调动作。而MACD日线来看&#xff0c;昨日和今日开始呈现绿色空心柱&#xff0c;也在说明大饼在做震荡盘整。不排除大跌的可能性&#xff0c;大饼可以开始布局中长线空单&#xff0c;可以再35000…

企业im即时通讯软件私有化部署,确保信息安全与高效办公

随着企业应用即时通讯&#xff08;IM&#xff09;的普及&#xff0c;信息安全问题成为了企业最为关心的话题。为了保障内部信息安全&#xff0c;让员工专心办公&#xff0c;企业可以选择将IM系统私有化部署在内网&#xff0c;与互联网隔离开来。 对于需要与外网通信的需求&…

Vue引入异步组件

defineAsyncComponent 函数&#xff1a;异步引入组件。 Suspense 标签&#xff1a;异步引入组件时&#xff0c;显示默认的内容。 异步引入组件的基本使用&#xff1a; 异步引入组件&#xff1a; import { defineAsyncComponent } from vue; const Child defineAsyncComponen…

基于安卓android微信小程序的投票系统

项目介绍 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;投票系统小程序被用户普遍使用&#xff0c;为方便用户…

关于JAVA中字节码文件版本号、产品版本号及开发版本号的关系

目录 关于字节码版本对应关系清单关于字节码格式说明的资料关于这些版本号 关于字节码版本 以二进制打开字节码文件&#xff1a; 如上图中第5-8标识&#xff08;圈起来的&#xff09;的即字节码版本号 十六进制&#xff1a; 34 十进制&#xff1a; 52 jdk 8 对应关系清单 …

网络策略实战

网络策略实战 网络策略 在命名空间 dev 中创建⽹络策略 dev-policy&#xff0c;只允许 命名空间 prod 中的 pod 连上 dev 中 pod 的 80 端⼝&#xff0c;注意:这⾥有 2 个 ns &#xff0c;⼀个为 dev(⽬标pod的ns)&#xff0c;另外⼀个为prod(访 问源pod的ns) &#x1f50b;创建…

熟悉项目过程中

刑天机器人本身 背景知识&#xff1a; 刑天与地平线的关系、旭日派的关系&#xff1f; 地平线是一家公司&#xff0c;刑天机器人是他们家的一款产品&#xff0c;是硬件&#xff0c;旭日派也是他们家的一款产品&#xff0c;用作刑天机器人的大脑。 刑天机器人的源代码能安装…

【网络安全无小事】汽车网络安全:只有开局,没有尽头,聚光向前,安全到达

“ 汽车网络安全: 只有开局&#xff0c;没有尽头&#xff0c;聚光向前&#xff0c;安全到达。” 01 — 引言 汽车一直以来都将速度、激情、男性荷尔蒙和阳刚气息联系在一起&#xff0c;这种联系似乎已经成为了文化符号。然而&#xff0c;作为一名安全从业者&#xff0c;我时常担…

汽车电子 -- Bin、Hex、Srec、s19、elf等文件的区别

一、烧写文件 烧写文件有很多种格式&#xff0c;比如bin、Hex、s19等。下面对这几种文件格式做一下介绍。 1、bin文件 参看&#xff1a;【嵌入式烧录/刷写文件】-3.1-详解二进制Bin格式文件 bin是binary的缩写&#xff0c;翻译为“二进制”。binary file 二进制文件是一个…

idea提交代码冲突后,代码意外消失解决办法

敲了大半天的代码&#xff0c;解决冲突后&#xff0c;直接消失了当时慌的一批CCCCC 右击项目Local History ----show History 找到最近提交的内容右击选择Revert,代码全回来了