亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

在isic數(shù)據(jù)集上進(jìn)行malignant和nevus的分類嘗試

韓冰 / 2856人閱讀

摘要:皮膚病領(lǐng)域的痛點皮膚病是發(fā)生在皮膚和皮膚附屬器官疾病的總稱。皮膚是人體最大的器官,皮膚病的種類不但繁多,多種內(nèi)臟發(fā)生的疾病也可以在皮膚上有表現(xiàn)。

本文為一個使用深度學(xué)習(xí)經(jīng)典模型對isic中的惡黑malignant和nevus痣進(jìn)行分類任務(wù)的文章


引言

智能醫(yī)療領(lǐng)域是現(xiàn)在一個非?;鸬念I(lǐng)域,使用AI去解決醫(yī)療領(lǐng)域的一些痛點現(xiàn)在已經(jīng)是很多企業(yè)和組織正在做或者即將做的一件事情,雖然AI在醫(yī)療領(lǐng)域中的落地應(yīng)用上還不能看到明確的道路,但可以預(yù)見各個企業(yè)個組織必然會在自己的領(lǐng)域上有更多的成果,有更多的可以落地的應(yīng)用。


皮膚病領(lǐng)域的痛點

皮膚病是發(fā)生在皮膚和皮膚附屬器官疾病的總稱。皮膚是人體最大的器官,皮膚病的種類不但繁多,多種內(nèi)臟發(fā)生的疾病也可以在皮膚上有表現(xiàn)。嚴(yán)重的皮膚病,如惡黑,很可能致人死亡,誤診的后果會非常嚴(yán)重,癥狀輕的皮膚病,如痣,也許并不能稱之為皮膚病,而是皮損,很多人不選擇去治療。更嚴(yán)肅的是很多致死皮膚病和清癥狀皮膚病形態(tài)學(xué)及其相似,如上面提到的惡黑和痣,去有效的識別疾病,對挽救患者的生命起著至關(guān)重要的作用。

解決問題的論文及思路

有幸拜讀了谷歌發(fā)出的一篇XXX論文,論文地址
先說說論文的思路。這篇論文是在一個公開數(shù)據(jù)集isic上面進(jìn)行的訓(xùn)練和測試,這個數(shù)據(jù)集包含1萬多張皮膚病圖片,其中包含惡黑和痣這兩種形態(tài)學(xué)非常相似,但是后果完全不一樣的兩個皮膚鏡下圖片數(shù)據(jù)集,惡黑是一種可致死的疾病,而痣一般不會有重大影響,但醫(yī)學(xué)上經(jīng)常會有惡黑和痣的誤診存在,給患者造成了很大的損害,因此這篇論文中使用了深度神經(jīng)網(wǎng)絡(luò)的方法進(jìn)行惡黑和痣的識別,也是打開了一個新視野,造成了很大的影響。

論文使用了經(jīng)典的神經(jīng)網(wǎng)絡(luò)inception_v3,使用在imageNet中已經(jīng)訓(xùn)練好的參數(shù)進(jìn)行了遷移學(xué)習(xí),論文結(jié)果對惡黑的皮膚病圖片識別也達(dá)到了92%左右的準(zhǔn)確率,在這之后的另外一篇論文XXX中則使用了一個5層的簡單網(wǎng)絡(luò)結(jié)構(gòu),分別在皮膚病圖片的rgb空間、hsv空間和fft空間進(jìn)行了訓(xùn)練,得到了三個模型,最終對模型進(jìn)行了模型融合,對惡黑的預(yù)測達(dá)到了97%的準(zhǔn)確率。


嘗試重現(xiàn)論文的結(jié)果:

首先,需要搭建一個神經(jīng)網(wǎng)絡(luò),使用當(dāng)下最流行的tensorflow進(jìn)行了網(wǎng)絡(luò)結(jié)構(gòu)的搭建和模型的訓(xùn)練,在tensorflow的slim庫中提供了inception_v3的封裝好的網(wǎng)絡(luò)結(jié)構(gòu),我可以直接使用該網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行訓(xùn)練。如下圖,網(wǎng)絡(luò)結(jié)構(gòu)

