ssd-caffe中的annotationDatum資料結構
阿新 • • 發佈:2018-11-28
這篇部落格講解的非常好,我這裡只是搬運和總結
SSD目標檢測lmdb資料結構剖析
先看一張圖,完美解釋了AnnotationDatum的資料結構。
um的資料結,SSD讀取資料,需要將label和圖片封裝到一個數據結構下,這時候老版本caffe的Datum資料結構不夠用了
我們來看看caffe-ssd的 AnnotatedDatum資料
先看 caffe.proto檔案(protubuf,不懂的得先了解一下protobuf)
// The normalized bounding box [0, 1] w.r.t. the input image size. message NormalizedBBox { optional float xmin = 1; optional float ymin = 2; optional float xmax = 3; optional float ymax = 4; optional int32 label = 5; optional bool difficult = 6; optional float score = 7; optional float size = 8; } // Annotation for each object instance. message Annotation { optional int32 instance_id = 1 [default = 0]; optional NormalizedBBox bbox = 2; } // Group of annotations for a particular label. message AnnotationGroup { optional int32 group_label = 1; repeated Annotation annotation = 2; } // An extension of Datum which contains "rich" annotations. message AnnotatedDatum { enum AnnotationType { BBOX = 0; } 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. repeated AnnotationGroup annotation_group = 3; }
我們可以看到,AnnotationDatum下包含AnnotationType、Datum和AnnotationGroup三個結構
其中Datum結構用於存放圖片資訊,和老版本caffe的Datum是一樣的,.
AnnotationGroup裡面包含grouplabel和Annotation結構
Annotation結構裡又包含 instance_id和NormalizedBBox結構