OpenPifPaf 的encoder过程
图像预处理
- 源代码
train.py中给出了两个方案,一个是带有data augmentation的, 一个是不带的, 因为图像预处理无非是对图像和对应的label进行处理使其满足网络的输入条件, 因此就以不带data augmentation的预处理过程简单梳理下. - 首先是读入传入的coco label, 根据传入的coco label, 使用
PIL Image.open()打开图像并转成RGB格式. 接着, 对图像以图像的长边为标准缩放成401的大小, 短边按比例缩放, 图像保持原来的比例, 接着再对短边上下(或者左右)进行(124, 116, 104)的内容填充, 最后会有一个减均值除方差的操作, 最终得到的图像大小是401 x 401的. 预处理的过程中, 保持图像的label按照同样的步骤操作, 最终, 得到预处理之后的image和ann. - 在操作2完成之后, 会根据其中得到的
meta['valid_area']值对image再做一次更新, 就是让image处于valid_area之外的区域值为0, 意思就是让网络专注于去学只有人的区域, 非人的区域不要去学, 接着根据得到的ann值去生成pif label 和 paf label.
pif:
- 首先对
ann的值进行scale操作. 因为网络的输出和输入大小不一致, 而传入的ann是按照输入的大小计算得到的值, 因此需要根据网络的缩放倍数对ann值进行更新, 符合网络的输出尺度范围, 就是对象rescalar

本文详细介绍了OpenPifPaf的encoder过程,包括图像预处理、PIF和PAF的生成。图像预处理涉及缩放、填充和归一化。接着,encoder对COCO标签进行处理,生成PIF和PAF标签。PIF通过缩放处理,对无关节标注的区域设为0,表示非人体区域。PAF的生成与PIF类似,计算关节间连接的偏移向量。整个过程旨在为网络提供关注人体区域的学习信号。
最低0.47元/天 解锁文章
3532

被折叠的 条评论
为什么被折叠?