然后,下載isic的數(shù)據(jù)集(PS:數(shù)據(jù)集網(wǎng)站竟然不提供現(xiàn)成的下載鏈接,但是提供了可以下載數(shù)據(jù)的API),然后整理出其中的惡黑和痣的圖片,人為的將他們分成了訓(xùn)練集和測試集,訓(xùn)練集數(shù)據(jù)和測試集數(shù)據(jù)的比例大致為2:1,訓(xùn)練集的惡黑大約1500張,痣約為6500張,測試集惡黑大約為750張,痣3000張左右,這里主要采取隨機(jī)分配的方式,并沒有刻意去篩選質(zhì)量好的圖片作為訓(xùn)練集。

然后,編寫數(shù)據(jù)讀取方法(我并沒有將圖片轉(zhuǎn)化為tensorflow推薦的tfrecords文件再去訓(xùn)練,而是直接讀入圖片訓(xùn)練),將訓(xùn)練集數(shù)據(jù)目錄全部加載,打亂后,每次讀取batch_size個圖片,讀取數(shù)據(jù)時,用圖片路徑讀取圖片,將256X的圖片resize為224224的大小,并做基本的翻轉(zhuǎn)和左右變換,

然后,編寫神經(jīng)網(wǎng)絡(luò)訓(xùn)練的訓(xùn)練過程,對fearture maps進(jìn)行softmax,定義損失函數(shù),選擇優(yōu)化器,編寫驗證方法

然后,使用已經(jīng)訓(xùn)練好的inception_v3的模型,進(jìn)行遷移學(xué)習(xí),并在訓(xùn)練中對驗證集和測試集進(jìn)行同步輸出結(jié)果

最后,學(xué)出模型

學(xué)習(xí)率0.1,batchsize為64,參數(shù)初始化采用一定范圍內(nèi)的正態(tài)分布

可喜可賀可喜可賀可喜可賀,最終的結(jié)果非常好,對惡黑識別的準(zhǔn)確率達(dá)到了驚人的50%左右,意不意外,驚不驚喜,之后當(dāng)然就是例行的優(yōu)化程序,所謂一天寫網(wǎng)絡(luò),一月調(diào)參數(shù)就是這樣的。

這之間我發(fā)現(xiàn)再這個數(shù)據(jù)集上面進(jìn)行遷移學(xué)習(xí)和重頭開始學(xué)習(xí),區(qū)別并不大,故之后的訓(xùn)練都是重頭開始訓(xùn)練的.


模型優(yōu)化:

在調(diào)參數(shù)之前,首先要知道需要調(diào)的參數(shù)是什么.可以參考下面鏈接,學(xué)習(xí)率、權(quán)重初始化方法,加減網(wǎng)絡(luò)層數(shù),增加正則化都是常見的可以調(diào)節(jié)的參數(shù)。

http://blog.csdn.net/qq_20259...  

1、 首先是學(xué)習(xí)率

這是可能在調(diào)參數(shù)過程中第一個應(yīng)該調(diào)的參數(shù),調(diào)整學(xué)習(xí)率可以調(diào)大或者調(diào)小。

上面網(wǎng)絡(luò)的初始的學(xué)習(xí)率為0.1,這對很多數(shù)據(jù)集的分類來說已經(jīng)夠了,通常來說也不應(yīng)該有過小的初始化學(xué)習(xí)率,這通常會導(dǎo)致過擬合,但并不總是這樣,何凱明大神一次接受采訪時說過,在有些情況下即使學(xué)習(xí)率達(dá)到0.000001,也不會過小。也不應(yīng)該有過大的學(xué)習(xí)率,這會導(dǎo)致結(jié)果在極值點兩邊跳動。

