【行人重识别】计算机视觉进阶系列 第一课 基础知识
概述
行人重识别 (Person Re-Identification) 是利用计算机视觉技术判断图片或视频中是否存在特定行人的技术. 行人重识别技术可以帮助我们在多摄像头的复杂场景中快速定位查找到指定目标的所有结果. 行人重识别技术在智能安防, 监控等领域有者巨大的前景. 今天小白就带大家来一起学习一下行人重识别的技术.
行人重识别
行人重识别 (Person Re-Identification) 是利用计算机视觉技术判断图片或视频中是否存在特定行人的技术.
行人重识别面临的挑战:
- 图像分辨率低
- 遮挡
- 视角, 姿势变化
- 光照变化
- 视觉模糊性
rank-1
rank-1 即预测最高概率的标签与真实标签占比的百分比, 即第一张返回的图像正确的百分比. 例如, 模型识别了 100 只猪, 但实际上, 里面 90 只是猪, 10 只是大象. rank-1 的值就为 90/100 = 90%.
mAP
mAP (Mean Average Precision) 即 AP 的平均值.
ap 的计算过程:
- 找到第一张返回图片正确的位置, 取得 P r e c i s i o n 1 = i n d e x p 1 i n d e x t o t a l Precision_1 = \frac {index_p1} {index_total} Precision1=indextotalindexp1
- 找到第二章返回图片正确的位置, 取得 P r e c i s i o n 2 = i n d e x p 2 i n d e x t o t a l Precision_2 = \frac {index_p2} {index_total} Precision2=indextotalindexp2
- 重复以上步骤, 取得 A P = P r e c i s i o n 1 + P r e c i s i o n 2 + . . . + P r e c i s i o n n n AP = \frac {Precision_1 + Precision_2 + ... + Precision_n} {n} AP=nPrecision1+Precision2+...+Precisionn
损失函数
行人重识别通常使用的函数为分类损失 + Triplet Loss, 增加 Triplet 可以使得特征提取的更好. 下面我们就分别来讲解一下.
交叉熵
交叉熵 (Cross Entropy) 是分类任务最常用的一种损失, 可以帮助我们求得目标与预测值之间的差距. 关于交叉熵的具体推导流程请大家自行百度, 在这里就不过多赘述.
Triplet Loss
Triplet Loss 是深度学习的一种损失函数, 主要用于训练差异性小的样本.
Triplet Loss 由三个部分组成, 分别为:
- 锚 (Anchor): 当前数据
- 正示例 (Positive): 和锚为同一人的数据
- 负示例 (Negative): 和锚为不同人的数据
Triplet Loss 计算流程:
- 分别对三份数据进行编码
- 分别将三份数据经过相同的网络
- 计算三份数据之间的差异
- 通过差值来更新权重参数
Triplet Loss 训练的目标是拉近锚 (Anchor) 与正示例 (Positive) 的距离, 拉远锚 (Anchor) 与负示例 (Negative) 的距离.
Triplet Loss 公式:
∣ ∣ f ( A ) − f ( P ) ∣ ∣ 2 − ∣ ∣ f ( A ) − f ( N ) ∣ ∣ 2 + a ≤ 0 || f(A) - f(P)||^2 - || f(A) - f(N)||^2 + a \le 0 ∣∣f(A)−f(P)∣∣2−∣∣f(A)−f(N)∣∣2+a≤0
我们可以看到
公式中存在一个 a a a, 也被称作间隔 (Margin), 表示 d(A, P) 与 d(A, N) 至少相差多少, 从而避免模型走捷径将正示例和负示例的距离训练的相等.
Hard Negative
Hard Negative 即难以正确分类的样本. 在行人重识别中, 我们会尽量挑选和正示例相近的负示例 d(A, P) ≈ \approx ≈ d(A, N), 从而使模型多进行训练以达到更好的效果.
文章来源: iamarookie.blog.csdn.net,作者:我是小白呀,版权归原作者所有,如需转载,请联系作者。
原文链接:iamarookie.blog.csdn.net/article/details/122725932
- 点赞
- 收藏
- 关注作者
评论(0)