如何训练高质量模型

本章将介绍最影响模型质量的几个因素,以及如何训练出高质量实例分割模型。

确保图像质量

  1. 避免 过曝、过暗、颜色失真、模糊、遮挡 等。这些情况会导致深度学习模型所依赖的特征丢失,影响模型训练效果。

    ../../../_images/overexposed1.png
    ../../../_images/darker_lighting1.png
    ../../../_images/color_distortion1.png
    ../../../_images/obscure1.png
    ../../../_images/occluded1.png
  2. 确保采集数据的 背景、视角、高度 与实际应用一致。任何不一致都会降低深度学习在实际应用时的效果,严重情况下必须返工重新采集数据,请务必提前确认实际应用时的情况。

    ../../../_images/background_inconsistent1.png
    ../../../_images/field_mismatch1.png
    ../../../_images/height_mismatch1.png

确保数据集质量

实例分割模块通过学习图像中物体的特征得出模型并应用到实际场景,因此采集和选取的数据集必须与实际场景情况一致才能训练出高质量模型。

  1. 采集数据集

  2. 选取合适的数据集

采集数据集

各种摆放情况均需按采集要求合理分配数量,例如实际生产时来料有横向、竖向和散乱堆叠的情况,但只采集了横向和竖向来料的图像数据集进行训练,那么无法保证散乱堆叠的识别效果。因此,采集数据时需要能 包含实际生产的各种场景 ,具体包括:

  • 确保采集的数据中包含实际应用所有可能出现的 物体朝向

  • 确保采集的数据中包含实际应用所有可能出现的 物体位置

  • 确保采集的数据中包含实际应用所有可能出现的 物体间关系

注意

如果少采集了某种情况,深度学习模型将会缺少对于该情况的学习,会导致模型在该情况下无法有效识别,必须根据情况增加数据样本,降低误差。

物体朝向

../../../_images/different_towards.png

物体位置

../../../_images/different_situations.png
../../../_images/different_layers.png

物体间关系

../../../_images/positions.png
../../../_images/different_positions.png

数据集采集案例

  1. 某金属件项目,单类物体,因此采集 50 张。物体朝向方面,可能平躺或侧立,采集时都需要考虑。物体位置方面,需要考虑位于料筐中央、四周、边角以及不同高度的情况。物体间关系方面,除堆叠外还需要考虑少量并排。实际采集的图片如下:

    ../../../_images/metal_part_placement_status.png
    ../../../_images/metal_part_poses.png
  2. 某日用品项目,7 类物体混料,需要分类。采集时需考虑“单类物体多种朝向摆放”和“多类物体混合摆放”的情况,以全面地采集物体特征。单类物体采集数量 = 5 * 类别数量,多类物体混合摆放采集数量 = 20 * 类别数量。物体朝向方面,可能平躺、侧立或倾斜,采集时每个面都需要考虑。物体位置方面,需要考虑位于料筐中央、四周、边角。物体间关系方面,除堆叠外还需要考虑并排与紧密拼接情况。实际采集的图片如下:

    单独摆放:

    ../../../_images/singel_class_subject_positions.png

    混合摆放:

    ../../../_images/mix_classes_subject_positions.png
  3. 某履带板项目,物体有多个型号,因此采集(30 * 型号数量)张。物体朝向方面,只需考虑正面向上摆放。物体位置方面,摆放方式单一,需包含考虑高、中、低层不同高度视野的数据。物体间关系方面,规则码放,需重点注意紧密贴合的情况。实际采集图片如下:

    ../../../_images/different_layer.png
  4. 某金属件项目,仅平铺一层,因此采集 50 张。物体朝向方面,仅平铺一层,只需考虑正面向上摆放。物体位置方面,需考虑到位于料筐中央、四周、边角。物体间关系方面,需考虑紧密贴合等,实际采集图片如下:

    ../../../_images/different_situation.png
  5. 某金属件项目,多层整齐码放,采集 30 张。物体朝向方面,只需考虑正面向上摆放。物体位置方面,需考虑到位于料筐中央、四周、边角以及高、中、低层不同高度的情况。物体间关系方面,需考虑紧密贴合等,实际采集图片如下:

    ../../../_images/different_layers_positions.png

选取合适的数据集

  1. 训练集数量要可控

    对于实例分割模块初次建模,建议使用 30~50 张图像。数据量并不是越大越好,前期加入大量无效的数据集不利于后期的模型改进,同时还会延长训练时间。

  2. 数据要具有代表性

    数据集图像一定要涵盖待检测目标的所有光照、颜色、尺寸等信息。

    • 光照:实际存在光照变化,数据集应该包含不用光照情况下的图像。

    • 颜色:工件存在不同颜色,数据集应该包含所有颜色的图像。

    • 尺寸:工件存在不同尺寸,数据集应该包含所有不同大小尺寸的图像。

    注意

    若实际现场工件会出现旋转、缩放、或其他情况,无法采集相应图像数据集时,可以通过调整数据增强训练参数的方式来补充数据集,以确保现场所有的情况都包含在训练集内。

  3. 数据占比要均衡

    训练集中不同种类的图像比例要均衡,否则会影响模型效果。禁止出现一种物体 20 张,另一种物体仅有3张的情况。

  4. 数据集要与终端场景保持一致

    数据集的图像要与最终模型使用的终端场景保持一致,包括光照条件、工件特征、检测背景、视野大小等。

确保标注质量

确认标注方式

  1. 标注上表面轮廓: 适用于平放的规则物体,如纸箱、药盒、矩形工件等。通过上表面轮廓计算抓取点,用户只需要标注上表面矩形框。

    ../../../_images/2_label_upper_surface.png
  2. 标注完整外轮廓: 适用于麻袋、各类工件等,标注完整外轮廓是通用的标注方式。

    ../../../_images/3_label_outer_contour.png
  3. 特殊情况: 适用于需要配合夹具或抓取方式的特殊情况。

    • 需要保证吸盘与瓶口完全贴合(对精度要求很高),只需标注瓶口轮廓。

    ../../../_images/4_label_bottle_mouth.png
    • 转子抓取需要区分方向,只标注能明确区分方向的中间部分,不标注两端的细杆。

    ../../../_images/5_label_the_middle_part_of_the_rotor.png
    • 需要保证吸取位置在金属件中间部分,所以只标注工件中间金属部分,不需要标注两端。

    ../../../_images/6_label_the_middle_part.png

检查标注质量

标注质量应从完备性、正确性、一致性、精确性几个方面考虑:

  1. 完备性: 标注所有符合规则的物体,禁止出现遗漏标注的情况。

    ../../../_images/contour_missed.png
  2. 正确性: 确保物体与所属的标签正确对应,禁止出现物体与标签不一致的情况。

    ../../../_images/label_name_not_correspond.png
  3. 一致性: 所有数据应遵循同一标注规则。例如标注规则规定只标注整体露出 85% 以上的物体,则应该标注所有符合该规则的物体,避免出现某一物体标注了但另一类似物体没有标注的情况。

    ../../../_images/contour_inconsistent.png
  4. 精确性: 标注轮廓紧密贴合目标物体边缘,禁止出现少标注或多标注的情况。

    ../../../_images/contour_incomplete_over.png