<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          fasterrcnn深度學(xué)習(xí)口罩檢測

          共 2481字,需瀏覽 5分鐘

           ·

          2021-12-09 20:34


          向AI轉(zhuǎn)型的程序員都關(guān)注了這個(gè)號(hào)??????

          機(jī)器學(xué)習(xí)AI算法工程?? 公眾號(hào):datayx


          FasterRCNN原理詳解


          以下是fasterRCNN的結(jié)構(gòu)圖,下面進(jìn)行詳細(xì)的過程梳理:




          當(dāng)我們輸入一張圖片,首先傳達(dá)給backbone網(wǎng)絡(luò)進(jìn)行特征提取,backbone的選擇不是唯一的,可以使用resnet50,101等等,其目的就是為了得到圖像的大小較小,但卻很深的特征層


          舉個(gè)例子,當(dāng)輸入圖像的形狀是600x600x3時(shí),經(jīng)過backbone會(huì)得到一個(gè)特征層形狀為38x38x1024,注意,輸入的圖像應(yīng)進(jìn)行歸一化處理


          使用這個(gè)特征層進(jìn)行3x3卷積,濾波器個(gè)數(shù)為512,得到一個(gè)38x38x512的特征層,以38x38為大小,獲得38x38=1444個(gè)錨點(diǎn),每個(gè)錨點(diǎn)會(huì)有9個(gè)框,注意現(xiàn)在這個(gè)框是對(duì)于共享特征層而言的,下圖表示在特征層中心位置這個(gè)錨點(diǎn)對(duì)應(yīng)的9個(gè)先驗(yàn)框



          RPN在第一張圖中由3x3卷積,兩個(gè)1x1卷積組成,其目的是進(jìn)行粗略篩選出建議框,類似fastRCNN中使用圖像處理算法提起建議框的作用



          一般來說RPN默認(rèn)做的一步就是把特征圖上的所有先驗(yàn)框38x38x9個(gè)全部表示出來;之后,把38x38x512這個(gè)特征層上的每一個(gè)位置點(diǎn)(總共38x38個(gè))分別進(jìn)行兩個(gè)1x1的卷積,第一個(gè)卷積有9個(gè)濾波器,代表了9個(gè)先驗(yàn)框中包含物體的概率(分類),第二個(gè)卷積有9x4個(gè)濾波器,代表9個(gè)先驗(yàn)框,每一個(gè)框進(jìn)行調(diào)整的參數(shù)(左上角坐標(biāo)x,y和右下角坐標(biāo)x,y(回歸))



          因此,目前RPN輸出有兩個(gè)數(shù)組,第一個(gè)是(38x38,9),代表先驗(yàn)框包含物體概率,第二個(gè)是(38x38,9x4),代表先驗(yàn)框調(diào)整的位置信息,注意,目前沒有排除任何一個(gè)先驗(yàn)框,每個(gè)都參與了計(jì)算



          下一步就需要進(jìn)行刪除沒有用的先驗(yàn)框了,留下的叫建議框一般設(shè)置為300個(gè),我們已知每個(gè)先驗(yàn)框都含有一個(gè)概率大小,我們將這個(gè)值與一個(gè)設(shè)置的置信度進(jìn)行比較,包含物體的置信度一般取0.5,當(dāng)概率小于0.5,刪除這個(gè)先驗(yàn)框;下一步化簡繼續(xù),考慮到框的重疊,進(jìn)行一下非極大抑制,即NMS



          插入一個(gè)說明:


          NMS:去除重復(fù)的邊框


          將所有候選框的得分進(jìn)行排序,選中最高分及其所對(duì)應(yīng)的BBox:



          遍歷其余的框,如果它和當(dāng)前最高得分框的重疊面積大于一定的閾值,我們將其刪除

          從沒有處理的框中繼續(xù)選擇一個(gè)得分最高的,重復(fù)上述過程最后得到:



          然后把剩下的先驗(yàn)框結(jié)合(38x38,9x4)中的位置調(diào)整信息,獲得初步調(diào)整位置的框,映射回到原圖,刪除超出邊界的框,此時(shí)還沒結(jié)束,將剩余的框按照置信度即它的概率大小進(jìn)行排序,選擇最高的前300個(gè),目前便得到了初步篩選出的300個(gè)建議框,還是注意,這300個(gè)建議框的大小是針對(duì)共享特征層而言的;



          將這300個(gè)建議框與共享特征層求交集,獲得300個(gè)小特征層,即形狀為(300,mxn,1024),即300個(gè)mxn大小,深度或者通道數(shù)為1024的特征層集合,m,n代表了各個(gè)建議框的寬和高,每個(gè)建議框的寬和高都是不一樣的,但是我們可以使用RoIpooling層進(jìn)行池化,獲得300個(gè)固定大小為14x14,1024的特征層



          此處插入RoIpooling的過程:將一個(gè)寬和高為mxn的特征層(深度為d),等分成設(shè)置的(14x14份,通道數(shù)d不變,為了滿足等分時(shí)取整,需要進(jìn)行量化),然后在每個(gè)小區(qū)域內(nèi)進(jìn)行池化即可得到(14x14,d)的固定特征層


          舉個(gè)例子:


          1)Conv layers使用的是VGG16,feat_stride=32(即表示,經(jīng)過網(wǎng)絡(luò)層后圖片縮小為原圖的1/32),原圖800x800,最后一層特征圖feature map大小:25x25


          2)假定原圖中有一region proposal,大小為665x665,這樣,映射到特征圖中的大小:665/32=20.78,即20.78x20.78,如果你看過Caffe的Roi Pooling的C++源碼,在計(jì)算的時(shí)候會(huì)進(jìn)行取整操作,于是,進(jìn)行所謂的第一次量化,即映射的特征圖大小為20x20


          3)假定pooled_w=7,pooled_h=7,即pooling后固定成7x7大小的特征圖,所以,將上面在 feature map上映射的20x20的 region proposal劃分成49個(gè)同等大小的小區(qū)域,每個(gè)小區(qū)域的大小20/7=2.86,即2.86x2.86,此時(shí),進(jìn)行第二次量化,故小區(qū)域大小變成2x2


          4)每個(gè)2x2的小區(qū)域里,取出其中最大的像素值,作為這一個(gè)區(qū)域的‘代表’,這樣,49個(gè)小區(qū)域就輸出49個(gè)像素值,組成7x7大小的feature_map



          現(xiàn)在得到了固定大小的特征層,且總計(jì)300個(gè),因此整體看來這個(gè)張量形狀為(300,14,14,1024),在后面計(jì)算上,可以并行地計(jì)算每一個(gè)特征層,我們現(xiàn)在為了方便理解,就只從300個(gè)特征層中選出1個(gè)進(jìn)行計(jì)算過程上的瀏覽:



          現(xiàn)在選出了一個(gè)特征層:(14,14,1024),對(duì)這個(gè)特征層進(jìn)行卷積,使用到了殘差網(wǎng)絡(luò)50的最后一個(gè)stage,即conv_block->identity_block->identity_block,輸出特征層形狀為(7,7,2048),進(jìn)行一次平均池化得到特征層(1,1,2048),將這個(gè)特征層reshape展開成一個(gè)向量,此時(shí)便可以直接進(jìn)行全連接層處理,這里的全連接層計(jì)算也分成了2個(gè)分支,一個(gè)是預(yù)測類別,一個(gè)回歸得到邊框進(jìn)一步調(diào)整的4個(gè)參數(shù)信息



          對(duì)于分類分支,如果有20類物體,就要對(duì)應(yīng)21個(gè)神經(jīng)元,多出的這一個(gè)屬于背景類別



          對(duì)于回歸分支,就有20x4個(gè)神經(jīng)元,分別對(duì)應(yīng)每一類下邊框調(diào)整的4個(gè)位置參數(shù)



          我們繪制邊框時(shí),只需要索引分類分支中得到概率最大的那個(gè)類別,選出這個(gè)類別對(duì)應(yīng)的4個(gè)參數(shù)信息就可以了,這里注意,背景類別不用繪制



          到這里還沒有結(jié)束,經(jīng)過一波計(jì)算,我們得到了num個(gè)(num<300, 因?yàn)楸尘安凰悖┙?jīng)過精細(xì)調(diào)整的邊框,以及對(duì)應(yīng)的num個(gè)物體,對(duì)剩下num個(gè)物體,進(jìn)行一次置信度篩選,因?yàn)樗鼘?duì)應(yīng)的概率可能僅為0.6,這會(huì)導(dǎo)致結(jié)果判斷出現(xiàn)錯(cuò)誤,所以從num個(gè)物體中選擇置信度大于0.9的物體,到這里依然還沒結(jié)束;


          因?yàn)閷?shí)驗(yàn)證明,到目前還是避免不了有邊框重疊現(xiàn)象,比如:



          所以對(duì)此,再次進(jìn)行NMS,得到最終結(jié)果:



          到這里,fasterRCNN的一個(gè)過程其實(shí)就已經(jīng)梳理完成了,模型確實(shí)比較大,但是它的精度是不容置疑的。下面我們開始進(jìn)入模型訓(xùn)練部分



          項(xiàng)目代碼?獲取方式:

          關(guān)注微信公眾號(hào) datayx ?然后回復(fù)?RCNN?即可獲取。



          訓(xùn)練我們自己的FasterRCNN

          注意一個(gè)必要的點(diǎn),訓(xùn)練fasterRCNN必須使用VOC格式的數(shù)據(jù)集,因此,我會(huì)先從VOC格式數(shù)據(jù)集制作入手,再進(jìn)入訓(xùn)練的部分



          使用labelimg制作我們自己的VOC數(shù)據(jù)集

          首先安裝labelimg,即 pip install labelimg,等待安裝完成后,在Terminal中打開labelimg:




          打開左邊的Open Dir,即選中數(shù)據(jù)集中圖片文件的路徑;

          打開Change Save Dir,選擇xml標(biāo)注文件的保存路徑;

          現(xiàn)在窗口中會(huì)顯示我們需要編輯的圖片:


          選擇Create\nRectBox,直接在圖片上選出真實(shí)框,每次畫好一個(gè)真實(shí)框后,需要輸入這個(gè)框的類別名稱,選好框后狀態(tài)變成:



          選擇左邊的Save,此時(shí)標(biāo)記生成XML文件保存到Change Save Dir設(shè)置的路徑下,XML文件內(nèi)容如下:



          然后一張一張圖片的標(biāo)記,每張圖片對(duì)應(yīng)一個(gè)XML文件,這就生成了訓(xùn)練數(shù)據(jù)集


          在實(shí)際訓(xùn)練中,為了方便生成器讀取,我們需要生成一個(gè)txt文件,行數(shù)量就是訓(xùn)練集中的圖片數(shù)量,列數(shù)量各自不同,第一列均是圖片的絕對(duì)存儲(chǔ)路徑,后面的列依次表示成:


          類別編碼 框的4個(gè)位置信息;類別編碼 框的4個(gè)位置信息…


          訓(xùn)練的時(shí)候讀這個(gè)txt即可



          FasterRCNN訓(xùn)練詳解

          訓(xùn)練fasterRCNN時(shí),必須先確保有VOC格式的數(shù)據(jù)集


          首先,將fasterrcnn網(wǎng)絡(luò)框架構(gòu)建好,并加載預(yù)訓(xùn)練權(quán)重減少不必要的訓(xùn)練時(shí)間



          訓(xùn)練需要分成兩部分:


          1.先訓(xùn)練RPN,即訓(xùn)練邊框初步回歸分支與判斷是否包含物體分支,使網(wǎng)絡(luò)具有提取建議框的能力;注意到,在這一階段訓(xùn)練,每個(gè)位置點(diǎn)的9個(gè)先驗(yàn)框是人為事先分配好的;


          2.利用提取出的建議框,與共享特征層求交,訓(xùn)練網(wǎng)絡(luò)最后的分類分支與邊框精細(xì)回歸分支。


          關(guān)于正負(fù)樣本要注意,伴隨著訓(xùn)練,正負(fù)樣本分別出現(xiàn)在3個(gè)不同的階段內(nèi):


          第一階段是RPN的先驗(yàn)框是否包含物體(包含具體物體的先驗(yàn)框?yàn)檎龢颖荆尘盀樨?fù)樣本),分別隨機(jī)選擇128個(gè)正負(fù)樣本訓(xùn)練,可以達(dá)到初步預(yù)測出建議框的目的;


          第二階段是判斷建議框與真實(shí)框的重合度,(可以線性回歸的是正樣本,必須非線性回歸的是負(fù)樣本),可以線性回歸的意思是上一階段選出的建議框與真實(shí)框IOU比較大,則認(rèn)為可以線性回歸到真實(shí)框,同樣分別隨機(jī)選擇128個(gè)正負(fù)樣本訓(xùn)練,這樣訓(xùn)練可以使網(wǎng)絡(luò)獲得更少的建議框,也方便用線性回歸方式進(jìn)行準(zhǔn)確調(diào)整;


          第三階段是最終選出的建議框中,所含物體的類別,多個(gè)二分類構(gòu)成的多分類,這里的正負(fù)樣本就是分解出的一個(gè)個(gè)二分類樣本



          現(xiàn)在開始訓(xùn)練流程說明:


          太多的圖片導(dǎo)致內(nèi)存不能容納,所以借助數(shù)據(jù)生成器提供源源不斷的批量數(shù)據(jù),數(shù)據(jù)生成器讀取圖片的時(shí)候,會(huì)對(duì)圖片進(jìn)行隨機(jī)的光照補(bǔ)強(qiáng)等圖像增強(qiáng)操作,目的是為了使數(shù)據(jù)集多樣化,提高網(wǎng)絡(luò)的泛化能力


          讀取數(shù)據(jù)集之后,數(shù)據(jù)生成器會(huì)返回兩類數(shù)據(jù):


          增強(qiáng)后的圖片,真實(shí)邊框的坐標(biāo)信息


          在共享特征層上獲得所有先驗(yàn)框,每個(gè)先驗(yàn)框與每個(gè)真實(shí)框計(jì)算一次iou,iou大于0.7的設(shè)置為正樣本,小于0.3的設(shè)置為負(fù)樣本,在兩個(gè)值中間的框要忽略,不加入訓(xùn)練


          此處插入iou:將兩個(gè)框按照如下方式計(jì)算,即為iou



          將正負(fù)樣本分批傳給RPN訓(xùn)練,損失函數(shù)為RPN的分類損失與回歸損失之和,分類只有兩類:包含物體類,背景類;優(yōu)化器為Adam,學(xué)習(xí)率為1e-5





          在這個(gè)epoch內(nèi)的一次訓(xùn)練中,RPN完成了一代訓(xùn)練,現(xiàn)在要使用RPN對(duì)生成器提供的新一批數(shù)據(jù)預(yù)測出粗略的建議框,將這些建議框再次與真實(shí)框計(jì)算求出iou,當(dāng)iou大于0.6時(shí),認(rèn)為兩個(gè)框比較相似,用線性回歸到真實(shí)框是可以實(shí)現(xiàn)的,如果iou小于0.6,必須按照非線性回歸才可以調(diào)整到真實(shí)框,但這已經(jīng)不是我們要計(jì)算的任了,所以大于0.6的為正樣本,小于0.6的為負(fù)樣本,此時(shí)又得到了一次正負(fù)樣本,將正負(fù)樣本傳入訓(xùn)練,現(xiàn)在RPN具有了提取理論上可以支持線性回歸的建議框。



          因此在這里,又出現(xiàn)了一次分類損失函數(shù),和回歸損失函數(shù),函數(shù)的形式與上面的一樣,只是計(jì)算的對(duì)象變成:


          分類的目標(biāo)是可線性回歸的框和必須非線性回歸的框,回歸的計(jì)算只考慮可以線性回歸的框;


          這個(gè)epoch中的一次訓(xùn)練還沒有結(jié)束,現(xiàn)在使用RPN再次預(yù)測一批數(shù)據(jù),獲得了更加合理的建議框,將建議框映射到共享特征層大小上,截取特征層的每一個(gè)區(qū)域,現(xiàn)在就把這些截取出來的特征層們看做“一個(gè)一個(gè)的原圖片經(jīng)過特征提取網(wǎng)絡(luò)(resnet或者VGG)獲得的特征層”,我們要做的就是預(yù)測它們分別對(duì)應(yīng)的標(biāo)簽,分類使用交叉熵?fù)p失;除此之外,在訓(xùn)練分類的同時(shí),訓(xùn)練4個(gè)位置回歸的參數(shù),目的是對(duì)建議框進(jìn)行更加細(xì)致的調(diào)整。





          前面說過網(wǎng)絡(luò)的訓(xùn)練分兩個(gè)階段,第一階段訓(xùn)練RPN,第二階段才訓(xùn)練最后的分類層(分類層包括分類分支,回歸分支)


          因此訓(xùn)練RPN的綜合損失函數(shù)為提取出合理的建議框到roipooling層之前的損失函數(shù)之和:分成4個(gè)損失,2個(gè)分類損失,2個(gè)回歸損失;


          提取出合理的建議框后,就開始訓(xùn)練分類層,后面的損失函數(shù)之和就是分類層的綜合損失,只有2個(gè)損失,1個(gè)分類損失,1個(gè)回歸損失


          在很多個(gè)epoch后,損失減小,訓(xùn)練結(jié)束,權(quán)重保存到.h5文件


          使用labelimg標(biāo)注口罩?jǐn)?shù)據(jù)及后得到訓(xùn)練結(jié)果,使用tensorboard查看計(jì)算圖:



          fasterRCNN整體比較龐大,只展示出部分

          損失函數(shù)之和的減小過程為:


          平均的檢測準(zhǔn)確率為:

          使用訓(xùn)練好的權(quán)重進(jìn)行測試:



          機(jī)器學(xué)習(xí)算法AI大數(shù)據(jù)技術(shù)

          ?搜索公眾號(hào)添加:?datanlp

          長按圖片,識(shí)別二維碼




          閱讀過本文的人還看了以下文章:


          TensorFlow 2.0深度學(xué)習(xí)案例實(shí)戰(zhàn)


          基于40萬表格數(shù)據(jù)集TableBank,用MaskRCNN做表格檢測


          《基于深度學(xué)習(xí)的自然語言處理》中/英PDF


          Deep Learning 中文版初版-周志華團(tuán)隊(duì)


          【全套視頻課】最全的目標(biāo)檢測算法系列講解,通俗易懂!


          《美團(tuán)機(jī)器學(xué)習(xí)實(shí)踐》_美團(tuán)算法團(tuán)隊(duì).pdf


          《深度學(xué)習(xí)入門:基于Python的理論與實(shí)現(xiàn)》高清中文PDF+源碼


          《深度學(xué)習(xí):基于Keras的Python實(shí)踐》PDF和代碼


          特征提取與圖像處理(第二版).pdf


          python就業(yè)班學(xué)習(xí)視頻,從入門到實(shí)戰(zhàn)項(xiàng)目


          2019最新《PyTorch自然語言處理》英、中文版PDF+源碼


          《21個(gè)項(xiàng)目玩轉(zhuǎn)深度學(xué)習(xí):基于TensorFlow的實(shí)踐詳解》完整版PDF+附書代碼


          《深度學(xué)習(xí)之pytorch》pdf+附書源碼


          PyTorch深度學(xué)習(xí)快速實(shí)戰(zhàn)入門《pytorch-handbook》


          【下載】豆瓣評(píng)分8.1,《機(jī)器學(xué)習(xí)實(shí)戰(zhàn):基于Scikit-Learn和TensorFlow》


          《Python數(shù)據(jù)分析與挖掘?qū)崙?zhàn)》PDF+完整源碼


          汽車行業(yè)完整知識(shí)圖譜項(xiàng)目實(shí)戰(zhàn)視頻(全23課)


          李沐大神開源《動(dòng)手學(xué)深度學(xué)習(xí)》,加州伯克利深度學(xué)習(xí)(2019春)教材


          筆記、代碼清晰易懂!李航《統(tǒng)計(jì)學(xué)習(xí)方法》最新資源全套!


          《神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)》最新2018版中英PDF+源碼


          將機(jī)器學(xué)習(xí)模型部署為REST API


          FashionAI服裝屬性標(biāo)簽圖像識(shí)別Top1-5方案分享


          重要開源!CNN-RNN-CTC 實(shí)現(xiàn)手寫漢字識(shí)別


          yolo3 檢測出圖像中的不規(guī)則漢字


          同樣是機(jī)器學(xué)習(xí)算法工程師,你的面試為什么過不了?


          前海征信大數(shù)據(jù)算法:風(fēng)險(xiǎn)概率預(yù)測


          【Keras】完整實(shí)現(xiàn)‘交通標(biāo)志’分類、‘票據(jù)’分類兩個(gè)項(xiàng)目,讓你掌握深度學(xué)習(xí)圖像分類


          VGG16遷移學(xué)習(xí),實(shí)現(xiàn)醫(yī)學(xué)圖像識(shí)別分類工程項(xiàng)目


          特征工程(一)


          特征工程(二) :文本數(shù)據(jù)的展開、過濾和分塊


          特征工程(三):特征縮放,從詞袋到 TF-IDF


          特征工程(四): 類別特征


          特征工程(五): PCA 降維


          特征工程(六): 非線性特征提取和模型堆疊


          特征工程(七):圖像特征提取和深度學(xué)習(xí)


          如何利用全新的決策樹集成級(jí)聯(lián)結(jié)構(gòu)gcForest做特征工程并打分?


          Machine Learning Yearning 中文翻譯稿


          螞蟻金服2018秋招-算法工程師(共四面)通過


          全球AI挑戰(zhàn)-場景分類的比賽源碼(多模型融合)


          斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)


          python+flask搭建CNN在線識(shí)別手寫中文網(wǎng)站


          中科院Kaggle全球文本匹配競賽華人第1名團(tuán)隊(duì)-深度學(xué)習(xí)與特征工程



          不斷更新資源

          深度學(xué)習(xí)、機(jī)器學(xué)習(xí)、數(shù)據(jù)分析、python

          ?搜索公眾號(hào)添加:?datayx??


          瀏覽 78
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  男人天堂久草 | 人人玩人人草 | 夫妻成人视频 | 国产一级片内射 | 91探花在线播放 |