分析訓(xùn)練結(jié)果,基本可以知道我們的學(xué)習(xí)率過大了。逐漸的降低學(xué)習(xí)率并逐步對照,觀察訓(xùn)練結(jié)果的變化,發(fā)現(xiàn)預(yù)測的總體精度確實在上升,在學(xué)習(xí)率達(dá)到0.005時測試集整體平均精度達(dá)到了最高,為75%左右,再調(diào)小會出現(xiàn)測試集精度下降的情況,且訓(xùn)練速度變慢。

這一步的訓(xùn)練結(jié)果在測試集上面出現(xiàn)了令人不愉快的表現(xiàn),召回率非常低,大部分預(yù)測都偏向了痣,即惡黑的測試集大部分都預(yù)測為了痣,這顯然是不對的。

2、 解決數(shù)據(jù)的問題

  首先,在出現(xiàn)上面的結(jié)果后,我查了一些資料,對樣本不均衡有了一些新的認(rèn)識??紤]當(dāng)前訓(xùn)練出現(xiàn)了樣本不均衡,導(dǎo)致訓(xùn)練出現(xiàn)一些問題.參考文章
在分類中如何處理訓(xùn)練集中不平衡問題
深度 | 解決真實世界問題:如何在不平衡類上使用機(jī)器學(xué)習(xí)?

一般推薦從增加數(shù)據(jù)來源開始,但在此例中,因為數(shù)據(jù)集來源于公開數(shù)據(jù)集,并且含有惡黑和痣的分類數(shù)據(jù)的公開數(shù)據(jù)集幾乎不存在,已不存在增加數(shù)據(jù)集的可能性。

這時我們考慮使用重采樣和降采樣

1> 首先降采樣,即把痣的訓(xùn)練集減少到和惡黑一樣,調(diào)整了痣數(shù)據(jù)的訓(xùn)練集和測試集的比例。繼續(xù)訓(xùn)練,得到的結(jié)果在測試集上中,對惡黑的測試精度得到了大幅提升,但對于負(fù)樣本痣的精度確下降到合格線以下

2> 然后再采用重采樣的方式,將惡黑的圖片進(jìn)行復(fù)制,將其擴(kuò)展到和痣的數(shù)量相等。繼續(xù)訓(xùn)練,得到的結(jié)果正好和降采樣相反,在測試集上,惡黑精度不高,但總體的精度確實比之前高了,這樣的結(jié)果同樣也是我們不能接受的

上面出現(xiàn)的兩個極端情況,再一定程度上來說就是發(fā)生了欠擬合和過擬合。減少痣的訓(xùn)練集,導(dǎo)致對痣的訓(xùn)練出現(xiàn)了欠擬合,對惡黑重采樣,導(dǎo)致對惡黑的訓(xùn)練出現(xiàn)了過擬合。

那么是否可以通過一定方式生成一些數(shù)據(jù)呢,考慮原圖是256X的尺寸,考慮采用剪裁的方式而不是通過resize的方式去獲取圖片。對圖片進(jìn)行預(yù)處理,對每一幅圖片從左上角開始,水平方向每隔1個像素進(jìn)行一次224高度(數(shù)據(jù)集中高度不固定,但都小于224)的裁剪,并且對高度垂直方向進(jìn)行了zero padding,然后對生成的圖片進(jìn)行了水平和垂直方向的隨機(jī)翻轉(zhuǎn),生成了新的訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集(同樣保持訓(xùn)練集中正樣本和負(fù)樣本數(shù)量基本相同)。繼續(xù)訓(xùn)練,情況并沒有多少改善,提升也有限,并且依然是痣的精度明顯高于惡黑的精度.

這個時候我不對數(shù)據(jù)集產(chǎn)生了懷疑,是不是因為痣的數(shù)據(jù)集存在一些過大的噪聲干擾呢,于是我將痣的數(shù)據(jù)集換成脂溢性角化病,即老年斑的數(shù)據(jù)集進(jìn)行訓(xùn)練。

