SiamFC、RPN系列中样本对pair(模板图和搜索图)生成方式

准备数据集时,需要exemplar图和search图(或称为instance图),对应大小为exemplar_size(比如127)和search_size(比如255)
这种处理有两种形式

SiamFC、RPN系列中样本对pair(模板图和搜索图)生成方式_第1张图片


第一种,处理原始数据集阶段:(参考https://github.com/STVIR/pysot/blob/master/training_dataset/vid/par_crop.py)
    对于原图x中的目标框[cx, cy, w, h],以目标为中心, 确定一个稍大的正方形, 边长为s_z,计算公式如下:
    wc_z = w + context_amount * (w+h)
    hc_z = h + context_amount * (w+h)
    s_z = np.sqrt(wc_z * hc_z)
    context_amount是预设的值,为0.5
    定义scale_z
    scale_z = exemplar_size / s_z
    计算search图相当于exemplar图的pad大小
    d_search = (和search_size - exemplar_size) / 2
    得到s_x
    pad = d_search / scale_z
    s_x = s_z + 2 * pad
    总结:s_x / s_z = search_size / exemplar_size
    
    接着通过以下步骤裁剪模板图和搜索图:
    1.使用中心点为cx, cy边长为s_z和s_x的两个正方形,分别用来crop模板图exemplar和搜索图search
    crop的时候,如果正方形区域超出原图边界,就用像素均值填充
    2.最后分别resize到exemplar_size和search_size,
    得到exemplar图imz, 大小为exemplar_size * exemplar_size
    得到search图imx,大小为search_size * search_size
    
如果训练时不做augmentation,使用第一种就够了
    

SiamFC、RPN系列中样本对pair(模板图和搜索图)生成方式_第2张图片


第二种,在代码中准备dataset阶段:(参考https://github.com/STVIR/pysot/blob/master/pysot/datasets/dataset.py)
对于exemplar图
    对于原图(这个原图就是第一种中的搜索图imx,大小为255)中的目标框bbox[cx, cy, w, h],以目标为中心, 确定一个稍大的正方形, 边长为s_z,计算公式如下【和第一种中的计算公式一样】:
    wc_z = w + context_amount * (w+h)
    hc_z = h + context_amount * (w+h)
    s_z = np.sqrt(wc_z * hc_z)
    context_amount是预设的值,为0.5
    定义scale_z
    scale_z = exemplar_size / s_z
    然后要将目标框的bbox扩展到exemplar的尺度,具体计算如下:
    w_new = w*scale_z
    h_new = h*scale_z
    这样,到这一步exemplar图在原图imx中的稍大点的bbox就是[cx, cy, w_new, h_new]
    总结:exemplar_size / s_z == w_new / w
    【关键】最后对[cx, cy, w_new, h_new]在,原图imx做augmentation得到最终bbox为[cx, cy, exemplar_size, exemplar_size],模板图imz'为用该bbox在imx中crop下的区域
    
对于search图
      首先在exemplar图附近帧中随机选一帧, 所以search图和exemplar图的原始bbox可能不一样
    【前面和exemplar图的处理一样】,也是根据exemplar_size和s_z计算scale_z,得到[cx, cy, w_new, h_new]
    只是在最后对[cx, cy, w_new, h_new]在原图imx做augmentation的时候,目标大小是search_size,得到的搜索图imx'是用该bbox在imx中crop下的区域

总结
    1.在第二种中,在代码的dataset中只需要读取搜索图imx
    2.两种方式中的scale_z计算方式一样,但是用途不一样

你可能感兴趣的:(计算机视觉,目标跟踪,深度学习)