这就是神经网络 7:深度学习-目标检测-超详细图解Faster R-CNN
本文動機
說實話,介紹Faster R-CNN的文章我看了很多,論文的英文原文和翻譯都看過,我知道two-statge和anchor的主要思想,可是我腦子里始終沒法建立一個完整的Faster R-CNN的框架,有太多的細(xì)節(jié)沒有搞清楚,每個步驟的tensor是什么維度?這些維度是什么含義?第二階段的坐標(biāo)回歸和第一階段一樣嗎?有太多的細(xì)節(jié)讓我疑惑不已。別人的文章講的都是別人建立了整體概念以后的細(xì)節(jié)分解,而我始終不能把所有的細(xì)節(jié)串聯(lián)起來。
為此我找了一個github上的tensorflow實現(xiàn)精讀代碼,希望把自己的理解畫下來、寫下來,幫自己總結(jié)的同時也幫助像我一樣的人。
這篇文章主要是閱讀參考資料里‘tf-faster-rcnn代碼’對應(yīng)的代碼之后寫的總結(jié)。這個tensorflow版本的實現(xiàn)和作者公開的caffe版本的實現(xiàn)有些許不同,但是不耽誤理解原理,實現(xiàn)方面的不同我會在最后介紹。我對caffe不熟,所以就用這個tenorflow版本了。
本文側(cè)重對Faster R-CNN由上到下的理解,有些知識點不會講很細(xì),可以參考文末《參考資料》里的其它文章。
本文是以VGG為主干網(wǎng)絡(luò)的基礎(chǔ)上解讀的。換成其它的backbone也是可以的,但是本文未涉及。
本文解讀的代碼是以端到端的方法完成訓(xùn)練的,也就是說不需要Faster R-CNN那樣分多個階段分別訓(xùn)練網(wǎng)絡(luò)的不同部分。
整體結(jié)構(gòu)
下面的圖片就是代碼整體的流程框圖:
注意上圖中我只畫出了我關(guān)心的部分tensor,很多不影響理解的tensor就沒有畫出來。
藍(lán)色的tensor是參與最終LOSS計算的。從上圖可以看出,之所以可以完成端到端的訓(xùn)練,是因為兩個stage都參與了LOSS的計算。
細(xì)節(jié)分解
這一部分按照上面流程圖里的大致順序講解各個步驟的具體細(xì)節(jié)。
網(wǎng)絡(luò)輸入
網(wǎng)絡(luò)輸入需要三個tensor:gt_boxes、img和im_info。
- img :輸入圖片
代碼里每次固定輸入一張圖片進行訓(xùn)練和測試,所以img的形狀是[1, H, W, C]。其中H、W代表寬高, C表示通道數(shù)。因為backbone輸出的feature_map會被裁剪為相同的大小送到stage-2的回歸網(wǎng)絡(luò),所以Faster R-CNN對圖片大小沒有明確要求,多大的圖片都是可以的。
- im_info:圖片形狀
im_info的形狀是[3], 存儲是就是圖片的H、W、C。
- gt_boxes:ground truth的bbox坐標(biāo)
存儲的是訓(xùn)練集里的標(biāo)注的邊界框。形狀是[None, 5]。第二個維度的長度為5,其格式為(x1, y1, x2, y2, cls_label),前四個數(shù)分別為左上角和右下角的這兩個點的坐標(biāo),單位是像素。第二維的最后一個成員cls_label是這個bbox所屬的分類,是一個int類型的值。
主干網(wǎng)絡(luò)
原則上來說,任何分類網(wǎng)絡(luò)都可以作為Faster R-CNN的主干網(wǎng)絡(luò),主干網(wǎng)絡(luò)的作用是提取圖片特征,為rpn和stage2提供原料。我看的代碼里支持好幾種分類網(wǎng)絡(luò),我選擇了VGG模式下進行通讀代碼。
代碼里主干網(wǎng)絡(luò)輸出的特征圖名為net_conv,形狀是[1, H/16, W/16, 512]。也就是說,相對于原圖,寬高方向上縮放了16倍。注意這個16,后面要用很多次。
region_proposal網(wǎng)絡(luò)
從上面圖片中可以看到,net_conv和crop_proposal_layer右側(cè)的部分都屬于region_proposal網(wǎng)絡(luò)(簡稱rpn)。這部分主要用于產(chǎn)生可能有物體的區(qū)域,交給stage2的網(wǎng)絡(luò)去進一步定位和分類。這個部分產(chǎn)生的區(qū)域會比實際物體多。
net_conv后面緊接著一個3x3的卷積,卷積后特征圖的大小和通道數(shù)都不變。輸出的tensor名為rpn(這個rpn僅僅是一個tensor的名字,不表示整個region_proposal網(wǎng)絡(luò)), 然后分成兩個分支, 上面的分支接一個1x1的點卷積,用于為每個anchor框產(chǎn)生一個回歸系數(shù)。下面的分支同樣接一個1x1的點卷積,用于給每個anchor框做二分類(前景還是背景),前景就是可能有物體的,背景就是沒物體的。
rpn_cls_score
rpn_cls_score是預(yù)測背景和前景分類的tensor。其shape為[1, H/16, W/16, num_anchors * 2]。注意長寬和前面的net_conv一樣,只是通道數(shù)變?yōu)閚um_anchors * 2。
由于Faster R-CNN使用3種縮放的3種長寬比的anchor框,所以num_anchors為9。rpn_cls_score[:,:,:]的每個值對應(yīng)num_anchors個anchor框的二分類,長度為為num_anchors * 2。
其中rpn_cls_score[:,:,:, 0:num_anchors]表示對應(yīng)位置上的9個anchor框為背景的概率(此時還沒進行softmax歸一化),rpn_cls_score[:,:,:, num_anchors:]表示對應(yīng)位置上的9個anchor框為前景(也就是有物體)的概率。
rpn_cls_score_reshape
對rpn_cls_score進行reshape之后得到rpn_cls_score_reshape,它的形狀是[1, num_anchors*H/16, W/16, 2],注意最后一維的長度變成了2,這是為了好做softmax。
rpn_cls_prob
rpn_cls_prob是rpn_cls_score_reshape進行完softmax運算再做reshape操作得到的,它的形狀和rpn_cls_score一樣,都是[1, H/16, W/16, num_anchors * 2]。
需要強調(diào)的是,圖片中的softmax和reshape并不是對應(yīng)一個操作,而是好幾個操作的組合。
rpn_bbox_pred
Faster R-CNN的anchor機制相當(dāng)于一種變相的滑窗,只不過窗的位置和大小都是固定的。那怎么得到精確的bbox呢?方法就是回歸得到在anchor框的基礎(chǔ)上進行平移和縮放的偏移系數(shù),對anchor框進行變換就得到了更為精確的bbox。眾所周知,Faster R-CNN是屬于2-stage類型的目標(biāo)檢測,所以這種回歸會做兩次。第一次就是得到上面圖片里的rpn_bbox_pred,第二次是得到上面圖片里的bbox_pred。
一個anchor的位置是四個數(shù)表示:x、y、h、w, 分辨表示方框中心點的坐標(biāo)和寬高。rpn_bbox_pred的形狀是[1, H/16, W/16, num_anchors * 4],最后一維之所以是num_anchors * 4,是因為每個anchor框?qū)?yīng)的4個回歸系數(shù)是tx、ty、th、tw,對應(yīng)anchor的4個坐標(biāo)信息的偏移系數(shù)。
下方帶*的符號是預(yù)測值,帶小寫a的符號是anchor框坐標(biāo)。t^*是rpn_bbox_pred內(nèi)的內(nèi)容,它和預(yù)測的bbox坐標(biāo)的關(guān)系對應(yīng)如下:
有了偏移系數(shù),求x*、y*、h*、w*只要做一個相反的運算就可以了。
訓(xùn)練的時候,anchor坐標(biāo)和實際物體的bbox坐標(biāo)是已知的,那么這些anchor框?qū)?yīng)的修正系數(shù)就是:
這樣求出的偏移系數(shù),可以和rpn_bbox_pred的內(nèi)容做比較,作為訓(xùn)練的LOSS之一。
為何采用上面這種偏移系數(shù)而不是直接回歸得出偏移的坐標(biāo)值做加法,我們后面單獨討論。
proposal_layer
proposal_layer用于從前面預(yù)測的值里面用NMS挑選出最可能的區(qū)域傳給下一個階段。
proposal_layer的輸入有以下內(nèi)容:
- rpn_bbox_pred:對所有anchor框坐標(biāo)的偏移系數(shù)
- rpn_cls_prob::對所有anchor框做分類得到的softmax歸一化值,分類種類只有兩種:前景(包含目標(biāo))、背景(無目標(biāo))。
- anchors:所有anchor框的坐標(biāo)值,也是利用tensorflow的計算圖得到的,我在圖片里沒有畫出。anchor框的位置是四個數(shù)表示:x、y、h、w, 分辨表示方框中心點的坐標(biāo)和寬高。實際上我看的代碼里anchor框是用左上角和右下角坐標(biāo)表示的,計算的時候會先轉(zhuǎn)化為中心點坐標(biāo)的格式。
- RPN_POST_NMS_TOP_N:做nms運算的時候,選取最終roi的個數(shù)
- RPN_NMS_THRESH:nms的閾值
注意,上面的RPN_POST_NMS_TOP_N和RPN_NMS_THRESH有兩套,可以看上面圖片左上角的內(nèi)容。訓(xùn)練和測試模式,采用不同的值。
由于前面的網(wǎng)絡(luò)結(jié)構(gòu)對每個anchor框都做了分類并產(chǎn)生了偏移系數(shù),實際上后面用不了這么多,RPN_POST_NMS_TOP_N用于指定做nms的時候輸出的roi個數(shù)。
訓(xùn)練模式下,RPN_POST_NMS_TOP_N為2000,測試模式下為300。也就是說訓(xùn)練的時候產(chǎn)生更多的roi用于提高訓(xùn)練質(zhì)量,而測試的時候只產(chǎn)生300個roi,這樣可以減輕后面的計算壓力。
proposal_layer的輸出主要是兩個tensor:
- rois(test):選擇的roi,大小是[rois_num_test, 5],第二維每個值長度為5,后四個數(shù)就是bbox的中心點坐標(biāo)及長寬,第一個數(shù)表示屬于同一個batch里的第幾張圖片,由于網(wǎng)絡(luò)固定只輸入一張圖片,所以第一個數(shù)總為0。這里的bbox中心坐標(biāo)及長寬就是用rpn_bbox_pred及anchor坐標(biāo)計算得到的。
- roi_scores: rois對應(yīng)的得分,其形狀為[rois_num_test, 1]。
rois_num_test等于RPN_POST_NMS_TOP_N。
注意,rois(test)的區(qū)域是經(jīng)過裁剪的,保證每個區(qū)域都在圖片內(nèi)部。同時上面所說的所有坐標(biāo)都是針對原圖片的,不是針對conv_net這個feature map的。
另外這里rois(test)是測試模式下給stage2用的,訓(xùn)練模式下用的是圖片上面的rois(train),后面會講解。
anchor_target_layer
我總認(rèn)為很多文章之所以沒讓我明白Faster R-CNN是因為沒講清楚proposal_target_layer和anchor_target_layer。這兩部分之所以重要,是因為這兩個模塊會產(chǎn)生訓(xùn)練的標(biāo)準(zhǔn)答案,供計算LOSS的使用。
anchor_target_layer為stage1產(chǎn)生標(biāo)準(zhǔn)答案。proposal_target_layer這部分網(wǎng)絡(luò)為stage2產(chǎn)生標(biāo)準(zhǔn)答案。
本節(jié)主要講解anchor_target_layer。
anchor_target_layer主要功能
anchor_target_layer為stage1產(chǎn)生標(biāo)準(zhǔn)答案。它從所有的anchor里選出和實際的bbox有較大IOU的那部分作為正樣本,選出IOU較小的部分anchor作為負(fù)樣本,最多選出256個anchor框,正負(fù)樣本比例保持1:1,如果某種樣本太少,則會隨機刪除另一種保持比例。
注意,anchor_target_layer只保留全部區(qū)域范圍都在圖片內(nèi)部的anchor框,那些有部分范圍不在圖片內(nèi)部的anchor框?qū)⒈粧仐?#xff0c;永遠(yuǎn)不參與訓(xùn)練。但是proposal_layer會利用所有的anchor,最后僅僅把超出圖片部分的roi裁小,以保持roi在圖片內(nèi)部。這兩個地方的這點區(qū)別還是要注意的。
anchor_target_layer的輸入?yún)?shù)
- rpn_cls_score:這個tensor僅僅為anchor_target_layer提供feature map的寬高這兩個參數(shù),其內(nèi)容并不被anchor_target_layer需要。
- gt_boxes:包含物體的bbox,這個框是從訓(xùn)練集的標(biāo)注中來的,用于篩選優(yōu)質(zhì)的正負(fù)樣本
- anchors:所有anchor框的坐標(biāo)。其坐標(biāo)可以用于和gt_boxes計算IOU,有較大IOU的anchor框?qū)⒈贿x為正樣本,有較小IOU的被選為負(fù)樣本。
- RPN_POSITIVE_OVERLAP:超參,正樣本的IOU閾值,默認(rèn)為0.7。高于這個值作為正樣本。
- RPN_NEGATIVE_OVERLAP:超參,負(fù)樣本的IOU閾值,默認(rèn)為0.3。低于這個值作為負(fù)樣本。
- RPN_BATCHSIZE:超參,anchor_target_layer輸出的anchor框的上限個數(shù),默認(rèn)值為256。
- RPN_FG_FRACTION:超參,正樣本比例,默認(rèn)0.5。默認(rèn)情況下RPN_BATCHSIZE*RPN_FG_FRACTION=256 * 0.5=128,所以默認(rèn)情況下正負(fù)樣本各占一半。如果正樣本或者負(fù)樣本超過了128個,則會隨機刪除部分,保持綜述為128。少了就沒辦法了。
anchor_target_layer的輸出參數(shù)
- rpn_labels:輸出正負(fù)樣本的標(biāo)簽。形狀是[1, 1, num_anchors*H/16, W/16],也就說說針對所有的anchor框都有一個標(biāo)準(zhǔn)值,其中正樣本標(biāo)注為1,負(fù)樣本標(biāo)注為0,其它不關(guān)心的樣本標(biāo)注為-1.
- rpn_bbox_targets:輸出所有正樣本的anchor框?qū)?yīng)的偏移系數(shù)。其形狀為[1, H/16, W/16, num_anchors * 4],每個anchor都有對應(yīng)的值,不過只有正樣本對應(yīng)的位置有有效值,負(fù)樣本和不關(guān)心的anchor都用全0填充。
- rpn_bbox_inside_weights和rpn_bbox_outside_weights:計算LOSS的掩碼。其形狀是[1, H/16, W/16, num_anchors * 4],可以看到其形狀和rpn_bbox_targets一致。被選中的作為正樣本的anchor對應(yīng)的位置其值為(1.0, 1.0, 1.0, 1.0)。 計算LOSS的時候用這兩個值作為過濾rpn_bbox_targets的掩碼。在代碼實現(xiàn)里,這兩個值是一樣的。
rpn_labels將和前面的rpn_cls_score_reshape一起計算交叉熵?fù)p失,rpn_bbox_targets將和前面的rpn_bbox_pred計算smooth_L1損失。
proposal_target_layer
proposal_target_layer這部分網(wǎng)絡(luò)為stage2產(chǎn)生標(biāo)準(zhǔn)答案。
輸入?yún)?shù)
輸入?yún)?shù)包括前面proposal_layer的兩個輸出tensor:rois(test)和roi_scores。還包括:
- gt_boxes:包含物體的bbox,這個框是從訓(xùn)練集的標(biāo)注中來的,用于篩選優(yōu)質(zhì)的正負(fù)樣本
- BATCH_SIZE:篩選出的roi的個數(shù),默認(rèn)值為128。
- FG_FRACTIONL:正樣本比例,默認(rèn)0.25。也就是說,默認(rèn)情況下正樣本做多取32個。
- FG_THRESH:和gt_box的IOU大于這個閾值會被作為正樣本,默認(rèn)為0.5
- BG_THRESH_HI, BG_THRESH_LO:和gt_box的IOU在這兩個閾值范圍內(nèi)的roi會被作為負(fù)樣本。默認(rèn)值是0.5和0.1
注意,proposal_target_layer輸出的樣本個數(shù)總是固定的,如果:
- 正負(fù)樣本個數(shù)都不為0:正樣本過多則去掉多余正樣本,少于BATCH_SIZExFG_FRACTION就保持原樣;負(fù)樣本進行有放回隨機抽取,保證總個數(shù)是BATCH_SIZE個。
- 負(fù)樣本個數(shù)為0:正樣本個數(shù)大于BATCH_SIZE則進行無放回隨機抽取, 否則對正樣本進行有放回隨機抽取,保證總個數(shù)是BATCH_SIZE個。
- 正樣本個數(shù)為0:負(fù)樣本個數(shù)大于BATCH_SIZE則進行無放回隨機抽取, 否則對負(fù)樣本進行有放回隨機抽取,保證總個數(shù)是BATCH_SIZE個。
由此可見,無論如何,proposal_target_layer輸出的樣本個數(shù)都是BATCH_SIZE。
輸出參數(shù)
- bbox_targets:計算gt_boxes相對rois(test)的偏移系數(shù),注意前面stage1的回歸系數(shù)是相對anchor框的,這里是相對stage1的輸出rois(test)的。bbox_targets的形狀是[rois_num_train, num_classes * 4],num_classes是總的分類的個數(shù), rois_num_train等于BATCH_SIZE。最后一維表示對應(yīng)的roi在所有分類上的偏移系數(shù),長度雖然是num_classes * 4,只有正確分類的對應(yīng)的位置有有效值,其余位置都是0.
- labels:輸出的分類值。一個roi的分類值等于與之有最大IOU的gt_box所屬的分類。labels的形狀是[rois_num_train, 1]。
- bbox_inside_weights和bbox_outside_weights:形狀都是[rois_num_train, num_classes * 4],作用就是計算LOSS的時候作為掩碼過濾bbox_targets中正確分類的偏移系數(shù)。前面bbox_targets的最后一維只在正確分類的對應(yīng)位置上有有效的偏移系數(shù),計算LOSS的使用需要掩碼屏蔽其它分類的影響。代碼中這兩個值是相等的。
- rois(train):形狀是[rois_num_train, 5],含義和rois(test)一致。
crop_proposal_layer
crop_proposal_layer的作用就是利用生成的roi的位置裁剪feature map。裁剪的時候先裁剪為14x14的大小,然后采用最大池化為7x7。這和官方直接裁剪為7x7是不同的。
注意crop_proposal_layer在訓(xùn)練模式和測試模式下的輸入源是不同的:訓(xùn)練模式下的輸入是proposal_target_layer產(chǎn)生的rois(train),測試模式下的輸入是proposal_layer產(chǎn)生的rois(test)。
crop_proposal_layer輸出的tensor名為pool5,其形狀是[rois_num, 7, 7, 512]。根據(jù)上面的講解我們知道,(使用默認(rèn)值)訓(xùn)練模式下產(chǎn)生128個roi, 測試模式下產(chǎn)生300個roi。所以訓(xùn)練模式下rois_num為128,測試模式下rois_num為300。
fc7
pool5的內(nèi)容會被拉成一維向量,經(jīng)過兩層4096的全連接節(jié)點生成fc7,fc7的形狀是[rois_num, 4096]。
cls_score和bbox_pred
整個網(wǎng)絡(luò)最終的輸出值是:
- cls_score:對應(yīng)每個roi在所有分類上的可能性(此時還沒做softmax歸一化),形狀是[rois_num, num_classes]
- bbox_pred:預(yù)測的目標(biāo)位置相對于roi的偏移系數(shù),形狀是[rois_num, num_classes*4]。roi和偏移系數(shù)計算bbox的方法和stage1是一樣的。
LOSS計算
代碼中的訓(xùn)練事端到端的,LOSS計算時使用了stage1和stage2兩個階段的輸出。最上方推按中藍(lán)色的tenor都參與了LOSS的計算。
代碼中LOSS共分為5部分:
- 權(quán)重正則化:利用slim的接口為所有的權(quán)重定義了衰減系數(shù)為0.0001的L2正則化損失,偏置沒有參與正則化
- stage1的分類損失:由rpn_bbox_pred和rpn_bbox_targets這兩個tenor計算交叉熵得到
- stage1的bbox損失:由rpn_cls_score_reshape和rpn_labels計算smooth_L1損失得到
- stage2的分類損失:由cls_score和labels計算交叉熵得到
- stage2的bbox損失:由bbox_pred和bbox_targets計算smooth_L1損失得到
代碼實現(xiàn)和官方的不同
我看的這份代碼專門寫了篇論文講解和官方代碼實現(xiàn)上的不同,文章位置在:
- 《An Implementation of Faster RCNN with Study for Region Sampling》:https://arxiv.org/pdf/1702.02138.pdf
文章提到實現(xiàn)上的差異包括:
- 原始實現(xiàn)中RoI pooling layer直接裁剪了一個7x7大小的特征圖,本代碼里用tf.image.crop_and_resize裁剪一個14x14的特征圖,然后用最大池化縮小為7x7大小。
- 原始實現(xiàn)每個batch兩張圖片,anchor_target_layer為每個圖片產(chǎn)生128個樣本,本代碼每個批次只有一張圖片,產(chǎn)生256個樣本
- 原始的實現(xiàn)里會刪除過小的區(qū)域(寬或高小于16像素)。本代碼發(fā)現(xiàn)這是多余的操作,會損害小目標(biāo)的檢測
當(dāng)然還有一些其他影響不大的小改動。不再翻譯了。
作者在論文里還做了一組測試,那就是發(fā)現(xiàn)訓(xùn)練時讓proposal_layer用NMS算法,測試時讓proposal_layer直接選取得分最高的5000個框作為roi得到的map有略微的優(yōu)勢,當(dāng)然時間會長不少。
問題探討
計算下共有多少anchor框
假設(shè)原圖的寬高是W和H,經(jīng)過backbone以后降為原來的1/16。再假設(shè)每個anchor點上有不同大小的anchor框共9個。
那么總公共的anchor框個數(shù)為w/16 x h/16 x 9。
為何用偏差系數(shù)而不是直接回歸得到偏差量
Faster R-CNN對bbox做回歸,并沒有直接回歸得到偏移量,而是學(xué)習(xí)偏移系數(shù)。那么為什么會這樣呢?
論文里說Faster R-CNN的anchor回歸方法的一個重要特性是它具有平移不變性。
參考資料里的國外博客有張圖很能說明問題(做了縮放后偏移系數(shù)不變):
同時參考資料里面的《One Stage目標(biāo)檢測算法可以直接回歸目標(biāo)的坐標(biāo)是什么原理?》也提出了另外兩個角度:
- 正則化:視覺上相差很近的大物體和相差很遠(yuǎn)的小物體,偏差的像素數(shù)可能是一樣的,這就不合理了。所以偏移系數(shù)加入了對anchor框大小的正則化。
- 防止出現(xiàn)負(fù)數(shù):寬和高不可能是負(fù)數(shù),進行l(wèi)og/exp變換防止出現(xiàn)負(fù)數(shù)
smooth L1 loss
Faster R-CNN在求最后LOSS的時候,對偏移系數(shù)采用的是smooth L1 loss。那么這種算法和L1和L2 loss比有啥優(yōu)點呢?
L1及L2 loss的公式如下:
L2的問題是對于異常點(outliers)和噪聲更敏感,容易梯度爆炸;L1倒是對異常點(outliers)和噪聲不敏感的,但是在0處不平滑,可能會在0附近震蕩,影響收斂。
smooth L1 loss結(jié)合兩者的優(yōu)點應(yīng)運而生:
上圖來自知乎。
后記
說老實話,從開始接觸這份代碼到現(xiàn)在有一個多月了,中間穿插了很多其它事,但是閱讀代碼的工作量還是超出我想象。但是不讀代碼我又有無數(shù)的疑問,讓我無法相信自己真的懂了Faster R-CNN。
寫完文章才發(fā)現(xiàn),我寫的還是給自己看的筆記而不是給別人看的教程。也許這就是我看不懂別人文章的原因吧,畢竟專門為別人寫博客的人不多,大家還都是為自己寫的。
參考資料1
這部分參考資料看的比較多
論文原文: Faster R-CNN: Towards Real-Time Object
Detection with Region Proposal Networks
知乎:Faster R-CNN譯文
tf-faster-rcnn代碼:https://github.com/endernewton/tf-faster-rcnn
代碼對應(yīng)的改動:An Implementation of Faster RCNN with Study for Region Sampling
國內(nèi)博客:一文讀懂Faster RCNN
國外介紹faster RCNN的文章:Object Detection and Classification using R-CNNs
One Stage目標(biāo)檢測算法可以直接回歸目標(biāo)的坐標(biāo)是什么原理?:
對x, y, w, h坐標(biāo)進行l(wèi)og/exp變換防止出現(xiàn)負(fù)數(shù)。為何要學(xué)習(xí)變換系數(shù),而不直接學(xué)習(xí)坐標(biāo)差?為了正則化。
L1 loss 和 L2 loss
請問faster rcnn和ssd 中為什么用smooth l1 loss,和l2有什么區(qū)別?
損失函數(shù):L1 loss, L2 loss, smooth L1 loss
參考資料2
這部分資料看的少,也放在這吧
從R-CNN到RFBNet,目標(biāo)檢測架構(gòu)5年演進全盤點
對應(yīng)英文論文:Deep Learning for Generic Object Detection: A Survey
目標(biāo)檢測算法中檢測框合并策略技術(shù)綜述
基于深度學(xué)習(xí)的目標(biāo)檢測算法綜述
Faster R-CNN
原始圖片中的ROI如何映射到到feature map?
Faster R-CNN - 目標(biāo)檢測詳解
損失函數(shù):L1 loss, L2 loss, smooth L1 loss
總結(jié)
以上是生活随笔為你收集整理的这就是神经网络 7:深度学习-目标检测-超详细图解Faster R-CNN的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [react] react是什么?它的主
- 下一篇: 报错,但不影响运行ERROR: JDWP