isic數(shù)據(jù)集中也含有1000多例的脂溢性角化病的數(shù)據(jù),比惡黑的數(shù)據(jù)略少,采用上一次的網(wǎng)絡(luò)進(jìn)行訓(xùn)練,發(fā)現(xiàn)再兩個分類上的精度都可以達(dá)到98%以上,于是我再返回對痣的數(shù)據(jù)集進(jìn)行了審視,發(fā)現(xiàn)其中有一半以上的數(shù)據(jù)中包含不知是用來干什么用的有色圓圈

我將訓(xùn)練集中把這部分去除掉,用剩下的數(shù)據(jù)進(jìn)行訓(xùn)練,把帶有有色圓圈的數(shù)據(jù)先行擱置,對剩余的數(shù)據(jù)進(jìn)行訓(xùn)練(惡黑和痣),發(fā)現(xiàn)結(jié)果有了明顯的改善, 在惡黑數(shù)據(jù)集上的召回率可以達(dá)到85%左右,準(zhǔn)確率達(dá)到89%左右。

但實際上我們并沒有達(dá)到原論文中的對rgb空間中預(yù)測準(zhǔn)確率93%的結(jié)果,但這個時候訓(xùn)練集的精度已經(jīng)達(dá)到了99%,已經(jīng)到了無法再繼續(xù)訓(xùn)練的狀況,繼續(xù)訓(xùn)練就必須考慮提升模型的泛化能力,調(diào)整drop率從0.8到0.7、0.6、0.5,沒有明顯提高,就考慮繼續(xù)從訓(xùn)練集下手。

測試集精度低于訓(xùn)練集精度,這種現(xiàn)象就是過擬合的現(xiàn)象,增強(qiáng)泛化能力就必須減輕過擬合的影響??紤]到上一步中對原圖像每隔1像素進(jìn)行裁剪獲取訓(xùn)練集和測試機(jī)的方法是不是和之前的重采樣一樣,出現(xiàn)了很大程度的過擬合呢?雖然從一張圖片中新生成的訓(xùn)練集都不相同,但他們都是從一張原圖中裁剪出來的,對生成的訓(xùn)練圖像進(jìn)行訓(xùn)練是不是相當(dāng)于對原圖進(jìn)行了多次訓(xùn)練呢?

為了驗證這個情況,我調(diào)整了生成圖片的間隔,即把每隔1像素裁剪,變成每隔5個像素再去裁剪一次,通過在這種方式生成的訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)中的實踐,在惡黑的表現(xiàn)召回率可以達(dá)到88%左右,準(zhǔn)確率達(dá)到94.5%左右。同時,考慮到我們的測試集是滑動生成的,預(yù)測時是根據(jù)原測試集生成的數(shù)據(jù)預(yù)測,但實際要進(jìn)行的預(yù)測則是,對原圖進(jìn)行滑動裁剪,計算所有裁剪圖片的分類概率分布,統(tǒng)計平均值得出預(yù)測結(jié)果的方法,那么可以想想最終的預(yù)測效果必然會更好(沒有驗證過,但至少結(jié)果不會比當(dāng)前結(jié)果差,因為準(zhǔn)確率和召回率都超過了50%)

在以上工作的基礎(chǔ)上,繼續(xù)采用一些常見的優(yōu)化模型的方法,如修改常規(guī)的梯度下降優(yōu)化器, 嘗試帶有動量的梯度下降優(yōu)化器學(xué)習(xí)率下降的優(yōu)化器嘗試采用不同的激活函數(shù),嘗試使用不同的drop率等常用的優(yōu)化訓(xùn)練過程,再訓(xùn)練和收斂速度上,最終訓(xùn)練結(jié)果再測試集上的表現(xiàn)都有少量的提升


踩到的坑 batch norm的坑

