前言
刀劍神域是2015年開始風(fēng)靡至今的人氣動(dòng)畫。有趣的是在該年有數(shù)名網(wǎng)友在論壇上爭(zhēng)論該作品的優(yōu)劣,進(jìn)而聚集眾多看熱鬧的網(wǎng)友將刀劍神域中的角色做成梗圖以諷刺不接受批評(píng)的粉絲,至今與刀劍神域相關(guān)的改圖統(tǒng)稱為「星爆圖」(以主角著名招式得名),由於其具有一定程度的幽默,因此已成為8年級(jí)生間的網(wǎng)路文化。
本專題的最終目的是自動(dòng)識(shí)別並從圖片中裁剪出不同星爆元素的ROI(Range of interest),以便後續(xù)建立訓(xùn)練資料集。 (
以上來自我的期末報(bào)告)
Detctron2是由FB開發(fā)的物件偵測(cè)框架,主要繼承於Mask Rcnn,並提供多種網(wǎng)路架構(gòu)與pretrained model供使用。Detctron2 架構(gòu)由Head與Backbone組成,Backbone負(fù)責(zé)提取圖片特徵,Head則負(fù)責(zé)判斷與輸出。例如在它的
model zoo中可以看到 R50-FPN模型,表backbone使用ResNet 50、head為FPN模型。
Rcnn家族
R代表Region(區(qū)域),主要概念是將圖片切成好幾個(gè)區(qū)塊,再分別對(duì)區(qū)塊做CNN。
RCNN (2013) [2]
將圖片切成約2~3千個(gè)小Region,對(duì)各個(gè)Region做CNN後使用SVM做分類。
Faster RCNN (2015)[3]
與其將每個(gè)區(qū)塊當(dāng)成獨(dú)立的影像作處理,F(xiàn)aster RCNN使用錨點(diǎn)(Anchor)的概念,讓各個(gè)區(qū)塊用來定位自己在原圖上的位置,方便我們將特徵投影在同一個(gè)影像上一次做處理,大大改善了RCNN的處理速度。
來源:
Fast R-CNN:ディープラーニングによる一般物體検出手法 | NegativeMindException
Mask RCNN [4]
Mask Rcnn簡(jiǎn)單來說是Faster Rcnn後再做個(gè)基於像素的分類。Faster Rcnn輸出 lable與bounding box參數(shù);Mask Rcnn輸出label, bounding box與 mask。
另外需注意是由於Faster Rcnn有做Region pooling等操作,特徵的位置可能會(huì)跑掉,因此Mask Rcnn需處理RoI align的問題。
製作Label
在訓(xùn)練模型之前得製作標(biāo)記資料。我使用的標(biāo)籤軟體是
Label Studio,功能齊全,安裝也算簡(jiǎn)單。
新建專案後在Add Label names打上label,以本專案為例,取名規(guī)則為:
- sw_dp :逐案者
- sw_hge: 闡釋者
- sw_ns: 夜空之劍
- kt_face: 桐人臉.....
點(diǎn)選標(biāo)籤直接在畫面上拖拉即可。
選擇CoCo格式輸出,可得到一個(gè)json檔與對(duì)應(yīng)名稱的圖片。
讀取資料
Detectron2的資料集使用"註冊(cè)"的概念,"name"作為資料集的key,不可重複。
取得資料可使用:
[範(fàn)例] 隨機(jī)採(cǎi)樣並標(biāo)註Ground Truth
結(jié)果:
DatasetCatalog 與 register_coco_instances差別[5]
由於detectron2在幫我們讀進(jìn)資料的時(shí)候會(huì)自動(dòng)將image id當(dāng)成該圖片的父資料夾路徑,因此要碼再寫個(gè)腳本處理圖片位置,要碼自訂義讀取資料的mapper。 (有研究精神的我們一定選擇後者(?))
要自訂義mapper得先了解資料集註冊(cè)的流程。在
官方文件中看到它使用DatasetCatalog 進(jìn)行註冊(cè)。
查看內(nèi)碼可發(fā)現(xiàn)register_coco_instances內(nèi)部也是使用DatasetCatalog註冊(cè)資料。
複寫資料Mapper
由於找不太到單獨(dú)修改目前pipeline的DataLoader的方法,因此另一個(gè)的方法是創(chuàng)建預(yù)設(shè)的Trainer,並複寫它的loader方法。[7]
訓(xùn)練模型
設(shè)定config
建立Trainer
訓(xùn)練
使用模型
訓(xùn)練後可得到一個(gè)權(quán)重檔 (本範(fàn)例命名為"model_final.pth"),將它套用在predictor的config上。
輸入預(yù)測(cè)圖片
- 最近有一個(gè)月忙到忘了檢查社群軟體,謝謝七七贊助了10本書 >///< 我會(huì)繼續(xù)多看多分享的(′▽`???)
- 下一篇應(yīng)該是講Shader的吧(?