使用數(shù)據(jù)增強(qiáng)從頭開(kāi)始訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)(CNN)
介紹
該文致力于處理神經(jīng)網(wǎng)絡(luò)中的過(guò)度擬合。
過(guò)度擬合將是你主要擔(dān)心的問(wèn)題,因?yàn)槟銉H使用 2000 個(gè)數(shù)據(jù)樣本訓(xùn)練模型。存在一些有助于克服過(guò)度擬合的方法,即 dropout 和權(quán)重衰減(L2 正則化)。
我們將討論數(shù)據(jù)增強(qiáng),這是計(jì)算機(jī)視覺(jué)獨(dú)有的,在使用深度學(xué)習(xí)模型解釋圖像時(shí),數(shù)據(jù)增強(qiáng)在任何地方都會(huì)用到。
數(shù)據(jù)增強(qiáng)
學(xué)習(xí)示例不足會(huì)阻止你訓(xùn)練可以泛化到新數(shù)據(jù)的模型,從而導(dǎo)致過(guò)度擬合。如果你有無(wú)限的數(shù)據(jù),你的模型將暴露于當(dāng)前數(shù)據(jù)分布的所有特征,從而防止過(guò)度擬合。
通過(guò)增加具有不同隨機(jī)變化的樣本來(lái)產(chǎn)生逼真的圖像,數(shù)據(jù)增強(qiáng)使用現(xiàn)有的訓(xùn)練樣本來(lái)生成更多的訓(xùn)練數(shù)據(jù)。
你的模型不應(yīng)在訓(xùn)練期間兩次查看同一圖像。這使模型更加通用并暴露了數(shù)據(jù)的其他特征。
Keras 可以通過(guò)使用ImageDataGenerator函數(shù)定義要應(yīng)用于圖像的各種隨機(jī)變換來(lái)實(shí)現(xiàn)這一點(diǎn)。
讓我們從一個(gè)插圖開(kāi)始。
####-----data augmentation configuration via ImageDataGenerator-------####
datagen = ImageDataGenerator(
rotation=40,
width_shift=0.2,
height_shift=0.2,
shear=0.2,
zoom=0.2,
horizontal_flip=True,
fill_mode='nearest')
讓我們快速回顧一下這段代碼:
· rotation:這是圖像隨機(jī)旋轉(zhuǎn)的范圍。它的容量在(0-180)度之間。
· width_shift 和 height_shift:范圍(作為總寬度或高度的一部分),在其中垂直或水平隨機(jī)翻轉(zhuǎn)圖片。
· shear:用于隨機(jī)應(yīng)用剪切變換。
· zoom:用于隨機(jī)縮放圖像。
· Horizontal_flip :用于隨機(jī)水平翻轉(zhuǎn)一半圖像
· fill_mode:是用于填充新生成的像素的方法,這些像素可能在旋轉(zhuǎn)或?qū)挾龋叨茸兓蟪霈F(xiàn)。
顯示增強(qiáng)圖像
####-----Let's display some randomly augmented training images-------####
from keras.preprocessing import image
fnames = [os.path.join(train_cats_dir, fname) for fname in os.listdir(train_cats_dir)]
img_path = fnames[3]
img = image.load_img(img_path, target_size=(150, 150))
x = image.img_to_array(img)
x = x.reshape((1,) + x.shape)
i = 0
for batch in datagen.flow(x, batch_size=1):
plt.figure(i)
imgplot = plt.imshow(image.a(chǎn)rray_to_img(batch[0]))
i += 1
if i % 4 == 0:
break
plt.show()
圖:使用數(shù)據(jù)增強(qiáng)生成貓圖片
如果你使用數(shù)據(jù)增強(qiáng)設(shè)置訓(xùn)練新網(wǎng)絡(luò),網(wǎng)絡(luò)將永遠(yuǎn)不會(huì)收到兩次相同的輸入。
然而,因?yàn)樗唤邮諄?lái)自少量原始照片的輸入,這些輸入仍然是高度相關(guān)的;你只能重新混合已經(jīng)存在的信息。
因此,這可能不足以消除過(guò)度擬合。在密集鏈接分類(lèi)器之前,你應(yīng)該在算法中包含一個(gè) Dropout 層,以進(jìn)一步對(duì)抗過(guò)度擬合。
實(shí)時(shí)數(shù)據(jù)增強(qiáng)應(yīng)用
1. 醫(yī)療保健
管理數(shù)據(jù)集不是醫(yī)學(xué)成像應(yīng)用的解決方案,因?yàn)楂@取大量經(jīng)過(guò)專業(yè)標(biāo)記的樣本需要很長(zhǎng)時(shí)間和金錢(qián)。
通過(guò)增強(qiáng)設(shè)計(jì)的網(wǎng)絡(luò)必須比類(lèi)似 X 射線圖片中的預(yù)測(cè)變化更可靠和真實(shí)。但是,我們可以通過(guò)使用數(shù)據(jù)增強(qiáng)來(lái)增加后續(xù)插圖中的數(shù)據(jù)數(shù)量。
圖:X 射線圖像中的數(shù)據(jù)增強(qiáng)
2. 自動(dòng)駕駛汽車(chē)
自動(dòng)駕駛汽車(chē)是一個(gè)不同的使用主題,其中數(shù)據(jù)增強(qiáng)是有益的。
例如,CARLA旨在在物理模擬中產(chǎn)生靈活性和真實(shí)感。CARLA 旨在促進(jìn)自動(dòng)駕駛系統(tǒng)的結(jié)果、指導(dǎo)和驗(yàn)證。它基于虛幻引擎 4,并提供了一個(gè)完整的模擬器環(huán)境,用于在安全的環(huán)境中測(cè)試自動(dòng)駕駛技術(shù)。
當(dāng)數(shù)據(jù)稀缺成為問(wèn)題時(shí),使用強(qiáng)化學(xué)習(xí)技術(shù)創(chuàng)建的模擬環(huán)境可以幫助人工智能系統(tǒng)的訓(xùn)練和測(cè)試。對(duì)模擬環(huán)境進(jìn)行建模以創(chuàng)建真實(shí)場(chǎng)景的能力為數(shù)據(jù)增強(qiáng)開(kāi)辟了一個(gè)充滿可能性的世界。
從頭開(kāi)始定義 CNN 模型
####------Defining CNN, including dropout--------####
model = models.Sequential()
model.a(chǎn)dd(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(150, 150, 3)))
model.a(chǎn)dd(layers.MaxPooling2D((2, 2)))
model.a(chǎn)dd(layers.Conv2D(64, (3, 3), activation='relu'))
model.a(chǎn)dd(layers.MaxPooling2D((2, 2)))
model.a(chǎn)dd(layers.Conv2D(128, (3, 3), activation='relu'))
model.a(chǎn)dd(layers.MaxPooling2D((2, 2)))
model.a(chǎn)dd(layers.Conv2D(128, (3, 3), activation='relu'))
model.a(chǎn)dd(layers.MaxPooling2D((2, 2)))
model.a(chǎn)dd(layers.Flatten())
model.a(chǎn)dd(layers.Dropout(0.5))
model.a(chǎn)dd(layers.Dense(512, activation='relu'))
model.a(chǎn)dd(layers.Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer=optimizers.RMSprop(lr=1e-4), metrics=['acc'])
讓我們使用數(shù)據(jù)增強(qiáng)和損失函數(shù)來(lái)訓(xùn)練網(wǎng)絡(luò)。
####-------Train CNN using data-augmentation--------#####
train_datagen = ImageDataGenerator(rescale=1./255, rotation=40, width_shift=0.2, height_shift=0.2, shear=0.2, zoom=0.2, horizontal_flip=True,)
test_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(train_dir, target_size=(150, 150), batch_size=32, class_mode='binary')
validation_generator = test_datagen.flow_from_directory(validation_dir, target_size=(150, 150), batch_size=32, class_mode='binary')
history = model.fit_generator(train_generator, steps_per_epoch=100, epochs=100, validation_data=validation_generator, validation_steps=50)
####-------Save the model--------#####
model.save('cats_and_dogs_small_2.h5')
由于數(shù)據(jù)增強(qiáng)和丟失,模型不再過(guò)度擬合。因?yàn)橛?xùn)練曲線和驗(yàn)證曲線彼此接近。有了這個(gè)準(zhǔn)確度,你就超過(guò)了非正則化模型 15%,達(dá)到了 82%。讓我們繪制曲線。
在訓(xùn)練期間顯示損失曲線和準(zhǔn)確度
通過(guò)使用其他正則化方法和微調(diào)網(wǎng)絡(luò)參數(shù)(例如每個(gè)卷積層的過(guò)濾器數(shù)量或網(wǎng)絡(luò)中的層數(shù)),你可以實(shí)現(xiàn)更高的準(zhǔn)確度,高達(dá) 86% 或 87%。
但是,由于你要處理的數(shù)據(jù)很少,因此僅通過(guò)從頭開(kāi)始訓(xùn)練自己的 CNN 來(lái)達(dá)到更高的水平將是一項(xiàng)挑戰(zhàn)。
你必須采用預(yù)訓(xùn)練模型作為進(jìn)一步的步驟,以提高你在此挑戰(zhàn)中的準(zhǔn)確性。
結(jié)論
1. 訓(xùn)練數(shù)據(jù)的質(zhì)量、數(shù)量和上下文本質(zhì)會(huì)顯著影響深度學(xué)習(xí)模型的準(zhǔn)確性。但開(kāi)發(fā)深度學(xué)習(xí)模型的最大問(wèn)題之一是缺乏數(shù)據(jù)。
2. 在生產(chǎn)使用方法中獲取此類(lèi)數(shù)據(jù)可能既昂貴又耗時(shí)。公司使用數(shù)據(jù)增強(qiáng)這一低成本且高效的技術(shù)來(lái)更快地開(kāi)發(fā)高精度 AI 模型,并減少對(duì)收集和準(zhǔn)備訓(xùn)練實(shí)例的依賴。
3. 本文解釋了我們?nèi)绾问褂脭?shù)據(jù)增強(qiáng)技術(shù)來(lái)訓(xùn)練我們的模型。當(dāng)收集大量數(shù)據(jù)具有挑戰(zhàn)性時(shí),會(huì)使用數(shù)據(jù)增強(qiáng)。正如博客中所討論的,醫(yī)療保健和無(wú)人駕駛汽車(chē)是使用這種方法的兩個(gè)最著名的領(lǐng)域。
原文標(biāo)題 : 使用數(shù)據(jù)增強(qiáng)從頭開(kāi)始訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)(CNN)
發(fā)表評(píng)論
請(qǐng)輸入評(píng)論內(nèi)容...
請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字
最新活動(dòng)更多
-
即日-10.29立即報(bào)名>> 2024德州儀器嵌入式技術(shù)創(chuàng)新發(fā)展研討會(huì)
-
10月31日立即下載>> 【限時(shí)免費(fèi)下載】TE暖通空調(diào)系統(tǒng)高效可靠的組件解決方案
-
即日-11.13立即報(bào)名>>> 【在線會(huì)議】多物理場(chǎng)仿真助跑新能源汽車(chē)
-
11月14日立即報(bào)名>> 2024工程師系列—工業(yè)電子技術(shù)在線會(huì)議
-
12月19日立即報(bào)名>> 【線下會(huì)議】OFweek 2024(第九屆)物聯(lián)網(wǎng)產(chǎn)業(yè)大會(huì)
-
即日-12.26火熱報(bào)名中>> OFweek2024中國(guó)智造CIO在線峰會(huì)
推薦專題
- 1 Intel宣布40年來(lái)最重大轉(zhuǎn)型:年底前裁員15000人、拋掉2/3房產(chǎn)
- 2 因美封殺TikTok,字節(jié)股價(jià)骨折!估值僅Meta1/5
- 3 宏山激光重磅發(fā)布行業(yè)解決方案,助力智能制造產(chǎn)業(yè)新飛躍
- 4 國(guó)產(chǎn)AI芯片公司破產(chǎn)!白菜價(jià)拍賣(mài)
- 5 具身智能火了,但規(guī)模落地還需時(shí)間
- 6 國(guó)產(chǎn)英偉達(dá)們,抓緊沖刺A股
- 7 三次錯(cuò)失風(fēng)口!OpenAI前員工殺回AI編程賽道,老東家捧金相助
- 8 英特爾賦能智慧醫(yī)療,共創(chuàng)數(shù)字化未來(lái)
- 9 英偉達(dá)的麻煩在后頭?
- 10 將“網(wǎng)紅”變成“商品”,AI“爆改”實(shí)力拉滿
- 高級(jí)軟件工程師 廣東省/深圳市
- 自動(dòng)化高級(jí)工程師 廣東省/深圳市
- 光器件研發(fā)工程師 福建省/福州市
- 銷(xiāo)售總監(jiān)(光器件) 北京市/海淀區(qū)
- 激光器高級(jí)銷(xiāo)售經(jīng)理 上海市/虹口區(qū)
- 光器件物理工程師 北京市/海淀區(qū)
- 激光研發(fā)工程師 北京市/昌平區(qū)
- 技術(shù)專家 廣東省/江門(mén)市
- 封裝工程師 北京市/海淀區(qū)
- 結(jié)構(gòu)工程師 廣東省/深圳市