這篇文章會(huì)講解如何制作能夠分類120種小狗的圖像分類器。
這篇文章中所講述的內(nèi)容都是基于colab notebook和fastai技術(shù)的深度學(xué)習(xí)的應(yīng)用。
為什么使用colab?
使用colab的好處是,你不需要有任何顯卡GPU,colab中提供了一塊免費(fèi)的k80帶12G顯存的GPU
colab是google提供的一個(gè)免費(fèi)的Jupyter notebook的環(huán)境,可以省去安裝它的功夫
為什么使用fastai?
fastai是一種超級(jí)簡(jiǎn)潔的深度學(xué)習(xí)工具,代碼上甚至比當(dāng)前Keras還要簡(jiǎn)潔。
底層是pytorch,能夠提供高速的處理性能。
和之前文章中的兩個(gè)物種(貓和狗)的分類略有不同,這次使用的數(shù)據(jù)集全部是狗,需要把這些狗分到不同的類別中。也就是說,圖片之間特征的區(qū)別的差異要比之前貓和狗分類的來的更加細(xì)微。
好吧,接下來我們看看如何動(dòng)手制作。
1.在colab的作業(yè)本中配置fastai的環(huán)境
!curlhttps://course.fast.ai/setup/colab|bash
2.導(dǎo)入fastai包
fromfastaiimport*fromfastai.visionimport*
3.加載kaggle.json
這里我們準(zhǔn)備從kaggle下載所需要的狗的數(shù)據(jù)集,如果你可以從其他地方得到數(shù)據(jù)集,那么可以省略步驟3和4,按照自己的方法在環(huán)境中導(dǎo)入數(shù)據(jù)集即可。
!mkdir/content/.kaggle/!mkdir/content/data/dogsbreed/PATH="/content/data/dogsbreed/"fromgoogle.colabimportfiles#loadfromuploaddialoguploaded=files.upload()forfninuploaded.keys():withopen(f'/content/.kaggle/{fn}','wb')asf:f.write(uploaded[fn])
4.安裝kaggle環(huán)境
!chmod600/content/.kaggle/kaggle.json!pipinstallkaggle!cp/content/.kaggle/kaggle.json~/.kaggle/kaggle.json!kaggleconfigset-npath-v{/content}importkaggle!kagglecompetitionsdownload-p/content/data/dogsbreed/dog-breed-identification
從結(jié)果中可以看到,我們已經(jīng)從kaggle成功的下載了數(shù)據(jù)集文件。
5.驗(yàn)證GPU
torch.cuda.is_available()#Truetorch.backends.cudnn.enabled#True
6.解壓縮文件
!cd/content/data/dogsbreed&&unziplabels.csv.zip!cd/content/data/dogsbreed&&unzipsample_submission.csv.zip!cd/content/data/dogsbreed&&unziptest.zip!cd/content/data/dogsbreed&&unziptrain.zip
7.讀取label.csv
labels_df=pd.read_csv(f'{PATH}labels.csv')labels_df.head()
這里我們可以看到labels.csv中的前五條數(shù)據(jù)
8.查看狗的類別
labels_df.pivot_table(index='breed',aggfunc=len).sort_values('id',ascending=False)
這里可以看到一共有120行數(shù)據(jù),也就是120種狗的類別,以及每種類別里面有多少條數(shù)據(jù)。
9.加載數(shù)據(jù)集并顯示
data=ImageDataBunch.from_csv(PATH,folder='train',valid_pct=0.2,ds_tfms=get_transforms(),size=224,test='test',suffix='.jpg',bs=64).normalize(imagenet_stats)data.show_batch(rows=3,figsize=(10,12))
如果一切順利,這里會(huì)顯示出9張狗的圖片,并且圖片上方會(huì)顯示相應(yīng)的狗的類別。
如果只顯示了圖片,而圖片上的標(biāo)簽不是類別的話,那說明數(shù)據(jù)導(dǎo)入部分存在問題。
OK,我們繼續(xù)下一步。
10.下載與訓(xùn)練模型并微調(diào)
learner=create_cnn(data,models.resnet101,metrics=[accuracy])learner.fit_one_cycle(10)
這里我們?cè)O(shè)置了10個(gè)epoch,會(huì)稍微花費(fèi)點(diǎn)時(shí)間大約40分鐘。
可以看到,在最后一個(gè)epoch時(shí)候,我們的精度在89%。當(dāng)然我們還可以繼續(xù)調(diào)優(yōu):)
或者直接從零開始對(duì)每一層權(quán)重的訓(xùn)練,這都是可以的。
到這里我們就已經(jīng)成功的完成了一個(gè)120種狗狗的圖片分類器的制作啦,怎么樣?是不是很簡(jiǎn)單?希望這篇文章可以給每一個(gè)前來閱讀的朋友帶來收獲,對(duì)深度學(xué)習(xí),圖像分類有一個(gè)直接的體會(huì)。
-
gpu
+關(guān)注
關(guān)注
28文章
4920瀏覽量
130776 -
圖像
+關(guān)注
關(guān)注
2文章
1094瀏覽量
41077 -
分類器
+關(guān)注
關(guān)注
0文章
153瀏覽量
13421
原文標(biāo)題:120種小狗圖像傻傻分不清?用fastai訓(xùn)練一個(gè)分類器
文章出處:【微信號(hào):rgznai100,微信公眾號(hào):rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
基于多通道分類合成的SAR圖像分類研究
線性分類器
一種新的圖像定位和分類系統(tǒng)實(shí)現(xiàn)方案
基于Brushlet和RBF網(wǎng)絡(luò)的SAR圖像分類
圖像分類的方法之深度學(xué)習(xí)與傳統(tǒng)機(jī)器學(xué)習(xí)
融合多尺度分割圖像分類

一種新的基于全局特征的極光圖像分類方法

基于顯著性檢測(cè)的圖像分類算法
簡(jiǎn)單好上手的圖像分類教程!

針對(duì)遙感圖像場(chǎng)景分類的多粒度特征蒸餾方法

帶有EDEG IMPULSE的圖像分類器

評(píng)論