日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

深度学习之图像分类

發(fā)布時間:2023/12/9 pytorch 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度学习之图像分类 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

第一篇CSDN文章,寫的不好,還請各位大佬指正。萬事開頭難,千里之行始于足下!

1.什么是圖像分類

圖像分類,核心是從給定的分類集合中給圖像分配一個標簽的任務。實際上,這意味著我們的任務是分析一個輸入圖像并返回一個將圖像分類的標簽。標簽總是來自預定義的可能類別集。
示例:我們假定一個可能的類別集categories = {dog, cat, eagle},之后我們提供一張圖片(圖1)給分類系統(tǒng):


圖1 圖像分類目標是根據(jù)輸入圖片且根據(jù)預定義類別分配標簽

這里的目標是根據(jù)輸入圖像,從類別集中分配一個類別,這里為eagle,我們的分類系統(tǒng)也可以根據(jù)概率給圖像分配多個標簽,如eagle:95%,cat:4%,panda:1%。

2.圖像分類和圖像識別的區(qū)別

圖像分類和圖像識別這兩個概念很容易搞混,很多做了幾年視覺的人也搞不清它倆的區(qū)別,在此說明他倆的區(qū)別,讓初學者少走彎路。
以人臉識別為例,假設一個班級里有20個人,用圖像分類做來區(qū)分每個學生,可以采集20個人的人臉圖片進行訓練模型分類,但是如果班級新來一個同學,我們就需要采集新來同學的圖像重新訓練模型,預測的圖像是把訓練好的模型作為特征提取器給softmax分類器做分類;而圖像識別是使用卷積網(wǎng)絡訓練大量人臉圖像,訓練好的模型作為特征提取器,預測的時候利用特征提取器和注冊人臉圖像計算相似度。

3.圖像分類適合什么場景

圖像中待分類物體是單一的,如上圖(1),如果圖像中包含多個目標物,如下圖(2),可以使用多標簽分類或者目標檢測算法。

4.目前圖像分類的網(wǎng)絡模型

常用的標準網(wǎng)絡模型:Lenet、Alxnet、Vgg系列、Resnet系列、Inception系列、Densenet系列、Googlenet、Nasnet、Xception、Senet(state of art)

輕量化網(wǎng)絡模型:Mobilenet v1,v2、Shufflenet v1,v2,Squeezenet
以上網(wǎng)絡模型不做具體說明,網(wǎng)絡博客很多,如有不懂,可加我微信:JGQ863995835

目前輕量化模型在具體項目應用時用的比較廣泛:

優(yōu)點:(1)參數(shù)模型小,方便部署(2)計算量小,速度快

缺點:(1)輕量化模型在精度上沒有Resnet系列、Inception系列、Densenet系列、Senet的accuracy高

如果使用Finetune tricks,輕量化模型也能達到上述模型精度的水平,所以在此力推輕量化模型。

(注:我個人在項目中常用的網(wǎng)絡模型resnet系列、mobilenet v2、lenet,不要小瞧lenet,在工業(yè)領域絕對大殺器,自然場景不適用。我自己改進lenet的模型,在項目應用中比lenet高3%,大家可以參考:https://github.com/machine52vision/Imporve-lenet

5.圖像分類中的tricks

利用好tricks可以有效改善模型精度,下面介紹各種方法

方法一:魔改網(wǎng)絡結構

(1)使用resnet的shortcut方法

(2)使用Inception 多尺度卷積核

(3)使用convolution的stride代替pool層

(4)使用正則化方法Batch normalization、Layer normalization、Instance normalization、Group Normalization;如果使用多GPU可以使Synchronized Batch Normalization

(5)對于不規(guī)則目標使用deform convolution

(6)輕量化模型使用group convolution

(7)小卷積核大視野使用dilate convolution

(8)去掉線性層使用全卷積層

(9)如果使用線性層,使用一維的Normalization,可以加快收斂并且(此方法其他網(wǎng)絡沒有)

方法二:模型初始化

(1)如果不使用finetune方法,盡量不使用隨機初始化,推薦kaiming方法初始化,是xavier的改進版;

(2)大力推薦finetune方法,少量數(shù)據(jù)就可達到較高的accuracy;

方法三:損失函數(shù)和優(yōu)化器

(1)一般分類使用softmax+Cross Entropy損失,MSE(均方誤差)由于非凸函數(shù),盡量不使用

(2)優(yōu)化器推薦又快又好的AdaBound(新鮮出爐的算法,比SGD快,比Adam好,反正是又快又好!!!)

方法四:學習率調整

(1)Warmup

(2)Linear scaling learning rate

(3)力薦cosine learning rate或ReduceLROnPlateau learing rate

方法五:激活函數(shù)

(1)sigmoid,tanh由于后期梯度消失或者梯度很小,導致收斂比較慢,盡量不使用;

(2)推薦relu及其各種改進版本,Elus、Leaky relu、Slus、PRelu、RRule等;

方法六:數(shù)據(jù)擴增方法

(1)Random image cropping and patching (RICP)

(2Cutout

(3)Mixup train

(4)隨機旋轉

(5)上下、左右flip

(6)調整亮度、對比度、飽和度

(7)其他各種裁剪方法

方法七:其他方法

(1)Knowledge distillation

(2)batch size不要設置太大(收斂慢),也不要太小(梯度隨機性大),依據(jù)經(jīng)驗在224*224圖像,在現(xiàn)存不溢出的時候,batch size=64。

(3)使用finetune方法,一般epoch=10左右就可達到很高的accuracy;如果不使用finetune方法,一般epoch=50~100左右(以上是根據(jù)工程經(jīng)驗,數(shù)據(jù)集在幾萬張,類別小于100的情況下,如果誤導,還請指正)

(4)對權重使用L2正則化,可以有效抑制過擬合

(5)Momentum一般設置0.9,根據(jù)前10次梯度方向向量的經(jīng)驗來加上此次的梯度方向向量來更新梯度(防止梯度突變;1/(1-0.9)=10)

(6)label smooth

以上是我依據(jù)工程項目經(jīng)驗的一些心得,如果寫的有誤還請多多包涵并指出!喜歡可關注我微信公眾號:52機器視覺

下一篇會介紹深度學習之目標檢測,這是一個大坑

總結

以上是生活随笔為你收集整理的深度学习之图像分类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。