重识别中的 Training set,Gallery set 和Probe set的区别

本文详细阐述了人脸识别中Trainingset、Galleryset和Probeset的区别及其应用。Trainingset用于模型训练,与测试集不相交;Galleryset作为查询集,存放标准样本;Probeset用于非标准测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

重识别中的 Training set,Gallery set 和Probe set的区别

介绍

一般用在人脸识别,跟踪的重识别。
Training set:用来训练模型的数据集,跟test set不相交,即交集为空,也就是没有一模一样的数据

gallery set:有人叫它查询集,gallery字面意思是画廊,在人脸识别里面,我的理解就像ground true一样的存在,有所有图片的样本在里面,一般为一些标准数据集,gallery set用在测试的时候。是公认的标准库集?
在分类模型中我们将一部分待分类的数据与其他的数据组成训练集一起训练然后在做分类预测。但是人脸识别中预测数据是不能够与训练集有相交的,所以才有了一个Gallery set

probe set:在测试时候用的数据集,与Training set不相交
所以,可以看出,Training set训练时用,而另外两个数据集gallery set和probe set都是用在测试的时候的,也就是使用这两个数据集的时候不会再修改模型中已训练好的参数,我一开始理解就是test set一样的存在,不过后来看了一些其他人的描述,感觉还是有点不一样的。
从数据分布来看,test set和Training set基本都是由同一个大的数据集按一定比例分割出来的,而gallery set和probe set都是其他一些标准数据集(我在论文上看的都是同类型其他公开的数据集)。
就是用户用户测试选择的非标准库,而又非training set 集合中的数据集。 也就是算法训练完成之后,不仅可以在标准集上测试,也可以在probe set集上测试。

在 Face Recognition 数据集一般会经常看到这三个数据集 Training setGallery setProbe set。第一次看到的时候也是晕晕的懵懵的,然后自己查阅了一些资料以后也是没有明白啊 后来老师给解释了一下是什么意思。在这里就算是给自己Mark一下。

在FaceRecognition中一般的是训练集与测试集是不相交的,即为交集为空,训练集只是负责参数他的调整 得到相应的模型以后,Gallery set也称之为查询集 也就是将Gallery set 中的数据放到模型里面输出相应的特征,然后Probe set的数据也放在model中得到相应的特征,将两个特征做认证对比,如果认证成功与否都会输出对应的结果

reference

