当前位置: 首页 > news >正文

探索 TorchRe-ID--基于 Python 的人员再识别库

导言

人员再识别(re-ID)是计算机视觉中的一项重要任务,在监控系统、零售分析和人机交互中有着广泛的应用。TorchRe-ID 是一个功能强大、用户友好的 Python 库,它为人员再识别任务提供了一套全面的工具和模型。在本文中,我们将探索 TorchRe-ID 的主要功能,并深入研究模型训练、评估和可视化。

什么是人员再识别?

人员重新识别的目的是在多摄像头监控系统中匹配非重叠摄像头视图中的个人。它涉及从不同角度、光线条件和视点识别同一个人,因此是一项极具挑战性的计算机视觉任务。

TorchRe-ID 的主要功能

  1. 数据集支持:TorchRe-ID 提供对流行的人物再识别数据集的开箱即用支持,包括 Market-1501、DukeMTMC-reID、CUHK03 和 MSMT17。
  2. 模型动物园:该库提供各种预训练模型,如 ResNet、DenseNet 和 Inception、OSNet,这些模型可在自定义数据集上进行微调,或用作基准测试的基线。
  3. 评估指标:TorchRe-ID 实现了人员重新识别任务中常用的各种评估指标,包括 Rank-1、Rank-5、Rank-10 和平均精度 (mAP)。
  4. 数据增强:该库包括功能强大的数据增强技术,如随机裁剪、翻转和颜色抖动,以提高模型的通用性和鲁棒性。
  5. 可视化工具:TorchRe-ID 提供了可视化工具,用于检查和分析人物再识别模型的性能,包括特征可视化和排名可视化。

开始使用 TorchRe-ID

要开始使用 TorchRe-ID,您需要安装该库及其依赖项。您可以通过 pip 进行安装:

pip install torchreid

模型培训

TorchRe-ID 简化了人员再识别模型的训练过程。下面是如何在 Market-1501 数据集上训练 osnet_x1_0 模型的示例:

