昇腾社区首页
中文
注册

ssmh后处理网络模型prototxt修改

本章节用于说明ssmh网络后处理算子的使用方式,后处理算子的详细参数规格参见支持Caffe&TensorFlow&ONNX算子清单>支持Caffe算子清单中的Yolov5FourInputDecodeBox,YoloNms算子,使用后处理算子的prototxt样例如下,算子有4个输入,对应检测头输出的4个feature_map,输入的顺序为feature_map的尺寸由小到大,有多个检测头就接多个后处理即可。

注意:caffe.proto的LayerParameter中已经添加了对应的参数层信息,用户只需要根据模型的具体参数规格修改网络模型prototxt中的参数。

  1. 在LayerParameter中添加如下参数层:
    message LayerParameter {
    ...
      optional Yolov5FourInputDecodeBoxParameter yolov5_4_input_decode_box_param = 256;
      optional YoloNmsParameter yolo_nms_param = 257;
    ...
    }
  2. 在caffe.proto中增加如下参数:
    message Yolov5FourInputDecodeBoxParameter{
        repeated float bias_0 = 1;
        repeated float bias_1= 2;
        repeated float bias_2 = 3;
        repeated float bias_3 = 4;
        required int32 ori_size_h = 5;
        required int32 ori_size_w = 6;
        required int32 anchor = 7;
        required int32 class_num = 8[default = 8];
        required float thresh_front = 9 [default = 0.5];
    }
    message YoloNmsParameter{
        required int32 shape = 1;
        required float thresh = 2;
        required int32 num_anchor = 3;
        required int32 num_class = 4[default = 8];
        required int32 total_output_proposal_num = 5 [default = 10];
    }
  3. 后处理对应prototxt文件如下:
    layer {
        name: 'Yolov5FourInputDecodeBox_Head_0'
        type: 'Yolov5FourInputDecodeBox'
        bottom: 'Head0_Detect_3'
        bottom: 'Head0_Detect_2'
        bottom: 'Head0_Detect_1'
        bottom: 'Head0_Detect_0'
        top: 'bounding_box_0'
        yolov5_4_input_decode_box_param {
            bias_0: 102
            bias_0: 240
            bias_0: 252
            bias_0: 278
            bias_0: 228
            bias_0: 420
            bias_1: 78
            bias_1: 79
            bias_1: 64
            bias_1: 138
            bias_1: 122
            bias_1: 119
            bias_2: 31
            bias_2: 39
            bias_2: 54
            bias_2: 48
            bias_2: 37
            bias_2: 76
            bias_3: 11
            bias_3: 25
            bias_3: 18
            bias_3: 30
            bias_3: 20
            bias_3: 52
    	ori_size_h: 1088
    	ori_size_w: 1920
            anchor:3
            class_num: 3
            thresh_front: 0.01
        }
    }
    
    layer {
        type: 'YoloNms'
        name: 'yolo_nms_Head_0'
        bottom: 'bounding_box_0'
        top: 'output_proposal_0'
        yolo_nms_param {
            shape: 43350
            thresh: 0.5
            num_anchor: 3
            num_class: 3
            total_output_proposal_num: 20
        }
    }