AVOD-理解系列(一)
AVOD-理解
本篇用于記載之前閱讀的論文avod及其代碼,純屬個人個人理解.有誤之處歡迎指正!
網絡結構
代碼流程
1:Feed_dict:
feed_dict: 主要就是確定每一個mini_batch里輸入圖像的各種信息,包括圖像的名字,圖像的標簽文件,圖像的
ground-plane,以及點云的信息,相機的標定信息.
圖像: 圖像是隨機打亂輸入的,每次需要獲取的是圖像的名字,使用時根據圖像的名字得到圖像的相應文件,包括
.png,.npy,plane,calib等文件,分別存儲著這張圖片的image信息,點云信息,地平線,相機標定參數
Anchors_info: 這個信息存儲在.npy文件里面,anchor_indices=anchors_info[:,0],anchors_ious=anchors_info[:,1],
anchors_offsets=anchors_info[:,2:8],anchors_class=anchors_info[:,8].注意:anchors_info=np.load(file_name)
標簽信息:從.txt文件里面讀取出來的,一共有15個參數:2D標簽坐標(x1,y1,x2,y2).3D標簽坐標(tx,ty,tz,h,w,l)中心點坐標與長寬高.同時需要根據要求刪除某些標簽,比如在只訓練car時就要去除person和cyclist的標簽.
其它信息:分別取得相應的ground plane(一個平面方程:aX+bY+cZ=d),相機標定參數包括內外參數,以及點云([x,….],[y,…],[z,…])
對圖像的一些處理: 比如是否翻轉,是否加抖動(噪聲)
創建BEV-images: bev輸入的輸入是六個通道的參數,前五個是五個slice的每個像素點的最高點的值,最后一個是這個像素點的點密度.notes:這個創建images時輸入的是point,plane,以及一些設定參數:voxel_size:0.1,area_extent:[-40,40,-5,3,0,70].在這里還有一些細節沒有看明白,它有一個操作是要去除某些點的,然而我不是很理解它去除的究竟是哪些區域的點.留個疑問!
2:input->feature-map
Input:
Image input不必說.BEV input 在點云數據里,高度上在0-2.5內進行劃分,均分為5個片段,在鳥瞰圖上每0.5米的高度記錄一次,鳥瞰圖的輸入的前5個channels是這5個channel(在長和寬的像素上每一個刪格)的點的最高值,最后一個channel是該刪格位置上的點的密度.
feature-map:
對兩個輸入使用同樣的卷積網絡進行卷積提取特征(VGG網絡,只要前4層),4層卷積后圖像變為原始圖像的1/8大小,為了防止特征圖過小而導致對小物體的檢測效果不好,對卷積后的圖進行上采樣(官方代碼用的是雙線性插值法,實際的輸出feature map是原始圖像的一半?),兩個輸入都需要同樣的操作.
3:feature map-> NMS
feature-map:
從輸入進來的feature map進行1*1的卷積后,再對其size進行裁剪,使其大小為6*6.注意:因為訓練時path_drop_probability等于0.9,所以在此之前需要隨機選擇該圖像是否輸入,生成mask來控制.同時mask的值也將會作為之后融合網絡的參數.size:(1/2):(1/2):1
Fusion:
Fusion網絡實際就是將兩個圖像re-size后的feature-map進行平均相加.如果某一個圖像的mask為0,則該圖像不需要輸入,fusion網絡就只輸出mask為1的那個feature map.
Fully connection:
全連接網絡在實際時使用了卷積網絡代替全連接層.分為兩大部分:背景/物體分類得分,以及框回歸(dtx,dty,dtz,dw,dh,dl)中心點回歸與長寬高回歸.
Proposals->NMS:
Proposals:
對原始手動輸入的3D-anchors利用框回歸得到的offsets(6)計算回歸后的框(預測),并將其投影到BEV圖上,計算在鳥瞰圖上的框的坐標以及norm后的坐標((x1,z1,x2,z2)左上角與右下角的坐標).注意:y軸方向代表的才是高度!并且似乎負方向才表示高度的正方向?還有一個問題就是不明白為什么會有在負向坐標的點?
NMS:
Soft-max后的分類輸出得分使用NMS,即針對在BEV圖上的norm后的框回歸值,利用soft max的值,選取得分最大的作為gt,當anchors與gt的ious大于0.5時就保留該anchors,最大保留1024個anchors.取出相對應的NMS后的top_anchors與top_objectness_softmax
第一次寫博客,這個編輯器不會用(果然我就適合搞個word來,簡單有方便,可惜這個博客不讓直接傳word格式的.允悲).暫時不想附上代碼解析.就這樣看吧
修改了一處錯誤
總結
以上是生活随笔為你收集整理的AVOD-理解系列(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab人口增长模型(指定函数拟合)
- 下一篇: [Android app] Linux串