if __name__ == '__main__':import torchreidfrom multiprocessing import freeze_supportfrom torchreid.utils import load_pretrained_weightsimport torchfreeze_support()device = torch.device("cuda" if torch.cuda.is_available() else "cpu")datamanager = torchreid.data.ImageDataManager(root='reid-data', #path to market1501sources='market1501',height=256,width=128,batch_size_test=32,batch_size_train=100,market1501_500k=False,combineall=True )model = torchreid.models.build_model(name="osnet_x1_0",num_classes=datamanager.num_train_pids,loss="softmax",pretrained=True)model.to(device)optimizer = torchreid.optim.build_optimizer(model,optim="sgd",lr=0.01,staged_lr=True,new_layers='classifier',base_lr_mult=0.1)scheduler = torchreid.optim.build_lr_scheduler(optimizer,lr_scheduler="single_step",stepsize=20)engine = torchreid.engine.ImageSoftmaxEngine(datamanager,model,optimizer=optimizer,scheduler=scheduler,label_smooth=True)engine.run(save_dir="log/osnet",max_epoch=100,eval_freq=10,print_freq=10,fixbase_epoch=5,open_layers='classifier')

此示例演示了如何加载 Market-1501 数据集、创建 osnet_x1_0 模型、设置优化器和学习率调度器,并使用 ImageSoftmaxEngine 启动训练过程。

tensorboard - logdir=/Users/xx/SSRIP/log

首先,用 pip 安装 tensorboard,然后在 CMD 上运行该命令。

在训练模型时,tensorboard 的 SummaryWriter() 会在 engine.run() 中自动初始化。因此,你不需要做额外的工作。训练完成后,tf.events 文件将保存在 save_dir。然后,只需在终端中调用 tensorboard --logdir=your_save_dir并在网络浏览器中访问 http://localhost:6006/ 即可。更多信息,请参阅 pytorch tensorboard: https://pytorch.org/docs/stable/tensorboard.html。

img

This Type of Evaluation Parameters will be shown after model training.

可视化排名结果

这可以通过在 engine.run() 中将 visrank 设置为 true 来实现。 visrank_topk 决定要可视化的前 k 张图片(默认为 visrank_topk=10)。请注意,visrank 只能在测试模式下使用,即在 engine.run() 中设置 test_only=true。输出结果将保存在 save_dir\visrank_DATASETNAME,其中每个图都包含查询到的前 k 张相似图库图片。下图是一个示例,红色和绿色分别表示不正确和正确的匹配。可视化代码示例如下,请将以下代码粘贴到上层代码中。

path='/Users/xx/SSRIP/MultiCamera/osnet_x1_0_market_256x128_amsgrad_ep150_stp60_lr0.0015_b64_fb10_softmax_labelsmooth_flip.pth'
load_pretrained_weights(model, path)
engine.run(save_dir="log/osnet",max_epoch=100,eval_freq=10,print_freq=10,test_only=True,fixbase_epoch=5,open_layers='classifier',visrank=True,visrank_topk=20
)

img

img

img

img

激活地图可视化

要了解 CNN 重点提取 ReID 特征的位置,可以像在 OSNet(https://arxiv.org/abs/1905.00953) 中一样可视化激活图。该功能在 tools/visualize_actmap.py 中实现(更多详情请查看代码)。运行命令示例如下

python tools/visualize_actmap.py - root 'Multi-Camera' -d market1501 -m osnet_x1_0 - weights /Users/xx/Multi_Camera/osnet_x1_0_market_256x128_amsgrad_ep150_stp60_lr0.0015_b64_fb10_softmax_labelsmooth_flip.pth - save-dir /Users/xx/Multi_Camera

img

Model Zoo

Model Zoo 的超链接中提到了一些预训练模型。提到的模型在多个单独数据集上进行了训练,有些模型还进行了组合训练,以获得更好的准确性和未见数据预测。

引文

@article{torchreid,
title={Torchreid: A Library for Deep Learning Person Re-Identification in Pytorch},
author={Zhou, Kaiyang and Xiang, Tao},
journal={arXiv preprint arXiv:1910.10093},
year={2019}
}1

@inproceedings{zhou2019osnet,
title={Omni-Scale Feature Learning for Person Re-Identification},
author={Zhou, Kaiyang and Yang, Yongxin and Cavallaro, Andrea and Xiang, Tao},
booktitle={ICCV},
year={2019}
}2

@article{zhou2021osnet,
title={Learning Generalisable Omni-Scale Representations for Person Re-Identification},
author={Zhou, Kaiyang and Yang, Yongxin and Cavallaro, Andrea and Xiang, Tao},
journal={TPAMI},
year={2021}
}3


  1. http://twitter.com/article ↩︎

  2. http://twitter.com/inproceedings ↩︎

  3. http://twitter.com/article ↩︎

相关文章:

探索 TorchRe-ID--基于 Python 的人员再识别库

导言 人员再识别(re-ID)是计算机视觉中的一项重要任务,在监控系统、零售分析和人机交互中有着广泛的应用。TorchRe-ID 是一个功能强大、用户友好的 Python 库,它为人员再识别任务提供了一套全面的工具和模型。在本文中&#xff0…...

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Flex)

以弹性方式布局子组件的容器组件。 说明: 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。Flex组件在渲染时存在二次布局过程,因此在对性能有严格要求的场景下建议使用Column、Row代替。Flex组…...

tmux最基础的一点应用-不用一直挂着ssh,可以干点别的事情

文章目录 使用原因基础命令创建一个窗口退出当前窗口重新进入万一忘记了环境名字想要删除环境 使用原因 跑程序要很久&#xff0c;需要干别的事情&#xff0c;电脑不能一直开&#xff0c;可以使用tmux来管理。 基础命令 创建一个窗口 tmux new -s <你自己起的环境名字&g…...

Java推荐算法——特征加权推荐算法(以申请学校为例)

加权推荐算法 文章目录 加权推荐算法1.推荐算法的简单介绍2.加权推荐算法详细介绍3.代码实现4.总结 1.推荐算法的简单介绍 众所周知&#xff0c;推荐算法有很多种&#xff0c;例如&#xff1a; 1.加权推荐&#xff1a;分为简单的特征加权&#xff0c;以及复杂的混合加权。主要…...

探索什么便签软件好用,可以和手机同步的便签软件

在信息技术日新月异的今天&#xff0c;各类数字工具已经成为我们生活与工作的重要助手。便签软件作为一种简单却高效的辅助工具&#xff0c;悄然改变着人们的记录习惯与时间管理方式。而在诸多便签软件中&#xff0c;能够实现手机与电脑同步功能的产品尤显其独特的价值。那么&a…...

字符函数与字符串函数

前言 本次博客可以说内容最为多的一次博客&#xff0c;讲解同样很细致大家好好看看 1字符函数 在讲解字符函数时,大家得了解什么是字符吧 普通字符a b c 1 转义字符 \n 换行‘ \t’ 水平制表符\r回车 大家了解即可 在C语言中字符也可以有分类 所以我们先来看看…...

Kubernetes 项目整体布局 el-container

整体布局整体布局 你可能会去敲不同的项目&#xff0c;有很多种平台。那么其实都是可以复用的。唯一不同的就是main里面的内容是不同的&#xff0c;边框架子都是相同的。其实框架是不怎么变化的&#xff0c;变化的是main里面。 src/layout/Layout.vue 这里需要新增一个页面Lay…...

AI赋能写作:AI大模型高效写作一本通

❤️作者主页&#xff1a;小虚竹 ❤️作者简介&#xff1a;大家好,我是小虚竹。2022年度博客之星评选TOP 10&#x1f3c6;&#xff0c;Java领域优质创作者&#x1f3c6;&#xff0c;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;掘金年度人气作…...

unraid docker.img扩容

unraid 弹Docker image disk utilization of 99%&#xff0c;容器下载/更新失败 我的版本是6.11.5&#xff0c;docker.img满了导致容器不能更新&#xff0c;遇到同样问题的可以先用docker命令清除一下仓库(当然不一定能清理出来&#xff0c;我已经清理过只清理出来1G多点&…...

Python 实现1~100之间的偶数求和

result0 for i in range(101):if i%20:result result i print(result) 或者 result0 for i in range(2,101,2):result result i print(result)...

Leetcode 387. First Unique Character in a String

Problem Given a string s, find the first non-repeating character in it and return its index. If it does not exist, return -1. Algorithm Use two lists: one list is used to count the letters in “s”; the other list is the position where the letter first …...

c++ 自己实现一个迭代器

具体代码 /*自定义迭代器的实现 */ #include <iostream> using namespace std; class num {int val; //具体的数字int length; //数字的位数void calculate_length(){if(val/100){ //这个数字只有1位length1;return;}int x10; //这里就是不断重复除直…...

HarmonyOS NEXT应用开发—图片压缩方案

介绍 图片压缩在应用开发中是一个非常常见的需求&#xff0c;特别是在处理用户上传图片时&#xff0c;需要上传指定大小以内的图片。目前图片压缩支持jpeg、webp、png格式。本例中以jpeg图片为例介绍如何通过packing和scale实现图片压缩到目标大小以内。 效果图预览 使用说明…...

深入理解nginx的请求限速模块[下]

目录 3. 源码分析3.1 配置指令3.1.1 limit_req_zone指令3.1.2 limit_req指令3.1.3 limit_req_dry_run指令3.1.4 limit_req_log_level指令3.1.5 limit_req_status指令3.2 模块初始化3.3 请求处理3.3.1 ngx_http_limit_req_handler3.3.1 ngx_http_limit_req_lookup3.3.2 ngx_http…...

王者归位:Kafka控制器组件解析

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 王者归位&#xff1a;Kafka控制器组件解析 前言控制器组件简介控制器组件的定义和作用&#xff1a;为什么控制器是分布式系统的核心&#xff1f; 保存了什么数据控制器的指定和切换故障转移控制器故障…...

XmlHttpRequest responseType: ‘stream‘ 图片代理服务器

它是一个存在于原生 XMLHttpRequest 对象中的属性。在 Web API 中&#xff0c;XMLHttpRequest 对象用于发送 HTTP 或 HTTPS 请求到服务器&#xff0c;并接收响应。responseType 属性就是用来指定预期从服务器返回的响应数据的类型。 默认值 responseType的默认值为json&#x…...

手写 UE4中的 TArray

#pragma once #include<iostream> #include<stdexcept> #define CHECK_INDEX_RANGE(Index) if (Index > ElementCount) throw std::out_of_range("索引超出界限")template<typename ElementType> class TArray {typedef unsigned int uint; pri…...

Flink实时写Hudi报NumberFormatException异常

Flink实时写Hudi报NumberFormatException异常 问题描述 在Flink项目中&#xff0c;针对Hudi表 xxxx_table 的 bucket_write 操作由于 java.lang.NumberFormatException 异常而从运行状态切换到失败状态。异常信息显示在解析字符串"ddd7a1ec"为整数时出现了问题。报…...

Dataset与DataLoader、transform

文章目录 1、Dataset2、DataLoader2.1 参数详解2.1.1 num_works2.1.2 pin_memory2.1.3 collate_fn 3、图像增强4、重写transform 1、Dataset 在 PyTorch 中&#xff0c;如果要创建自定义的数据集&#xff08;Dataset&#xff09;&#xff0c;通常会继承 torch.utils.data.Data…...

海豚调度系列之:认识海豚调度

海豚调度系列之&#xff1a;认识海豚调度 一、海豚调度二、特性三、建议配置四、名次解释 一、海豚调度 Apache DolphinScheduler 是一个分布式易扩展的可视化DAG工作流任务调度开源系统。适用于企业级场景&#xff0c;提供了一个可视化操作任务、工作流和全生命周期数据处理过…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...