1. 程式人生 > >目標檢測之SSD:資料增強引數詳解

目標檢測之SSD:資料增強引數詳解

資料增強效果圖

假設原圖輸入是一張640*480的圖片,這裡由於版面問題我放縮了圖片尺寸並且沒做mean subtract,由於最後會有resize引數導致輸出的圖片都會resize到300x300,但是主要看的是增強的效果,SSD中的資料增強的順序是:

DistortImage: 這個主要是修改圖片的brightness,contrast,saturation,hue,reordering channels,並沒改變標籤bbox

ExpandImage: 這個主要是將DistortImage的圖片用畫素0進行擴充套件,標籤bbox此時肯定會改變,就重新以黑邊的左上角為原點計算[0,1]的bbox的左上角和右下角兩個點座標。

BatchSampler: 由於這裡選錯圖了,BatchSampler必須要有GT的存在才會生效,由於我做的是人的檢測所以圖中沒人就不會生成sampled_bboxes,後面修改例子。sampled_bboxes的值是隨機在[0, 1]上生成的bbox,並且和某個gt_bboxes的IOU在[min, max]之間。由於proto中配的max_sample都是為1,所以每個batch_sampler可能會有1個sampled_bbox,隨機取一個sampled bbox並且裁剪圖片和標籤。標籤裁剪也很好理解首先要通過ProjectBBox將原座標系標籤投影到裁剪後圖片的新座標系的座標,然後再ClipBBox到[0,1]之間。

Resize:放縮到300x300,最後將圖片放縮到300x300,標籤框也是線性放縮座標而已。

Crop:原本data_transformer還會crop的,這個引數是配在prototxt中,預設是原圖 所以就和沒crop一樣。如果要crop的話標籤也是會和之前BatchSampler那樣處理。

layer {
  name: "data"
  type: "AnnotatedData"
  top: "data"
  top: "label"
  include {
    phase: TRAIN
  }
  transform_param {
    mirror: true
    mean_value: 104
    mean_value: 117
    mean_value: 123
    resize_param {
      prob: 1
      resize_mode: WARP
      height: 512
      width: 512
      interp_mode: LINEAR
      interp_mode: AREA
      interp_mode: NEAREST
      interp_mode: CUBIC
      interp_mode: LANCZOS4
    }
    emit_constraint {
      emit_type: CENTER
    }
    distort_param {
      brightness_prob: 0.5   ##調整亮度
      brightness_delta: 32   ##新增畫素值
      contrast_prob: 0.5     ##調整對比度
      contrast_lower: 0.5    ##隨機對比因子的下界
      contrast_upper: 1.5    ##隨機對比因子的上界
      hue_prob: 0.5          ##調整色調
      hue_delta: 18          ##調整色調通道數量
      saturation_prob: 0.5   ##調整飽和
      saturation_lower: 0.5  ##調整飽和因子的下界
      saturation_upper: 1.5  ##調整飽和因子的上界
      random_order_prob: 0.0 ##隨機排列影象通道
    }
    expand_param {///////////////////////////////////////////////##儲存資料轉換器用於擴充套件策略的引數的訊息
      prob: 0.5              ##使用擴充套件的概率
      max_expand_ratio: 4.0  ##擴大影象的比率
    }
  }
  data_param {
    source: "/home/x306/caffe/xn/image/VEDAI/lmdb/VEDAI_trainval_512_lmdb"
    batch_size: 2
    backend: LMDB
  }
  annotated_data_param {
    batch_sampler {///////////////
      max_sample: 1
      max_trials: 1
    }
    batch_sampler {
      sampler {
        min_scale: 0.3       ***********1.0 ##最大尺度與與最小尺度,如果樣本幾乎是均勻大小的,那麼設定為1.0即可。
        max_scale: 1.0       ***********1.0 
        min_aspect_ratio: 0.5***********1.0 ##最大縱橫比與最小縱橫比,如果樣本框幾乎都是正方形的,那麼設定為1.0就好。
        max_aspect_ratio: 2.0***********1.0
      }
      sample_constraint {
        min_jaccard_overlap: 0.1**********1.0    ####取樣一個片段,使目標最小的jaccard重疊為0.1,0.3,0.5,0.7,0.9
      }
      max_sample: 1
      max_trials: 50
    }
    batch_sampler {
      sampler {
        min_scale: 0.3
        max_scale: 1.0
        min_aspect_ratio: 0.5 ***************1.0
        max_aspect_ratio: 2.0 ***************1.0
      }
      sample_constraint {
        min_jaccard_overlap: 0.3 *************1.0
      }
      max_sample: 1
      max_trials: 50
    }
    batch_sampler {
      sampler {
        min_scale: 0.3
        max_scale: 1.0
        min_aspect_ratio: 0.5 *****************1.0
        max_aspect_ratio: 2.0 *****************1.0
      }
      sample_constraint {
        min_jaccard_overlap: 0.5 *****************1.0
      }
      max_sample: 1
      max_trials: 50
    }
    batch_sampler {
      sampler {
        min_scale: 0.3
        max_scale: 1.0
        min_aspect_ratio: 0.5****************1.0
        max_aspect_ratio: 2.0****************1.0
      }
      sample_constraint {
        min_jaccard_overlap: 0.7*****************1.0
      }
      max_sample: 1
      max_trials: 50
    }
    batch_sampler {
      sampler {
        min_scale: 0.3
        max_scale: 1.0
        min_aspect_ratio: 0.5******************1.0
        max_aspect_ratio: 2.0******************1.0
      }
      sample_constraint {
        min_jaccard_overlap: 0.9****************1.0
      }
      max_sample: 1
      max_trials: 50
    }
    batch_sampler {
      sampler {
        min_scale: 0.3
        max_scale: 1.0
        min_aspect_ratio: 0.5*********************1.0
        max_aspect_ratio: 2.0*********************1.0
      }
      sample_constraint {
        max_jaccard_overlap: 1.0*****************1.0
      }
      max_sample: 1
      max_trials: 50
    }