這篇文章會講解如何制作能夠分類120種小狗的圖像分類器。
這篇文章中所講述的內容都是基于colab notebook和fastai技術的深度學習的應用。
為什么使用colab?
使用colab的好處是,你不需要有任何顯卡GPU,colab中提供了一塊免費的k80帶12G顯存的GPU
colab是google提供的一個免費的Jupyter notebook的環境,可以省去安裝它的功夫
為什么使用fastai?
fastai是一種超級簡潔的深度學習工具,代碼上甚至比當前Keras還要簡潔。
底層是pytorch,能夠提供高速的處理性能。
和之前文章中的兩個物種(貓和狗)的分類略有不同,這次使用的數據集全部是狗,需要把這些狗分到不同的類別中。也就是說,圖片之間特征的區別的差異要比之前貓和狗分類的來的更加細微。
好吧,接下來我們看看如何動手制作。
1.在colab的作業本中配置fastai的環境
!curlhttps://course.fast.ai/setup/colab|bash
2.導入fastai包
fromfastaiimport*fromfastai.visionimport*
3.加載kaggle.json
這里我們準備從kaggle下載所需要的狗的數據集,如果你可以從其他地方得到數據集,那么可以省略步驟3和4,按照自己的方法在環境中導入數據集即可。
!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環境
!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
從結果中可以看到,我們已經從kaggle成功的下載了數據集文件。
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中的前五條數據
8.查看狗的類別
labels_df.pivot_table(index='breed',aggfunc=len).sort_values('id',ascending=False)
這里可以看到一共有120行數據,也就是120種狗的類別,以及每種類別里面有多少條數據。
9.加載數據集并顯示
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張狗的圖片,并且圖片上方會顯示相應的狗的類別。
如果只顯示了圖片,而圖片上的標簽不是類別的話,那說明數據導入部分存在問題。
OK,我們繼續下一步。
10.下載與訓練模型并微調
learner=create_cnn(data,models.resnet101,metrics=[accuracy])learner.fit_one_cycle(10)
這里我們設置了10個epoch,會稍微花費點時間大約40分鐘。
可以看到,在最后一個epoch時候,我們的精度在89%。當然我們還可以繼續調優:)
或者直接從零開始對每一層權重的訓練,這都是可以的。
到這里我們就已經成功的完成了一個120種狗狗的圖片分類器的制作啦,怎么樣?是不是很簡單?希望這篇文章可以給每一個前來閱讀的朋友帶來收獲,對深度學習,圖像分類有一個直接的體會。
-
gpu
+關注
關注
28文章
4740瀏覽量
128951 -
圖像
+關注
關注
2文章
1084瀏覽量
40468 -
分類器
+關注
關注
0文章
152瀏覽量
13183
原文標題:120種小狗圖像傻傻分不清?用fastai訓練一個分類器
文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論