ReID环境准备

表征学习代码实现

其最经典的网络是IDENet,度量学习:triple loss,ReID的半壁江山。
分类问题,分类行人的ID。
在这里插入图片描述

  • 分类损失也叫ID损失,只有ID损失的网络称为ID Embeding网络(IDE网络)。
  • 训练集中行人的ID数为网络的类别数。
  • 特征层后接一个分类FC,经过Softmax激活函数计算交叉熵损失。
  • 测试阶段使用倒数第二层的特征向量进行检索,分类FC层丢失。

数据集准备

Market1501

  1. "bounding_box_test"有19732张图片。
  2. "bounding_box_train"有12936张图片。
  3. “query”.There are 750 identities. 3368张图片。
  4. “gt_query”
  5. “gt_bbox”

测试时将"query"当"probe",“bounding_box_test"当"gallery”
在这里插入图片描述

  • “0001” 是person ID,每个人都有一个不同的person ID。“0000”, "000-1"是干扰项。
  • "c1"是第一个相机的ID,在这个数据集中一共有6个相机。测试时同一个相机的图片需要做互斥处理。
  • “s1” is the sequence 1 of camera 1. 根据时间先后对序列排序,序列信息主要用在序列ReID或者tracking上,单帧ReID用不上。
  • "001051"是序列里的第1051帧,用不上。
  • “00” means that this bounding box is the first one among the several.

代码实现

主要代码:

  • data_manager.py:自动处理数据集,返回数据集的一些常用属性。
  • data_loader.py:吐数据的dataloader。
  • transform.py:数据预处理代码,可以自定义数据增广等。
  • model.py:提取特征的模型(ResNet50)。
  • train.py:主文件,包含训练、测试等代码。
  • utils.py:一些可能会用到的功能代码。

data_manager.py

#文件路径,标注信息(ID, CAMID),图片数量

先定义文件路径, def __init__ (self, root='data', **kwargs):

路径不存在时报错处理,def _check_before_run(self):

然后,取图片的重要信息#文件路径,标注信息(ID, CAMID),图片数量

def _process_dir(self, relabel=False):
    img_paths = glob.glob(osp.join(dir_path,'*.jpg'))
    embed() #把所有.jpg结尾的文件以绝对路径的形式列出来
    pattern = re.compile(r'([-\d]+)_c(\d)')
    pid_container = set() #set是去重的,list不是
    for img_path in img_paths:
        pid, _ = map(int, pattern.search(img_path).group())
        if pid == -1: continue
            pid_container.add(pid)
    pid2label = {pid:label for label, pid in enumerate(pid_container)}
    embed() #映射关系
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值