• mmpose管道pipelines


    1. train_pipeline = [
    2. dict(type='LoadImage', backend_args=backend_args),
    3. dict(type='GetBBoxCenterScale'),
    4. dict(type='RandomFlip', direction='horizontal'),
    5. dict(type='RandomHalfBody'),
    6. dict(
    7. type='RandomBBoxTransform', scale_factor=[0.5, 1.5], rotate_factor=90),
    8. dict(type='TopdownAffine', input_size=codec['input_size']),
    9. dict(type='PhotometricDistortion'),
    10. dict(
    11. type='Albumentation',
    12. transforms=[
    13. dict(type='Blur', p=0.1),
    14. dict(type='MedianBlur', p=0.1),
    15. dict(
    16. type='CoarseDropout',
    17. max_holes=1,
    18. max_height=0.4,
    19. max_width=0.4,
    20. min_holes=1,
    21. min_height=0.2,
    22. min_width=0.2,
    23. p=1.0),
    24. ]),
    25. dict(
    26. type='GenerateTarget',
    27. encoder=codec,
    28. use_dataset_keypoint_weights=True),
    29. dict(type='PackPoseInputs')
    30. ]
    31. val_pipeline = [
    32. dict(type='LoadImage', backend_args=backend_args),
    33. dict(type='GetBBoxCenterScale'),
    34. dict(type='TopdownAffine', input_size=codec['input_size']),
    35. dict(type='PackPoseInputs')
    36. ]

    配置文件里面的代码是用来定义训练和验证时的数据处理流程(pipeline)的。每个流程是由一系列的字典(dict)组成的列表(list),每个字典表示一个数据处理的操作(operation)。每个操作都有一个类型(type)和一些参数(args)。下面我简单地解释一下你给出的代码中的每个操作的作用:

    • LoadImage:加载图像文件,可以指定后端(backend)为cv2pillow
    • GetBBoxCenterScale:根据人体边界框(bounding box)计算中心点(center)和缩放比例(scale)。
    • RandomFlip:随机地水平翻转图像和关键点,可以指定翻转的概率(prob)和翻转的方向(direction)。
    • RandomHalfBody:随机地选择一半的人体进行姿态估计,可以提高模型对遮挡和截断情况的鲁棒性,可以指定选择半身的概率(prob)和最小人体数量(num_joints_half_body)。
    • RandomBBoxTransform:随机地对人体边界框进行缩放和旋转,可以提高模型对不同尺度和角度的适应性,可以指定缩放因子(scale_factor)和旋转因子(rotate_factor)。
    • TopdownAffine:根据中心点和缩放比例对图像进行仿射变换,使得人体位于图像中心,并且有固定的大小,可以指定输入图像的尺寸(input_size)和输出图像的尺寸(output_size)。
    • PhotometricDistortion:对图像进行光学畸变,包括亮度、对比度、饱和度、色调等,可以提高模型对不同光照条件的鲁棒性,可以指定各种畸变的范围(brightness_delta, contrast_range, saturation_range, hue_delta)。
    • Albumentation:使用[Albumentations]库提供的一些数据增强方法,例如模糊(Blur)、中值滤波(MedianBlur)、粗粒噪声(CoarseDropout)等,可以提高模型对不同图像质量的鲁棒性,可以指定各种增强方法的类型(type)、概率(p)和参数。
    • GenerateTarget:根据关键点生成目标张量(tensor),用于训练神经网络,可以指定编码器(encoder)、是否使用数据集提供的关键点权重(use_dataset_keypoint_weights)、是否使用高斯核函数来平滑关键点分布(use_gaussian_kernel_function)、是否使用高斯混合模型来表示多模态分布(use_gaussian_mixture_model)等。
    • PackPoseInputs:将处理后的图像和目标张量打包成一个字典,用于输入神经网络。

  • 相关阅读:
    C语言:文件操作(2)
    收藏吃灰,1024推荐2款Python趣味的第三方模块吧
    4-11 Isomorphic
    【深入浅出 Yarn 架构与实现】2-2 Yarn 基础库 - 底层通信库 RPC
    听GPT 讲Rust源代码--library/std(1)
    表驱动法在STM32中的应用
    python学习之爬取数据详解实例(一)
    华为机试真题 C++ 实现【最大括号深度】
    微服务架构
    新型基础测绘与实景三维中国建设技术文件【3】基础地理实体空间身份编码规则
  • 原文地址:https://blog.csdn.net/u010087338/article/details/132837802