@online{BibEntry2022Nov,
title = {{Training set,Gallery set 和Probe set的区别 - 爱学英语的程序媛 - 博客园}},
year = {2022},
month = nov,
note = {[Online; accessed 7. Nov. 2022]},
url = {https://www.cnblogs.com/bella2017/p/7744833.html},
abstract = {{这段时间看了CVPR2017的这篇论文”SphereFace:Deep Hypersphere Embedding for Face Recognition" 里面有提到Probe set,}}
}

@online{BibEntry2022Nov,
title = {{(3条消息) Training set、Gallery set和Probe set_YUyiin的博客-CSDN博客_probe set}},
year = {2022},
month = nov,
note = {[Online; accessed 7. Nov. 2022]},
url = {https://blog.csdn.net/weixin_41700016/article/details/102669313},
keywords = {probe set},
abstract = {{参考:原文链接:https://blog.csdn.net/will_ye/article/details/89639922原文链接:https://blog.csdn.net/u011557212/article/details/60963237Training set:用来训练模型的数据集,跟test set不相交,即交集为空,也就是没有一模一样的数据gallery set:有人叫它查…}}
}

<think>好的,我现在需要详细解释kubectl set image命令,用户之前询问了Kubernetes自动化部署,现在可能想了解具体的更新机制。首先,我要回忆这个命令的作用,它是用来更新Pod的镜像版本的。用户可能希望知道如何在不修改YAML文件的情况下快速更新应用。 接下来,我需要确定基本语法,记得命令结构是kubectl set image <资源类型>/<资源名称> <容器名称>=<新镜像>。要举例说明,比如更新Deployment中的容器镜像,用户可能需要具体的例子来理解。 然后,要解释常用选项,比如--record记录变更历史,这对审计有用。还有--all参数,用于同时更新多个容器的情况。用户可能在使用这些选项时遇到问题,需要明确说明用法。 使用场景方面,用户可能在进行滚动更新、快速回滚或者CI/CD集成时用到这个命令。需要举例说明每个场景下的具体应用,比如在流水线中自动替换镜像版本。 注意事项也很重要,比如只更新镜像不会触发重启的情况,或者需要Deployment支持滚动更新策略。还要提到权限问题,用户可能需要相应的RBAC权限才能执行该命令。 最后,对比其他方法,比如直接编辑YAML或者使用apply命令,帮助用户理解不同方法的适用场景。同时,要确保语言口语化,避免技术术语过于晦涩,让不同层次的用户都能理解。还要检查是否有遗漏的重要信息,比如如何查看更新状态,或者如何处理更新失败的情况,是否需要补充这些内容? 可能还需要提醒用户在实际生产环境中结合rollout命令来确保更新成功,以及如何回滚到之前的版本。确保回答结构清晰,逐步引导用户理解命令的各个方面,并提供实用示例帮助他们操作。</think>以下是对 `kubectl set image` 命令的完整解析,通过分层说明帮助您理解其核心作用使用场景: --- ### 一、命令本质 `kubectl set image` 是 **直接修改Kubernetes资源对象容器镜像版本** 的快捷命令,主要作用于以下控制器: - Deployment - StatefulSet - DaemonSet - Job - CronJob --- ### 二、基础语法 ```bash kubectl set image <资源类型>/<资源名称> <容器名称>=<新镜像>:<标签> ``` #### 典型示例 ```bash # 更新名为webapp的Deployment中名为nginx的容器镜像 kubectl set image deployment/webapp nginx=nginx:1.25-alpine # 同时更新多个容器(逗号分隔) kubectl set image deployment/webapp nginx=nginx:1.25-alpine,redis=redis:7.2 ``` --- ### 三、核心功能参数 | 参数 | 作用 | 示例 | |------|------|------| | `--record` | 在注解中记录命令历史 | `--record=true` | | `--all` | 更新所有容器 | `--all --image=nginx:latest` | | `--dry-run` | 模拟执行(不实际修改) | `--dry-run=client` | --- ### 四、工作流程解析 1. **触发更新**:修改Deployment的Pod模板镜像版本 2. **创建新ReplicaSet**:Kubernetes生成带新镜像的ReplicaSet 3. **滚动替换**:逐步替换旧Pod(遵循`strategy`配置) 4. **保留历史**:旧ReplicaSet保留用于回滚 --- ### 五、典型应用场景 #### 场景1:快速热更新 ```bash # 将生产环境frontend容器从v1.2升级到v1.3 kubectl set image deployment/prod-frontend frontend=myregistry/frontend:v1.3 ``` #### 场景2:CI/CD集成 ```bash # Jenkins流水线中使用SHA值更新 kubectl set image deployment/ci-cd-demo app=myapp:${BUILD_NUMBER} ``` #### 场景3:紧急回滚 ```bash # 快速回退到上一个稳定版本 kubectl rollout undo deployment/webapp ``` --- ### 六、注意事项 1. **版本控制**:推荐使用不可变标签(如commit SHA) 2. **资源限制**:镜像大小影响节点调度 3. **权限管理**:需要RBAC授权`update`对应资源 4. **健康检查**:确保配置正确的`readinessProbe` --- ### 七、辅助诊断命令 ```bash # 查看更新进度 kubectl rollout status deployment/webapp # 查看更新历史(需--record参数) kubectl rollout history deployment/webapp # 查看当前Pod使用的镜像 kubectl get pods -l app=webapp -o jsonpath='{.items[*].spec.containers[*].image}' ``` --- ### 八、与传统方式的对比 | 方式 | 优点 | 缺点 | |------|------|------| | `set image` | 即时生效,无需修改YAML | 不保留版本追踪 | | 修改YAML后apply | 版本可控 | 需要文件管理 | | Helm升级 | 支持复杂应用包管理 | 学习成本较高 | --- 建议在生产环境中结合 **版本控制系统** **金丝雀发布策略** 使用该命令,以实现安全可靠的持续交付。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

或许,这就是梦想吧!

如果对你有用,欢迎打赏。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值