1 題目簡介
筆者個(gè)人的畢業(yè)設(shè)計(jì)課題如下:
簡介:使用預(yù)訓(xùn)練的Diffusion Model圖像生成模型生成圖像,將這些生成的圖像作為擴(kuò)充訓(xùn)練集加入到2D目標(biāo)檢測器、2D圖像分類器的訓(xùn)練過程。深度學(xué)習(xí)是數(shù)據(jù)驅(qū)動(dòng)的,隨著數(shù)據(jù)量的擴(kuò)充,能夠提高檢測器、分類器的魯棒性、準(zhǔn)確性。
建議的baseline:
分類:ResNet
檢測:YOLO
可以看到,給的題目難度還是比較輕松的;本次畢設(shè)的全過程會(huì)以周為單位采用博客的形式記錄下來。
2 前言
上周的任務(wù)完成后,因?yàn)楣P者個(gè)人在準(zhǔn)備春招企業(yè)的二面,一直在忙于準(zhǔn)備demo和其他相關(guān)的內(nèi)容;所以內(nèi)容只得暫緩
這周等事情暫時(shí)告一段落后,重新開始進(jìn)行畢業(yè)設(shè)計(jì)的內(nèi)容處理
本篇博客會(huì)記載原始ResNet34的實(shí)驗(yàn),并將訓(xùn)練集經(jīng)過數(shù)據(jù)增強(qiáng)后對比精度效果,來驗(yàn)證本次畢業(yè)實(shí)際的題目。
3 數(shù)據(jù)集
如圖所示,用的是一個(gè)花卉分類的數(shù)據(jù)集,對于圖像分類任務(wù)它將目標(biāo)分成了5類
該數(shù)據(jù)集共有數(shù)據(jù)3670份,分成雛菊 蒲公英 玫瑰 向日葵 郁金香五類
需要說明的是,筆者沒有找到這份數(shù)據(jù)集的名字… 只是在數(shù)據(jù)集許可證說明文檔中找到了給出免費(fèi)分享使用的許可證明網(wǎng)站
但這個(gè)數(shù)據(jù)集是筆者在大一剛接觸圖像分類的時(shí)候搜到的第一個(gè)數(shù)據(jù)集 電腦里一直忘了清理, 所以這次畢業(yè)設(shè)計(jì)就決定直接使用該數(shù)據(jù)集
使用該數(shù)據(jù)集的原因有二
其一 數(shù)據(jù)集本身量級大小合適,比起ImageNet這種千萬量級的數(shù)據(jù)集;只有當(dāng)數(shù)據(jù)集本身樣本較少的情況下才能較好體現(xiàn)出數(shù)據(jù)增強(qiáng)的作用性,當(dāng)然也不能太少,否則容易出現(xiàn)過擬合的現(xiàn)象。
其二 數(shù)據(jù)集的圖片像素大小最好不要太低,在筆者的實(shí)驗(yàn)中;像著名的CIFAR數(shù)據(jù)集中32*32的像素大小,經(jīng)過擴(kuò)散模型后得到的數(shù)據(jù)肉眼可見的難以使用,一定要保證數(shù)據(jù)的像素大小不要太低。
3.1 數(shù)據(jù)集劃分
當(dāng)然,第一步要進(jìn)行的是數(shù)據(jù)集劃分
筆者這里就不貼代碼了,ResNet相關(guān)的代碼在網(wǎng)上非常多,數(shù)據(jù)集劃分這一方面的也不會(huì)少;有需要的可以直接去查找
訓(xùn)練集:驗(yàn)證集是9:1的比例劃分的
3.2 ResNet34測試
訓(xùn)練中
可以看到最后精度是停在90.1
4 擴(kuò)散模型數(shù)據(jù)增強(qiáng)
接下來將對剛才已經(jīng)劃分過的數(shù)據(jù)集使用數(shù)據(jù)增強(qiáng)來做消融實(shí)驗(yàn)
注意 一定要對剛才劃分過的數(shù)據(jù)集增強(qiáng),而非重新劃分
4.1 數(shù)據(jù)預(yù)處理
由于StableDiffusion對輸入數(shù)據(jù)的尺寸存在要求,所以要事先進(jìn)行resize操作,順便重命名一下文件名(非必要)
關(guān)于為什么存在尺寸要求,上一篇博客里有提到
這里附上resize和重命名操作的函數(shù) 非常簡單,也可以自行編寫
from PIL import Image
import os
# 指定文件夾路徑和新的圖片尺寸,這里用的是絕對路徑,可以自行修改
folder_path = "C:\\code\\stable-diffusion-main\\img\\"
new_size = (512, 512)
count=0;
# 遍歷文件夾中的所有圖片文件
for filename in os.listdir(folder_path):
if filename.endswith(".jpg") or filename.endswith(".png"):
# 打開圖片并調(diào)整大小
image_path = os.path.join(folder_path, filename)
image = Image.open(image_path)
image = image.resize(new_size)
new_filename = "{:05d}".format(count) + os.path.splitext(filename)[1]
# 生成新的文件名并保存圖片
count+=1
new_image_path = os.path.join(folder_path, new_filename)
image.save(new_image_path)
順便可以看到雛菊的訓(xùn)練集個(gè)數(shù)是570個(gè)
對其他幾個(gè)數(shù)據(jù)集執(zhí)行上述相同操作
4.2 數(shù)據(jù)集增強(qiáng)
這里先做說明 分別使用0.4和0.8的圖像噪聲量對每張圖片進(jìn)行4張圖片的數(shù)據(jù)增強(qiáng)
由于筆者沒有找到StableDiffusion的圖像轉(zhuǎn)圖像的多圖片轉(zhuǎn)換方法,直接在參數(shù)接口里輸入/*.jpg也沒有辦法識別 這里就用一個(gè)比較笨的方法
for /l %x in (1, 1, 570) do python scripts/img2img.py --init-img img/daisy/%x.jpg --strength 0.4 --n_iter 5
直接控制臺輸入上面的命令
for /l %x in (1, 1, 570) do 是控制臺的循環(huán)輸入指令
相當(dāng)于讓控制臺自己依次對每個(gè)圖片執(zhí)行相同的數(shù)據(jù)增強(qiáng)命令
圖里雖然看不出來,不過確實(shí)是自己在運(yùn)行
有些時(shí)候也會(huì)用這種笨方法啦
這里需要的時(shí)間會(huì)比較多,可以慢慢等待
可以看到,確實(shí)是570*4=2280個(gè)結(jié)果
對其他幾個(gè)分類做相同操作
4.3 數(shù)據(jù)增強(qiáng)后的消融實(shí)驗(yàn)
4.3.1 0.4噪聲強(qiáng)度下4張圖片
和預(yù)想中的一樣,效果相當(dāng)不錯(cuò)
因?yàn)橛玫氖荢tableDiffusion 的模型而非專門針對數(shù)據(jù)集單獨(dú)去搭建和訓(xùn)練的模型,所以噪聲強(qiáng)度這一點(diǎn)上不應(yīng)該給到太高
事實(shí)上,僅僅是0.4的噪聲強(qiáng)度生成的圖像中,人為的去審視一下,就會(huì)發(fā)現(xiàn)已經(jīng)出現(xiàn)小規(guī)模的圖像經(jīng)過擴(kuò)散模型后生成的新圖像已經(jīng)不太準(zhǔn)確了 比如【將本來應(yīng)該是根莖的部分渲染成人】
不過就算是在這樣的前提下,最終92.3的精確度也有所上升
4.3.2 0.8噪聲強(qiáng)度下4張圖片
91.5的精度比起0.4噪聲強(qiáng)度時(shí)有所下降
這也是可以預(yù)見的結(jié)果,0.8的噪聲強(qiáng)度在StableDiffusion 的模型生成中已經(jīng)是一個(gè)比較大的值了,會(huì)生成很多超出原本預(yù)期的圖片;在這個(gè)噪聲強(qiáng)度下上面提到的現(xiàn)象更加嚴(yán)重
但另外一方面來講,從理性來說;這種情況下的模型應(yīng)該具有更強(qiáng)魯棒性,只是在測試集上的表現(xiàn)效果欠佳
【在數(shù)據(jù)集上表現(xiàn)過于優(yōu)異的模型往往缺少擬合能力導(dǎo)致魯棒性較差,在實(shí)際應(yīng)用中反而效果不甚出眾】這個(gè)是很通識的現(xiàn)象了,就不再贅述
4.3.3 0.4噪聲強(qiáng)度下8張圖片
88.2的精度比原本的模型差了不少
其實(shí)是非常簡答的情況,在一張圖片生成8張圖片的情況下,原本570張的雛菊,數(shù)據(jù)量已經(jīng)來到4560張了
然而實(shí)際上,在0.4這個(gè)較小的噪聲強(qiáng)度下,每8張相差甚小的圖片在網(wǎng)絡(luò)中被視為不同樣本多次反復(fù)對權(quán)重產(chǎn)生影響
這一定會(huì)帶來嚴(yán)重的過擬合問題
在這個(gè)消融實(shí)驗(yàn)中可以了解到,每張圖片數(shù)據(jù)增強(qiáng)的數(shù)量一定要嚴(yán)格控制
4.3.4 0.8噪聲強(qiáng)度下8張圖片
這個(gè)實(shí)驗(yàn)是想著前面的做都做了,索性一起試一下
結(jié)果89.8的精度其實(shí)有些超出預(yù)期
不過想想也可以理解,畢竟雖然是8張數(shù)據(jù)增強(qiáng),但是噪聲比0.4大得多;在這樣的前提下其實(shí)過擬合的問題會(huì)相對減弱不少
不過和原先的精度相比,仍然是有所下降的。文章來源:http://www.zghlxwxcb.cn/news/detail-820241.html
5 總結(jié)
上面所有的消融實(shí)驗(yàn)因?yàn)楣P者個(gè)人時(shí)間問題,都是只做了3次實(shí)驗(yàn)選取的中位數(shù)
所以精度上可能是存在一定干擾的,后續(xù)有時(shí)間了會(huì)再重新進(jìn)行
另外一方面,其實(shí)想要做的消融實(shí)驗(yàn)不止這幾種;還會(huì)對比原始數(shù)據(jù)集在不同規(guī)模下用擴(kuò)散模型做數(shù)據(jù)增強(qiáng)的效果
這兩天有時(shí)間了會(huì)再用電腦跑一下文章來源地址http://www.zghlxwxcb.cn/news/detail-820241.html
到了這里,關(guān)于基于Diffusion Model的數(shù)據(jù)增強(qiáng)方法應(yīng)用——畢業(yè)設(shè)計(jì) 其五的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!