在使用inception_v3進(jìn)行訓(xùn)練時,因為inception_v3網(wǎng)絡(luò)結(jié)構(gòu)中存在batch_norm,因為之前對batch_norm的不充分了解,導(dǎo)致踩到了一個坑里面。

batch norm在網(wǎng)絡(luò)訓(xùn)練過程中會起到關(guān)鍵性的作用,他可以加速訓(xùn)練過程,并且一定程度上提升模型的效果。原理是在訓(xùn)練過程中,計算mini-batch的平均值和標(biāo)準(zhǔn)差,對數(shù)據(jù)進(jìn)行正則化,將數(shù)據(jù)約束到一個范圍內(nèi),保持他們的平均值和標(biāo)準(zhǔn)差不變,對正則化之后的數(shù)據(jù)進(jìn)行訓(xùn)練,
在學(xué)習(xí)卷積核和偏置項參數(shù)時,同時會學(xué)習(xí)batch norm的β和γ,但在測試時就完全不同了,在測試時不需要對測試的mini-batch范圍進(jìn)行約束,只需要使用訓(xùn)練得到的固化的參數(shù)進(jìn)行預(yù)測就行,而我就犯了相同的錯誤。

我起初在訓(xùn)練和測試的時候沒有要求is_training這個參數(shù),這個參數(shù)指定了是要取當(dāng)前mini-batch的平均值和標(biāo)準(zhǔn)差,還是使用固化的參數(shù),tensorflow中提供的inception_v3網(wǎng)絡(luò)的is_training默認(rèn)為True,所以我在訓(xùn)練好模型之后做預(yù)測時,不同的加載數(shù)據(jù)方式,總會得到不同的結(jié)果,如,順序加載所有類的數(shù)據(jù),打亂加載所有類數(shù)據(jù),每個mini-batch中各類數(shù)量相同等,重新調(diào)整了batch_norm后解決(slim.batch_norm有坑,雖然不知道什么原因,但is_training如何設(shè)置都會有問題),編寫了一個batch_norm方法解決了這個問題

def batch_norm(x, is_training, decay=0.9, eps=1e-5):
    shape = x.get_shape().as_list()
    assert len(shape) in [2, 4]

    n_out = shape[-1]
    beta = tf.Variable(tf.zeros([n_out]))
    gamma = tf.Variable(tf.ones([n_out]))

    if len(shape) == 2:
        batch_mean, batch_var = tf.nn.moments(x, [0])
    else:
        batch_mean, batch_var = tf.nn.moments(x, [0, 1, 2])

    ema = tf.train.ExponentialMovingAverage(decay=decay)

    def mean_var_with_update():
        ema_apply_op = ema.apply([batch_mean, batch_var])
        with tf.control_dependencies([ema_apply_op]):
            return tf.identity(batch_mean), tf.identity(batch_var)

    mean, var = tf.cond(is_training, mean_var_with_update,
                        lambda: (ema.average(batch_mean), ema.average(batch_var)))

    return tf.nn.batch_normalization(x, mean, var, beta, gamma, eps)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/19665.html

相關(guān)文章

  • 「不良視頻」如何消滅?她手把手教你走出第一步

    摘要:嚴(yán)肅的開場白故事要從深度學(xué)習(xí)說起。本文從視頻分類的角度,對深度學(xué)習(xí)在該方向上的算法進(jìn)行總結(jié)。數(shù)據(jù)集熟悉深度學(xué)習(xí)的朋友們應(yīng)該清楚,深度學(xué)習(xí)是一門數(shù)據(jù)驅(qū)動的技術(shù),因此數(shù)據(jù)集對于算法的研究起著非常重要的作用。是一個比較成功的傳統(tǒng)方法與深度學(xué)習(xí)算 showImg(https://segmentfault.com/img/bV7hQP?w=900&h=330); 不嚴(yán)肅的開場白 視頻社交已經(jīng)成為...

    Invoker 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<