記錄SSD中的一些東西


AnnotatedDatum是存放圖片和BBox的類

// 估計是一張圖片就對應於一個AnnotatedDatum
message AnnotatedDatum { enum AnnotationType { BBOX = 0; }
// 存儲圖片的數據,需要imdecode optional Datum datum = 1; // If there are "rich" annotations, specify the type of annotation. // Currently it only supports bounding box. // If there are no "rich" annotations, use label in datum instead. optional AnnotationType type = 2; // Each group contains annotation for a particular class.
// 每一類都會有一個annotation_group保存屬於改類的bbox repeated AnnotationGroup annotation_group = 3; }

 

數據增強效果圖

假設原圖輸入是一張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那樣處理。

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM