這篇文章會講解如何制作能夠分類120種小狗的圖像分類器。
這篇文章中所講述的內(nèi)容都是基于colab notebook和fastai技術(shù)的深度學(xué)習(xí)的應(yīng)用。
為什么使用colab?
使用colab的好處是,你不需要有任何顯卡GPU,colab中提供了一塊免費(fèi)的k80帶12G顯存的GPU
colab是google提供的一個免費(fèi)的Jupyter notebook的環(huán)境,可以省去安裝它的功夫
為什么使用fastai?
fastai是一種超級簡潔的深度學(xué)習(xí)工具,代碼上甚至比當(dāng)前Keras還要簡潔。
底層是pytorch,能夠提供高速的處理性能。
和之前文章中的兩個物種(貓和狗)的分類略有不同,這次使用的數(shù)據(jù)集全部是狗,需要把這些狗分到不同的類別中。也就是說,圖片之間特征的區(qū)別的差異要比之前貓和狗分類的來的更加細(xì)微。
好吧,接下來我們看看如何動手制作。
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.驗證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))
如果一切順利,這里會顯示出9張狗的圖片,并且圖片上方會顯示相應(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)
這里我們設(shè)置了10個epoch,會稍微花費(fèi)點時間大約40分鐘。
可以看到,在最后一個epoch時候,我們的精度在89%。當(dāng)然我們還可以繼續(xù)調(diào)優(yōu):)
或者直接從零開始對每一層權(quán)重的訓(xùn)練,這都是可以的。
到這里我們就已經(jīng)成功的完成了一個120種狗狗的圖片分類器的制作啦,怎么樣?是不是很簡單?希望這篇文章可以給每一個前來閱讀的朋友帶來收獲,對深度學(xué)習(xí),圖像分類有一個直接的體會。
-
gpu
+關(guān)注
關(guān)注
28文章
4783瀏覽量
129395 -
圖像
+關(guān)注
關(guān)注
2文章
1089瀏覽量
40584 -
分類器
+關(guān)注
關(guān)注
0文章
152瀏覽量
13235
原文標(biāo)題:120種小狗圖像傻傻分不清?用fastai訓(xùn)練一個分類器
文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
基于多通道分類合成的SAR圖像分類研究
線性分類器
一種新的圖像定位和分類系統(tǒng)實現(xiàn)方案
基于Brushlet和RBF網(wǎng)絡(luò)的SAR圖像分類
圖像分類的方法之深度學(xué)習(xí)與傳統(tǒng)機(jī)器學(xué)習(xí)
融合多尺度分割圖像分類
![融合多尺度分割<b class='flag-5'>圖像</b><b class='flag-5'>分類</b>](https://file.elecfans.com/web2/M00/49/50/poYBAGKhwJ6AOpVYAAAQNG20AX4003.jpg)
一種新的基于全局特征的極光圖像分類方法
![一<b class='flag-5'>種</b>新的基于全局特征的極光<b class='flag-5'>圖像</b><b class='flag-5'>分類</b>方法](https://file.elecfans.com/web2/M00/49/6D/poYBAGKhwLKALYRkAAAR-itlkzY306.jpg)
基于顯著性檢測的圖像分類算法
簡單好上手的圖像分類教程!
![簡單好上手的<b class='flag-5'>圖像</b><b class='flag-5'>分類</b>教程!](http://file.elecfans.com/web1/M00/51/DF/o4YBAFsPtHmAaTplAAGo0ECzBWc757.gif)
針對遙感圖像場景分類的多粒度特征蒸餾方法
![針對遙感<b class='flag-5'>圖像</b>場景<b class='flag-5'>分類</b>的多粒度特征蒸餾方法](https://file.elecfans.com/web1/M00/E4/F3/pIYBAGBJ4VCAHLfkAAJmmzSr0ts539.png)
帶有EDEG IMPULSE的圖像分類器
![帶有EDEG IMPULSE的<b class='flag-5'>圖像</b><b class='flag-5'>分類</b><b class='flag-5'>器</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論