




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
項(xiàng)目6人臉識(shí)別:基于insightface的人臉檢索教學(xué)目標(biāo)能力目標(biāo)(1)
掌握insightface框架的安裝與使用。(2)了解人臉識(shí)別的4個(gè)步驟及其原理。(3)重點(diǎn)掌握人臉檢測(cè)與特征抽取的應(yīng)用。(4)掌握余弦相似度的原理及應(yīng)用。知識(shí)目標(biāo)(1)掌握解決人臉檢索任務(wù)的基本步驟和實(shí)際操作技能。(2)掌握如何設(shè)置適合實(shí)際場(chǎng)景的相似度閾值。目錄2Insightface框架安裝與使用1認(rèn)識(shí)人臉識(shí)別3基于insightface的人臉檢索目錄2Insightface框架安裝與使用1認(rèn)識(shí)人臉識(shí)別3基于insightface的人臉檢索1.認(rèn)識(shí)人臉識(shí)別
任務(wù)目標(biāo)(1)了解人臉識(shí)別的4個(gè)步驟及其原理。(2)掌握人臉數(shù)據(jù)的規(guī)范要求。1.1人臉識(shí)別簡(jiǎn)介隨著計(jì)算機(jī)視覺技術(shù)飛速發(fā)展,人臉識(shí)別已變成現(xiàn)實(shí)生活中的日常應(yīng)用。人臉識(shí)別技術(shù)在經(jīng)歷從基于幾何特征的方法,到基于代數(shù)特征和連接機(jī)制的方法,再到基于深度學(xué)習(xí)的方法,不斷提高識(shí)別準(zhǔn)確性和魯棒性。日常應(yīng)用人臉識(shí)別最常見的場(chǎng)景是人臉識(shí)別手機(jī)解鎖,這也得益于深度學(xué)習(xí)的發(fā)展與人臉識(shí)別算法的進(jìn)步。基于計(jì)算機(jī)視覺技術(shù)的人臉識(shí)別實(shí)際是一系列算法組合的應(yīng)用,主要分為4個(gè)步驟,分別是人臉檢測(cè)、人臉對(duì)齊、人臉編碼和人臉匹配。人臉檢測(cè)不同角度人臉圖像對(duì)齊成統(tǒng)一標(biāo)準(zhǔn)形態(tài)。由于人臉的姿態(tài)、表情以及拍攝角度等因素會(huì)影響人臉識(shí)別的準(zhǔn)確性人臉對(duì)齊首先定位人臉上眼睛、鼻子、嘴巴等關(guān)鍵位置的特征點(diǎn),然后通過仿射、旋轉(zhuǎn)、縮放等幾何變換的方式,使各個(gè)特征點(diǎn)對(duì)齊到統(tǒng)一預(yù)設(shè)的固定位置上,從而實(shí)現(xiàn)空間歸一化。人臉對(duì)齊人臉編碼人臉匹配FaceFeatureextractor人臉檢測(cè)是從圖像定位和標(biāo)識(shí)出人臉的位置。人臉檢測(cè)本質(zhì)是目標(biāo)檢測(cè),可以應(yīng)用任何目標(biāo)檢測(cè)類的算法,也經(jīng)歷了基于傳統(tǒng)圖像處理的識(shí)別算法,再到基于機(jī)器學(xué)習(xí)的識(shí)別算法,如于深度學(xué)習(xí)的識(shí)別算法,如MTCNN、SCRFD算法等,在精度上有了極大的進(jìn)步。在人臉檢測(cè)這一步,只檢測(cè)輸入圖像的人臉,標(biāo)記出人臉的坐標(biāo)位置,將人臉切割出來,作為下一步的輸入。人臉編碼,即人臉特征提取,是人臉識(shí)別中關(guān)鍵步驟,用于從人臉圖像中提取具有判別性的特征表示。人臉特征提取技術(shù)按照技術(shù)特點(diǎn)和發(fā)展時(shí)間,大致分為3類:(1)基于全局信息Holistic特征方法(2)基于局部信息的Local特征方法(3)基于深度學(xué)習(xí)的方法人臉匹配是指比較不同人臉特征向量并確定它們之間的相似度。人臉匹配一般分為人臉比對(duì)和人臉檢索兩種情況。人臉比對(duì)技術(shù)是對(duì)兩個(gè)人臉特征向量進(jìn)行1:1比對(duì),并提供相似度評(píng)分;人臉檢索技術(shù)是在一個(gè)已有人臉庫(kù)中找出與目標(biāo)人臉最相似的一張或多張人臉,并提供相似度評(píng)分。1.2人臉采集說明importosregister_images_dir='./register_images'register_images=os.listdir(register_images_dir)#獲取文件列表register_images=sorted(register_images)#按文件名排序print(register_images)人臉識(shí)別還有一個(gè)前置任務(wù)就是人臉采集。人臉采集需要注意以下幾點(diǎn):圖像大?。喝四槇D像過小會(huì)影響識(shí)別效果,人臉圖像過大則會(huì)影響識(shí)別速度。一般情況下,人臉圖像的最大邊長(zhǎng)不超過2000像素。另外,國(guó)家標(biāo)準(zhǔn)《公共安全人臉識(shí)別應(yīng)用圖像技術(shù)要求》(GB/T35678-2017)規(guī)定了公共安全領(lǐng)域人臉識(shí)別圖像的技術(shù)要求,其中要求注冊(cè)圖像時(shí),兩眼間距應(yīng)大于等于60像素,宜大于等于90像素;識(shí)別圖像時(shí),兩眼間距應(yīng)大于等于30像素,宜大于等于60像素光照環(huán)境:過曝或過暗的光照環(huán)境都會(huì)影響人臉識(shí)別效果,光照環(huán)境以自然光為佳。遮擋程度:在實(shí)際場(chǎng)景中,遮擋物應(yīng)不遮擋眉毛、眼睛、嘴巴、鼻子及臉部輪廓。如有戴眼鏡,眼鏡框應(yīng)不遮擋眼睛,鏡片應(yīng)無(wú)色無(wú)反光。采集角度:人臉相對(duì)于攝像頭角度為正臉最佳。當(dāng)需要安裝攝像頭時(shí),攝像頭與水平線之間的俯仰角宜在0-10°之間,不大于18°;安裝高度宜在2.2米-3.5米之間,不高于6米;出入口人臉門禁控制設(shè)備安裝高度在1.5-1.7米之間。合法合規(guī):采集過程中務(wù)必遵循充分告知不強(qiáng)制、最小數(shù)量、非必要不存儲(chǔ)等數(shù)據(jù)安全原則,避免出現(xiàn)人臉數(shù)據(jù)濫采、泄露或丟失、過度存儲(chǔ)和使用等問題;更不可出現(xiàn)人臉數(shù)據(jù)非法買賣等行為。建議讀者詳細(xì)研讀《信息安全技術(shù)人臉識(shí)別數(shù)據(jù)安全要求》(國(guó)家標(biāo)準(zhǔn)GB/T41819-2022)。
代碼3-1將獲取待注冊(cè)人臉圖像文件名并打印。輸出結(jié)果:
['1.jpg','2.jpg','3.jpg','4.jpg',]本項(xiàng)目待注冊(cè)人臉圖像文件總共有4張,同時(shí)將以文件名編號(hào)作為人臉I(yè)D。
目錄2Insightface框架安裝與使用1認(rèn)識(shí)人臉識(shí)別3基于insightface的人臉檢索2.深度學(xué)習(xí)環(huán)境部署
任務(wù)目標(biāo)(1)了解insightface框架的基本原理。(2)掌握insightface框架的安裝與使用。2.1insightface框架簡(jiǎn)介InsightFace是一個(gè)由曠視科技研發(fā)和開源2D&3D深度人臉分析庫(kù)。InsightFace有效地實(shí)現(xiàn)各種先進(jìn)的人臉識(shí)別、人臉檢測(cè)和人臉對(duì)齊算法,并針對(duì)訓(xùn)練和部署進(jìn)行了優(yōu)化。InsightFace相關(guān)算法曾參加過多個(gè)挑戰(zhàn)賽并獲得冠軍。InsightFace同時(shí)是一個(gè)用于2D和3D人臉分析的集成Python庫(kù),可以使用pip安裝InsightFace。InsightFace庫(kù)打包了一系列模型提供使用,模型說明如表2-1所示。表2-1InsightFace模型包說明從表2-1可以看到,InsightFace模型包主要提供了四種不同規(guī)模大小,分別是l、m、s和sc級(jí)別,其中“buffalo_l”是InsightFace庫(kù)的默認(rèn)模型包。模型包分別集成了人臉檢測(cè)、人臉識(shí)別(即人臉特征提取)、人臉對(duì)齊和人臉屬性(性別與年齡)的預(yù)訓(xùn)練模型,以“buffalo_l”為例,說明如下:人臉檢測(cè)使用的是SCRFD(SampleandComputationRedistributionforEffificientFaceDetection)算法預(yù)訓(xùn)練模型,10GF代表參數(shù)量和計(jì)算量的規(guī)模。人臉識(shí)別(人臉特征提取)使用的是以ResNet50為骨干網(wǎng)絡(luò)在WebFace600K人臉數(shù)據(jù)集上訓(xùn)練的預(yù)訓(xùn)練模型。人臉對(duì)齊使用的是以MobileNet-0.5為骨干網(wǎng)絡(luò)的可以識(shí)別108個(gè)2D關(guān)鍵點(diǎn)的2d106預(yù)訓(xùn)練模型和以ResNet-50為骨干網(wǎng)絡(luò)的可以識(shí)別68個(gè)3D關(guān)鍵點(diǎn)的3d68預(yù)訓(xùn)練模型。人臉屬性(性別與年齡)使用的是以MobileNet-0.25為骨干網(wǎng)絡(luò)在CelebA人臉數(shù)據(jù)集上訓(xùn)練的預(yù)訓(xùn)練模型。(1)insightface庫(kù)的安裝
yuminstallglibcgccgcc-c++pipinstallonnxruntime-i/simplepipinstallinsightface-i/simple2.2insightface安裝與使用然后執(zhí)行以下命令安裝insightface庫(kù):先安裝onnxruntime包是因?yàn)閕nsightface庫(kù)引用的預(yù)訓(xùn)練模型是onnx格式,需要使用onnxruntime包來調(diào)用模型。如果是GPU環(huán)境,則安裝onnxruntime-gpu包。(2)推理insightface對(duì)其中一張待注冊(cè)圖像進(jìn)行人臉識(shí)別并獲取識(shí)別結(jié)果為例,詳細(xì)講解了insightface的基本使用方法。(3)可視化insightface庫(kù)的安裝相對(duì)比較簡(jiǎn)單,在Centos7環(huán)境下,先執(zhí)行以下命令安裝配置gcc環(huán)境:
目錄2Insightface框架安裝與使用1認(rèn)識(shí)人臉識(shí)別3基于insightface的人臉檢索3.模型訓(xùn)練與評(píng)估
任務(wù)目標(biāo)掌握人臉檢索的應(yīng)用流程。掌握人臉特征的抽取與存放。掌握人臉特征的匹配。3.1人臉注冊(cè)在本項(xiàng)目中,人臉特征庫(kù)存放到數(shù)組里,并且將數(shù)組的索引號(hào)作為人臉I(yè)D。在實(shí)際生產(chǎn)環(huán)境中,人臉特征一般存放到向量數(shù)據(jù)庫(kù),如此才能支撐億級(jí)的人臉檢索。因?yàn)橄蛄繑?shù)據(jù)庫(kù)知識(shí)不在本書范疇,請(qǐng)讀者自行探索。3.2人臉匹配下面使用訓(xùn)練完的模型新數(shù)據(jù)進(jìn)行推理識(shí)別的代碼塊,其中“save”參數(shù)代表保存識(shí)別的結(jié)果圖片,“imgsz”參數(shù)代表對(duì)圖片縮放到指定大小再推理,“conf”參數(shù)代表只有超過指定的置信度才輸出識(shí)別結(jié)果。(2)下面為向量的余弦相似度計(jì)算。首先將
vectors
和
target_vector
進(jìn)行單位化處理,使用
np.linalg.norm
進(jìn)行計(jì)算。接著,通過
np.dot
計(jì)算余弦相似度得到
similarities。找出大于閾值的相似度的索引和值,再對(duì)這些值進(jìn)行倒序排序,并獲取相應(yīng)的排序后的值和原始索引,最終將排序后的原始索引和值打包成元組序列返回。(1)代碼為加載人臉特征庫(kù),讀取測(cè)試圖像并檢測(cè)人臉,計(jì)算相似度并輸出結(jié)果知識(shí)要點(diǎn)為幫助讀者回顧項(xiàng)目的重點(diǎn)內(nèi)容,總結(jié)項(xiàng)目中涉及到的主要知識(shí)點(diǎn): 人臉識(shí)別的4大步驟,人臉檢測(cè)、人臉對(duì)齊、人臉編碼和人臉匹配。
insightface人臉識(shí)別框架的安裝和使用。 人臉檢索的全流程任務(wù),包括人臉采集、人臉注冊(cè)和人臉匹配。經(jīng)驗(yàn)總結(jié)人臉識(shí)別如要達(dá)到理想的效果,有以下幾個(gè)建議:1) 保證數(shù)據(jù)采集的規(guī)范保證人臉數(shù)據(jù)符合圖像大小、光照環(huán)境、遮擋程度、采集角度等要求,并且保證目標(biāo)圖片只有一個(gè)人臉。2) 采用向量數(shù)據(jù)庫(kù)存儲(chǔ)人臉特征向量數(shù)據(jù)庫(kù)作為人臉識(shí)別的完美搭配,可以提供高效的向量存儲(chǔ)和檢索功能,支持大規(guī)模向量數(shù)據(jù)處理和相似度檢索,極大提升人臉識(shí)別的效率。3) 設(shè)備恰當(dāng)?shù)南嗨贫乳撝迪嗨贫乳撝抵苯佑绊懭四樧R(shí)別的誤識(shí)率和通過率。通常閾值的設(shè)置要綜合考慮客戶體驗(yàn)和防風(fēng)險(xiǎn)能力兩個(gè)因素,并通過大量測(cè)試數(shù)據(jù)的驗(yàn)證,保證誤識(shí)率和通過率達(dá)到一個(gè)合適的平衡。項(xiàng)目7風(fēng)格遷移:基于NST與AnimeGAN的圖像古風(fēng)化教學(xué)目標(biāo)能力目標(biāo)(1)了解NeuralStyleTransfer圖像風(fēng)格遷移原理。(2)掌握NeuralStyleTransfer(NST)安裝與使用。(3)了解AnimeGAN圖像風(fēng)格遷移原理。(4)掌握AnimeGAN安裝與使用。知識(shí)目標(biāo)(1)掌握基于NeuralStyleTransfer(NST)進(jìn)行圖像風(fēng)格遷移的實(shí)際操作技能。(2)掌握基于AnimeGAN進(jìn)行圖像風(fēng)格遷移的實(shí)際操作技能。目錄2基于NeuralStyleTransfer的圖像風(fēng)格遷移1認(rèn)識(shí)圖像風(fēng)格遷移3基于AnimeGAN的圖像風(fēng)格遷移目錄2基于NeuralStyleTransfer的圖像風(fēng)格遷移1認(rèn)識(shí)圖像風(fēng)格遷移3基于AnimeGAN的圖像風(fēng)格遷移1.認(rèn)識(shí)數(shù)據(jù)集
任務(wù)目標(biāo)(1)了解圖像風(fēng)格遷移定義及方法。(2)了解圖像風(fēng)格遷移應(yīng)用領(lǐng)域。1.1圖像風(fēng)格遷移方法圖像風(fēng)格遷移是一種利用深度學(xué)習(xí)技術(shù)實(shí)現(xiàn)的圖像轉(zhuǎn)換過程,其目標(biāo)是將一幅圖像(通常為藝術(shù)作品)的風(fēng)格應(yīng)用到另一幅目標(biāo)圖像上,同時(shí)保留目標(biāo)圖像內(nèi)容的真實(shí)性。這一技術(shù)的背景起源于2015年的一篇開創(chuàng)性論文,由LeonA.Gatys等人提出。通過圖像風(fēng)格遷移為藝術(shù)家和設(shè)計(jì)師提供了一種新型的創(chuàng)作工具,展示了AI技術(shù)在非傳統(tǒng)領(lǐng)域的潛力。圖像風(fēng)格遷移主要方法包括基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)的方法、優(yōu)化方法和生成對(duì)抗網(wǎng)絡(luò)(GAN)方法。以下是幾種主要方法的詳細(xì)介紹:基于卷積神經(jīng)網(wǎng)絡(luò)的方法:利用深度學(xué)習(xí)中的卷積神經(jīng)網(wǎng)絡(luò),通過提取圖像內(nèi)容特征和風(fēng)格特征,實(shí)現(xiàn)風(fēng)格遷移。經(jīng)典的NeuralStyleTransfer是這種方法代表。它使用預(yù)訓(xùn)練CNN來提取圖像的特征,并通過優(yōu)化使得生成圖像的內(nèi)容與輸入內(nèi)容圖像相似,而風(fēng)格則與風(fēng)格圖像相似??。優(yōu)化方法:通過定義一個(gè)損失函數(shù),函數(shù)包括內(nèi)容損失和風(fēng)格損失,對(duì)生成圖像進(jìn)行優(yōu)化。內(nèi)容損失衡量生成圖像與內(nèi)容圖像在內(nèi)容上的相似性,而風(fēng)格損失衡量生成圖像與風(fēng)格圖像在風(fēng)格上的相似性。通過迭代優(yōu)化損失函數(shù),可生成既保留內(nèi)容圖像結(jié)構(gòu)又有風(fēng)格圖像風(fēng)格的圖像??。生成對(duì)抗網(wǎng)絡(luò)(GAN)方法:利用生成器和判別器的對(duì)抗訓(xùn)練,生成高質(zhì)量的風(fēng)格遷移圖像。典型的例子有AnimeGAN。AnimeGAN專門用于將真實(shí)世界的人像圖像轉(zhuǎn)換為動(dòng)漫風(fēng)格的圖像,通過生成器和判別器的對(duì)抗訓(xùn)練實(shí)現(xiàn)高質(zhì)量的動(dòng)漫風(fēng)1.2數(shù)據(jù)集展示
圖像風(fēng)格遷移近年來得到了廣泛關(guān)注和應(yīng)用,它通過優(yōu)化圖像內(nèi)容和風(fēng)格特征,使得圖像能夠呈現(xiàn)出多樣的藝術(shù)效果。以下是圖像風(fēng)格遷移在各個(gè)領(lǐng)域的應(yīng)用及其詳細(xì)介紹。(1)藝術(shù)創(chuàng)作領(lǐng)域:圖像風(fēng)格遷移在藝術(shù)創(chuàng)作中的應(yīng)用尤為顯著。藝術(shù)家和設(shè)計(jì)師可以利用這項(xiàng)技術(shù)將普通的照片轉(zhuǎn)換成具有特定藝術(shù)風(fēng)格的圖像,如水墨畫、油畫、水彩畫、素描等。這種轉(zhuǎn)換不僅提高了藝術(shù)創(chuàng)作的效率,還為藝術(shù)家提供了更多的靈感和創(chuàng)作自由。例如,使用NeuralStyleTransfer技術(shù),用戶可以輕松地將吳道子、唐伯虎等古代畫家的畫風(fēng)應(yīng)用到現(xiàn)代攝影作品中,創(chuàng)造出獨(dú)特的視覺效果?。(2)電影和動(dòng)畫領(lǐng)域:圖像風(fēng)格遷移技術(shù)可以用于場(chǎng)景的藝術(shù)化處理,增強(qiáng)視覺效果和藝術(shù)表現(xiàn)力。例如,在電影制作中,可以將真實(shí)場(chǎng)景轉(zhuǎn)換為特定藝術(shù)風(fēng)格的畫面,營(yíng)造出特定的視覺氛圍。在動(dòng)畫制作中,圖像風(fēng)格遷移可以幫助動(dòng)畫師將手繪風(fēng)格應(yīng)用到數(shù)字動(dòng)畫中,節(jié)省大量的手工繪制時(shí)間和成本??。(3)廣告和營(yíng)銷領(lǐng)域:圖像風(fēng)格遷移技術(shù)可以用于創(chuàng)建吸引人的視覺效果,從而吸引更多的觀眾注意力。廣告設(shè)計(jì)師可以將產(chǎn)品照片轉(zhuǎn)換為不同藝術(shù)風(fēng)格的圖像,增加廣告的藝術(shù)性和吸引力。例如,通過將產(chǎn)品圖像轉(zhuǎn)換為油畫風(fēng)格或漫畫風(fēng)格,可以使廣告更加生動(dòng)有趣,吸引消費(fèi)者的注意。(4)教育和培訓(xùn)領(lǐng)域:通過將教學(xué)材料和訓(xùn)練數(shù)據(jù)轉(zhuǎn)換為不同藝術(shù)風(fēng)格,教育工作者可以提高教學(xué)內(nèi)容趣味性和吸引力。例如在美術(shù)教育中,教師可以使用圖像風(fēng)格遷移技術(shù)將學(xué)生的作品轉(zhuǎn)換為不同藝術(shù)家的風(fēng)格,幫助學(xué)生更好地理解和學(xué)習(xí)不同的藝術(shù)流派和技法。目錄2基于NeuralStyleTransfer的圖像風(fēng)格遷移1認(rèn)識(shí)圖像風(fēng)格遷移3基于AnimeGAN的圖像風(fēng)格遷移2.深度學(xué)習(xí)環(huán)境部署
任務(wù)目標(biāo)(1)了解NeuralStyleTransfer算法的基本原理和方法。(2)掌握NeuralStyleTransfer算法部署及項(xiàng)目工程結(jié)構(gòu)。(3)掌握NeuralStyleTransfer算法的實(shí)現(xiàn)過程,包括損失模塊定義及預(yù)訓(xùn)練模型嵌入。2.1NeuralStyleTransfer原理概述NeuralStyleTransfer(NST)是一種利用卷積神經(jīng)網(wǎng)絡(luò)(CNN)實(shí)現(xiàn)圖像風(fēng)格遷移的方法。NST算法的核心思想是使用預(yù)訓(xùn)練的卷積神經(jīng)網(wǎng)絡(luò)來提取圖像的內(nèi)容特征和風(fēng)格特征,通過優(yōu)化過程生成融合了內(nèi)容圖像和風(fēng)格圖像特征的圖像。在風(fēng)格遷移過程中,通常涉及兩幅圖像:內(nèi)容圖像(ContentImage)和風(fēng)格圖像(StyleImage)。內(nèi)容圖像提供圖像的主要結(jié)構(gòu)和主題,而風(fēng)格圖像則貢獻(xiàn)其獨(dú)特的視覺風(fēng)格,如紋理、色彩布局和筆觸。NST算法主要包括等6個(gè)步驟,下面分別是其詳細(xì)描述:特征提取使用深度卷積神經(jīng)網(wǎng)絡(luò)來提取圖像的內(nèi)容和風(fēng)格特征。卷積神經(jīng)網(wǎng)絡(luò)的不同層提取圖像的不同層次的特征.2)內(nèi)容表示3)風(fēng)格表示4)總變差損失為了使生成圖像更平滑,避免過多噪聲,加入總變差損失(TotalVariationLoss)最終的損失函數(shù)是內(nèi)容損失、風(fēng)格損失和總變差損失的加權(quán)和:5)總損失其中,α、β和γ和分別是內(nèi)容損失、風(fēng)格損失和總變差損失的權(quán)重系數(shù)。2.2自然風(fēng)景國(guó)畫化實(shí)戰(zhàn)-NST模型部署NST項(xiàng)目部署主要從源碼下載、工程目錄及安裝依賴包三個(gè)部分來進(jìn)行,下面分別簡(jiǎn)單介紹其過程。
源碼下載。有兩種方式獲取源碼:一是通過本課程提供下載獲取。二是通過訪問項(xiàng)目網(wǎng)頁(yè),下載項(xiàng)目源碼到本地。/tutorials/advanced/neural_style_tutorial.html
(2)工程目錄介紹下圖本次工程的主要文件和目錄結(jié)構(gòu)。其中,weights為模型存放的目錄,inputs、outputs分別為輸入圖像文件夾及輸出風(fēng)格化圖像文件夾。NeuralStyleTutorial.py為風(fēng)格遷移的腳本實(shí)現(xiàn),NeuralStyleTutorial.ipynb為記事本形式的圖像風(fēng)格遷移腳本。requirements.txt中包含項(xiàng)目所需的依賴包。(3)安裝依賴包。下載源碼后,進(jìn)入NST-landscape文件夾,打開Anacoda終端。利用conda創(chuàng)建Python=3.10的虛擬環(huán)境,并通過pip在該環(huán)境中安裝環(huán)境包。下面命令為創(chuàng)建虛擬環(huán)境、激活虛擬環(huán)境、安裝python依賴包:環(huán)境依賴包說明“requirements.txt”文件里包含了NST項(xiàng)目所依賴的python包,其中每個(gè)包的作用如下表所示:2.3自然風(fēng)景國(guó)畫化實(shí)戰(zhàn)(基于NST風(fēng)格遷移)基于NTS實(shí)現(xiàn)自然風(fēng)景國(guó)畫化的代碼文件對(duì)應(yīng)為”NeuralStyleTutorial.ipynb”,后文對(duì)代碼文件的重要組成部分分別進(jìn)行說明講解,包括以下6個(gè)模塊。數(shù)據(jù)加載圖像數(shù)據(jù)顯示內(nèi)容特征提取損失加權(quán)和優(yōu)化基于VGG的NST模型及損失函數(shù)設(shè)置圖像生成2.3.1基于NST風(fēng)格遷移–數(shù)據(jù)加載首先介紹數(shù)據(jù)加載。右側(cè)為導(dǎo)入風(fēng)格和內(nèi)容圖片的代碼。原始的PIL圖片的值介于0到255之間,但是當(dāng)轉(zhuǎn)換成torch張量時(shí),它們的值被轉(zhuǎn)換成0到1之間。圖片也需要被重設(shè)成相同的維度。一個(gè)重要的細(xì)節(jié)是,注意torch庫(kù)中的神經(jīng)網(wǎng)絡(luò)用來訓(xùn)練的張量的值為0到1之間。如果你嘗試將0到255的張量圖片加載到神經(jīng)網(wǎng)絡(luò),然后激活的特征映射將不能偵測(cè)到目標(biāo)內(nèi)容和風(fēng)格。2.3.2基于NST風(fēng)格遷移–圖像數(shù)據(jù)顯示圖形可視化的代碼如右圖所示,展示了如何在使用PyTorch進(jìn)行深度學(xué)習(xí)操作的同時(shí),使用matplotlib來顯示和檢查內(nèi)容和風(fēng)格圖像。這在圖像風(fēng)格遷移任務(wù)的調(diào)試和可視化過程中是常見的步驟。
2.3.3基于NST風(fēng)格遷移–內(nèi)容特征提取像風(fēng)格遷移(NeuralStyleTransfer,NST)的內(nèi)容特征提取是一個(gè)關(guān)鍵的過程,它涉及從預(yù)定的內(nèi)容圖像和風(fēng)格圖像中提取出重要的特征以供后續(xù)的風(fēng)格融合。內(nèi)容特征提取首先需要從內(nèi)容圖像中提取出代表其主要視覺內(nèi)容的高層特征。這通常涉及識(shí)別圖像中的物體、形狀和結(jié)構(gòu)等信息。然后使用預(yù)訓(xùn)練的深度卷積神經(jīng)網(wǎng)絡(luò)(例如VGG網(wǎng)絡(luò)),將內(nèi)容圖像作為輸入,提取中間層的激活作為內(nèi)容特征。一般來說,網(wǎng)絡(luò)中較深層的卷積層能夠捕捉圖像的更復(fù)雜、更抽象的內(nèi)容信息。在本小節(jié)代碼中,內(nèi)容特征提取通過以下步驟來實(shí)現(xiàn):首先模型中第一個(gè)模塊是正則化模塊(Normalization),這是為了將輸入圖像的數(shù)據(jù)標(biāo)準(zhǔn)化,即調(diào)整圖像的均值和標(biāo)準(zhǔn)差,使模型在不同的圖像輸入上表現(xiàn)更穩(wěn)定。然后在預(yù)訓(xùn)練的卷積神經(jīng)網(wǎng)絡(luò)(CNN)中選擇特定的卷積層作為內(nèi)容層。在這個(gè)例子中,默認(rèn)情況下選擇的是第四個(gè)卷積層(conv_4)。這個(gè)層被認(rèn)為能夠捕捉足夠的高級(jí)內(nèi)容信息,而不過于具體到細(xì)節(jié)。2.3.4基于NST風(fēng)格遷移–損失函數(shù)設(shè)置在圖像風(fēng)格遷移任務(wù)中,損失函數(shù)是優(yōu)化過程的核心,它定義了目標(biāo)圖像與內(nèi)容圖像和風(fēng)格圖像之間的目標(biāo)差異。整個(gè)過程是通過最小化這些損失來調(diào)整生成圖像的像素值,以使其在視覺上同時(shí)捕捉到內(nèi)容圖像的內(nèi)容和風(fēng)格圖像的風(fēng)格。通常情況下,損失函數(shù)由兩個(gè)主要部分組成:內(nèi)容損失(ContentLoss)和風(fēng)格損失(StyleLoss)。左側(cè)代碼為內(nèi)容損失,右側(cè)為風(fēng)格損失代碼。風(fēng)格損失的目的是測(cè)量目標(biāo)圖像和風(fēng)格圖像在風(fēng)格上的差異。它是通過在多個(gè)卷積層的特征激活上使用Gram矩陣來實(shí)現(xiàn)的。本項(xiàng)目中是通過計(jì)算每個(gè)選定的風(fēng)格層(stylelayers)特征,計(jì)算目標(biāo)圖像和風(fēng)格圖像的特征激活的Gram矩陣,然后使用這兩個(gè)Gram矩陣之間的平均平方誤差來定義風(fēng)格損失。內(nèi)容損失的作用是確保目標(biāo)圖像在像素級(jí)別上與內(nèi)容圖像保持相似。它通常是通過計(jì)算內(nèi)容圖像和目標(biāo)圖像在某些深度層(contentlayers)的激活之間的誤差來實(shí)現(xiàn)的。本項(xiàng)目中計(jì)算內(nèi)容損失的方法是使用平均平方誤差(MeanSquaredError,MSE)來度量預(yù)選層的特征激活之間的差異。2.3.5基于NST風(fēng)格遷移–基于VGG的NST模型及損失函數(shù)設(shè)置(1)模型加載,加載本地模型并設(shè)置內(nèi)容風(fēng)格層(2)構(gòu)建包含內(nèi)容損失和風(fēng)格損失的模型2.3.6基于NST風(fēng)格遷移–圖像生成
在定義好CNN網(wǎng)絡(luò)的特征提取層和損失函數(shù)后,就可以執(zhí)行圖像風(fēng)格遷移任務(wù)了,在代碼7-7中,定義了一個(gè)函數(shù)run_style_transfer,目標(biāo)圖像被迭代地更新,以減少其內(nèi)容與內(nèi)容圖像間的差異性以及其風(fēng)格與風(fēng)格圖像間的差異性。圖像更新繼續(xù)進(jìn)行,直到達(dá)到預(yù)定的迭代次數(shù),或者直到損失函數(shù)收斂至某個(gè)閾值以下。最終,這段代碼輸出了具有風(fēng)格圖像特征的內(nèi)容圖像,完成了風(fēng)格遷移任務(wù)。2.4基于NST風(fēng)格遷移–結(jié)果展示(a)內(nèi)容圖像(b)內(nèi)容圖像(c)風(fēng)格遷移結(jié)果圖(a)為內(nèi)容圖像,圖(b)為風(fēng)格圖像,圖(c)為風(fēng)格遷移生成圖像,可以看出該算法能夠?qū)L(fēng)格圖像的特征融入到內(nèi)容圖像中。目錄2基于NeuralStyleTransfer的圖像風(fēng)格遷移1認(rèn)識(shí)圖像風(fēng)格遷移3基于AnimeGAN的圖像風(fēng)格遷移3.基于AnimeGAN的圖像風(fēng)格遷移任務(wù)目標(biāo)(1)了解AnimeGAN的基本原理和方法。(2)掌握AnimeGAN算法部署及項(xiàng)目工程結(jié)構(gòu)。(3)掌握AnimeGAN算法的實(shí)現(xiàn)細(xì)節(jié),包括生成器模型網(wǎng)絡(luò)結(jié)構(gòu)及模型推理。3.1AnimeGAN原理概述AnimeGAN是一種專門用于將真實(shí)世界的人像圖像轉(zhuǎn)換為動(dòng)漫風(fēng)格圖像的生成對(duì)抗網(wǎng)絡(luò)(GAN)方法。該方法通過生成器和判別器的對(duì)抗訓(xùn)練,實(shí)現(xiàn)高質(zhì)量的動(dòng)漫風(fēng)格遷移。AnimeGAN主要由兩個(gè)部分組成:生成器(Generator)和判別器(Discriminator)。生成器的任務(wù)是將輸入的真實(shí)圖像轉(zhuǎn)換為動(dòng)漫風(fēng)格的圖像,而判別器的任務(wù)是區(qū)分生成的動(dòng)漫圖像和真實(shí)的動(dòng)漫圖像。這兩個(gè)網(wǎng)絡(luò)通過對(duì)抗訓(xùn)練相互提升,最終生成的圖像能夠以假亂真。生成器采用了卷積神經(jīng)網(wǎng)絡(luò)的架構(gòu),其目的是將輸入圖像轉(zhuǎn)換為具有動(dòng)漫風(fēng)格的圖像。生成器網(wǎng)絡(luò)通常包括一系列的卷積層和反卷積層,逐步提取輸入圖像的特征并進(jìn)行風(fēng)格轉(zhuǎn)換。生成器的訓(xùn)練目標(biāo)是生成足以欺騙判別器的動(dòng)漫風(fēng)格圖像。判別器也是一個(gè)卷積神經(jīng)網(wǎng)絡(luò),其任務(wù)是區(qū)分生成的圖像和真實(shí)的動(dòng)漫圖像。判別器通過不斷學(xué)習(xí)來提高自身的辨別能力,從而促使生成器生成更為真實(shí)的動(dòng)漫風(fēng)格圖像。生成器和判別器通過對(duì)抗訓(xùn)練相互競(jìng)爭(zhēng)和提升。生成器嘗試生成能夠欺騙判別器的圖像,而判別器則不斷改進(jìn),以便更好地識(shí)別生成的圖像是否真實(shí)。這個(gè)過程通過最小化生成器和判別器的損失函數(shù)來實(shí)現(xiàn)。3.2AnimeGAN部署gitclone/bryandlee/animegan2-pytorch.git有三種方式獲取源碼:一是通過本課程提供下載獲取。二是通過git命令clone項(xiàng)目代碼到本地:本次工程的主要文件和目錄結(jié)構(gòu)。其中,weights為模型存放的目錄,inputs、outputs分別為輸入圖像文件夾及輸出風(fēng)格化圖像文件夾。model.py中為生成器部分的腳本實(shí)現(xiàn),test.py為推理腳本。Requirements.txt中包含項(xiàng)目所需的依賴包。(2)工程目錄介紹三是通過訪問項(xiàng)目網(wǎng)頁(yè),下載項(xiàng)目zip包到本地后解壓。/bryandlee/animegan2-pytorch(1)源碼下載3.3.1基于AnimeGAN人臉風(fēng)格化-網(wǎng)絡(luò)結(jié)構(gòu)該部分主要為模型加載部分,主要為ConvNormLReLU模塊、倒置殘差塊及生成器網(wǎng)絡(luò)。ConvNormLReLU模塊組合了填充層、卷積層、歸一化層和LeakyReLU激活函數(shù),方便構(gòu)建網(wǎng)絡(luò)層。根據(jù)pad_mode選擇填充方式,包括零填充、復(fù)制填充和反射填充。倒置殘差塊(InvertedResBlock):包含擴(kuò)展層、深度卷積層和點(diǎn)卷積層,使用跳躍連接來增強(qiáng)梯度傳遞.(1)定義帶有卷積層、歸一化層和LeakyReLU激活函數(shù)的模塊(2)倒置殘差塊3.3.2基于AnimeGAN人臉風(fēng)格化-網(wǎng)絡(luò)結(jié)構(gòu)生成器網(wǎng)絡(luò)包含多個(gè)順序塊,每個(gè)塊由ConvNormLReLU組合層組成,在塊之間使用雙線性插值進(jìn)行上采樣處理。最終通過out_layer輸出結(jié)果,使用Tanh激活函數(shù)將輸出限制在[-1,1]范圍內(nèi)。3.4模型推理(a)原始圖像(b)風(fēng)格遷移結(jié)果圖(a)為原始圖像,圖中的紅框是腳本中提供的坐標(biāo);圖(b)為風(fēng)格遷移結(jié)果展示,可以看到該模型能夠?qū)?dòng)漫風(fēng)格遷移到原始圖像中,在具備風(fēng)格特征的同時(shí)能夠保持原始圖像的內(nèi)容特征。下面分別為模型推理腳本及模型推理結(jié)果比對(duì)。其中模型推理腳本中有加載并預(yù)處理圖像,模型加載以及模型推理,結(jié)果圖像保存等部分腳本,見左側(cè)代碼。知識(shí)要點(diǎn)為幫助讀者回顧項(xiàng)目的重點(diǎn)內(nèi)容,總結(jié)項(xiàng)目中涉及到的主要知識(shí)點(diǎn):NeuralStyleTransfe的原理,包括使用深度神經(jīng)網(wǎng)絡(luò)提取圖像的內(nèi)容和風(fēng)格特征,以及使用優(yōu)化算法生成風(fēng)格遷移后的圖像。NeuralStyleTransfe算法的網(wǎng)絡(luò)結(jié)構(gòu)搭建及損失函數(shù)設(shè)置。NeuralStyleTransfe的實(shí)現(xiàn)過程,包括加載和預(yù)處理圖像數(shù)據(jù),構(gòu)建和初始化網(wǎng)絡(luò)模型,設(shè)置和調(diào)整超參數(shù),執(zhí)行優(yōu)化算法,保存和展示風(fēng)格遷移后的圖像。AnimeGAN算法原理,包括生成對(duì)抗網(wǎng)絡(luò)各模塊作用。AnimeGAN的實(shí)現(xiàn)過程,包括圖像加載與預(yù)處理,初始化預(yù)訓(xùn)練模型以及模型推理經(jīng)驗(yàn)總結(jié)在圖像風(fēng)格遷移任務(wù)中,有以下幾個(gè)實(shí)用的建議可以幫助優(yōu)化模型的性能:(1) 理解神經(jīng)風(fēng)格遷移的基本原理。深入理解神經(jīng)風(fēng)格遷移的基本原理,包括內(nèi)容損失、風(fēng)格損失、總變分損失以及優(yōu)化器的作用和原理,對(duì)于合理設(shè)計(jì)模型架構(gòu)至關(guān)重要。(2) 合適的特征提取網(wǎng)絡(luò)選擇。選擇一個(gè)預(yù)訓(xùn)練的特征提取網(wǎng)絡(luò),如VGG3、ResNet等,作為神經(jīng)風(fēng)格遷移的基礎(chǔ)網(wǎng)絡(luò),可以提高模型的效率和效果。一般來說,選擇一個(gè)在圖像分類任務(wù)上表現(xiàn)良好的網(wǎng)絡(luò),可以更好地提取圖像的內(nèi)容和風(fēng)格特征。(3) 合適的內(nèi)容和風(fēng)格層選擇。選擇合適的內(nèi)容和風(fēng)格層是神經(jīng)風(fēng)格遷移的關(guān)鍵步驟。一般來說,選擇較淺的層作為內(nèi)容層,可以保留圖像的低層次的細(xì)節(jié)信息;選擇較深的層作為風(fēng)格層,可以捕捉圖像的高層次的抽象信息。同時(shí),可以嘗試多個(gè)風(fēng)格層的組合,以增加風(fēng)格的多樣性和復(fù)雜度。(4) 合適的損失函數(shù)權(quán)重選擇。選擇合適的損失函數(shù)權(quán)重,是平衡內(nèi)容和風(fēng)格的重要因素。一般來說,內(nèi)容損失的權(quán)重應(yīng)該小于風(fēng)格損失的權(quán)重,以避免生成的圖像過于接近內(nèi)容圖像。同時(shí),可以根據(jù)不同的風(fēng)格圖像和內(nèi)容圖像,調(diào)整損失函數(shù)權(quán)重,以達(dá)到最佳的視覺效果。(5) 合適的優(yōu)化器和學(xué)習(xí)率選擇。選擇合適的優(yōu)化器和學(xué)習(xí)率,是加速模型收斂和提高模型穩(wěn)定性的重要因素。一般來說,使用Adam或L-BFGS等自適應(yīng)的優(yōu)化器,可以更快地找到最優(yōu)解。同時(shí),選擇一個(gè)合適的初始學(xué)習(xí)率,并使用學(xué)習(xí)率衰減策略,可以避免模型陷入局部最優(yōu)或震蕩。(6) 合適的圖像尺寸和初始化選擇。選擇合適的圖像尺寸和初始化,是影響模型運(yùn)行時(shí)間和生成效果的重要因素。一般來說,選擇較小的圖像尺寸,可以減少模型的計(jì)算量和內(nèi)存消耗,但可能導(dǎo)致生成的圖像細(xì)節(jié)不清晰;選擇較大的圖像尺寸,可以提高生成的圖像質(zhì)量,但可能增加模型的運(yùn)行時(shí)間和內(nèi)存占用。同時(shí),選擇一個(gè)合適的圖像初始化方式,如隨機(jī)噪聲、內(nèi)容圖像或風(fēng)格圖像,可以影響模型的收斂速度和生成效果。項(xiàng)目8以文修圖:基于Grounded-SAM大模型的圖像編輯教學(xué)目標(biāo)能力目標(biāo)(1)
掌握Grounded-SAM安裝與使用。(2)了解Grounded-SAM圖像編輯的3個(gè)步驟及原理。(3)掌握Gradio快速演示工具。(4)掌握基于MMDetection的模型微調(diào)。知識(shí)目標(biāo)(1)掌握基于Grounded-SAM項(xiàng)目進(jìn)行圖像編輯的實(shí)際操作技能。(2)掌握Gradio快速演示工具使用。(3)掌握大模型GroundingDINO微調(diào)。目錄2基于Grounded-SAM的圖像編輯1認(rèn)識(shí)Grounded-SAM開源項(xiàng)目3GroundingDINO模型的微調(diào)目錄2基于Grounded-SAM的圖像編輯1認(rèn)識(shí)Grounded-SAM開源項(xiàng)目3GroundingDINO模型的微調(diào)1.認(rèn)識(shí)數(shù)據(jù)集
任務(wù)目標(biāo)1.了解Grounding-SAM項(xiàng)目。2.掌握GroundingDINO的安裝及使用。3.掌握SAM的安裝及使用。4.掌握stablediffusion的安裝及使用。1.1Grounded-SAM概述GroundingDINO:這是一個(gè)文本驅(qū)動(dòng)的檢測(cè)模型,能夠根據(jù)文本提示檢測(cè)圖像中的物體。SegmentAnything:這是一個(gè)圖像分割模型,可以基于文本提示進(jìn)行分割,簡(jiǎn)稱SAM。StableDiffusion:這是一個(gè)圖像生成模型,可以用于生成新的圖像內(nèi)容。
Grounded-SAM開源項(xiàng)目全名為"Grounded-Segment-Anything",由IDEA-Research團(tuán)隊(duì)創(chuàng)建。項(xiàng)目的核心思想是結(jié)合不同的大模型優(yōu)勢(shì),構(gòu)建一個(gè)強(qiáng)大的流程來解決復(fù)雜的問題。就本項(xiàng)目具體來說,該組合通過結(jié)合以下幾個(gè)關(guān)鍵組件來實(shí)現(xiàn)自動(dòng)檢測(cè)、分割和生成任何物體:這種整合為連接各種視覺模型打開了一扇門,使得可以使用Grounded-SAM的組合流程來靈活完成廣泛的視覺任務(wù)(值得一提的是,這是一個(gè)結(jié)合強(qiáng)大專家模型的工作流程,其中的所有部分都可以單獨(dú)使用或組合使用,并且可以用任何類似但不同的模型替換)。例如,通過組合BLIP、GroundingDINO和SAM等模型用于自動(dòng)標(biāo)簽系統(tǒng),可以實(shí)現(xiàn)僅基于輸入圖像實(shí)現(xiàn)自動(dòng)標(biāo)注流程;通過組合Whisper、GroundingDINO和SAM等模型可以實(shí)現(xiàn)通過語(yǔ)音檢測(cè)和分割任何物體。本項(xiàng)目主要利用Grounding-SAM項(xiàng)目中GroundingDINO、SAM和Stable-Diffusion進(jìn)行組合,實(shí)現(xiàn)以文修圖的功能任務(wù)。1.2GroundingDINO、SAM、stablediffusion模型簡(jiǎn)介GroundingDINO是一個(gè)由IDEA-Research團(tuán)隊(duì)提出和發(fā)布的開集目標(biāo)檢測(cè)算法模型,它的獨(dú)特之處在于能夠識(shí)別并定位圖像中由文本提示指定的任意對(duì)象,而且不受限于在訓(xùn)練階段遇到的特定類別。這意味著,與傳統(tǒng)的閉集目標(biāo)檢測(cè)模型(僅能識(shí)別訓(xùn)練期間見過的類別)不同,GroundingDINO具有更強(qiáng)的靈活性和泛化能力,可以被稱為“DetectAnything”模型。SAM(SegmentAnythingModel)是由Meta(前Facebook)提出的一種圖像分割模型,旨在實(shí)現(xiàn)對(duì)圖像中任何內(nèi)容的語(yǔ)義分割。SAM同樣結(jié)合了深度學(xué)習(xí)和自然語(yǔ)言處理技術(shù),以支持對(duì)由文本提示指定的的任何對(duì)象或場(chǎng)景的分割。StableDiffusion是由StabilityAI等共同開發(fā)的。它是一種基于深度學(xué)習(xí)的圖像生成模型,采用擴(kuò)散模型和變分自編碼器的技術(shù),旨在生成高質(zhì)量、高分辨率的圖像。它能夠根據(jù)用戶的文本描述生成詳細(xì)、逼真的圖像。用戶可以輸入任何描述,例如“一只在月光下飛翔的貓”,模型則能生成與描述相匹配的圖像。1.3Grounded-SAM的部署Grounded-SAM項(xiàng)目整合了多個(gè)視覺大模型的使用代碼,其中就包括了GroundingDINO、SAM和stablediffusion模型。本小節(jié)主要帶領(lǐng)讀者們通過對(duì)Grounded-SAM進(jìn)行部署。(1)源碼下載。有三種方式獲取源碼(2)安裝依賴包(3)預(yù)訓(xùn)練模型下載下載GroundingDINO模型的預(yù)訓(xùn)練權(quán)重”GroundingDINO_swint_ogc.pth”和SAM模型的預(yù)訓(xùn)練權(quán)重”sam_vit_h_4b8939.pth”,并放入根目錄Grounded-Segment-Anything-main的weights目錄下;然后需要下載stablediffusion模型的模型權(quán)重及配置文件,并放在根目錄的runwayml/stable-diffusion-inpainting路徑下;此外,因GroundingDINO用到BERT的預(yù)訓(xùn)練權(quán)重,也需要下載”bert-base-uncased”版本的模型權(quán)重及配置文件,并放在根目錄的bert-base-uncased路徑下。以上預(yù)訓(xùn)練權(quán)重及配置文件建議首選通過課程提供的資源下載,有條件也可自行到官網(wǎng)和HuggingFace網(wǎng)站上下載。下載源碼后,進(jìn)入Grounded-Segment-Anything-main文件夾,打開Anacoda終端。利用conda創(chuàng)建Python=3.10的虛擬環(huán)境,并通過pip在該環(huán)境中安裝環(huán)境包。下面命令為創(chuàng)建虛擬環(huán)境、激活虛擬環(huán)境、安裝python依賴包繼續(xù)執(zhí)行以下命令在虛擬環(huán)境安裝segment_anything、GroundingDINO及diffusers。一是通過本課程提供下載獲取;二是通過git命令clone項(xiàng)目代碼到本地:三是通過訪問項(xiàng)目網(wǎng)頁(yè)/IDEA-Research/Grounded-Segment-Anything,下載項(xiàng)目zip包到本地后解壓。1.3.1GroundingDINO代碼演示GroundingDINO模型是根據(jù)用戶輸入的文本提示對(duì)輸入圖像進(jìn)行目標(biāo)檢測(cè),能夠?qū)⒎显撁枋龅膶?duì)象檢測(cè)出來。下面代碼是GroundingDINO模型演示demo的代碼塊,包括加載模型,提示詞樣例,圖片讀取及模型檢測(cè)等,最終將處理完成的圖像保存到指定路徑。(a)原始圖像(b)檢測(cè)結(jié)果1.3.2SAM大模型的使用演示SegmentAnythingModel模型具備零樣本分割能力,下面代碼是它的簡(jiǎn)單樣例,能夠?qū)μ峁┑膮^(qū)域框內(nèi)進(jìn)行分割,并將其中的主體對(duì)象分割結(jié)果篩選出來,通過supervision工具完成繪圖并保存。(a)原始圖像(b)分割結(jié)果(a)為原始圖像,圖中的紅框是腳本中提供的坐標(biāo);圖(b)為分割結(jié)果的圖像展示,可以看到該模型能夠?qū)⒖騼?nèi)對(duì)象給很好地分割出來。1.3.3stablediffusion圖片生成大模型的使用演示stablediffusion圖片生成大模型的使用演示。stablediffusion能夠?qū)⒃紙D像中給定的掩碼區(qū)域中的圖像編輯為用戶給定的文本輸入的內(nèi)容。下面代碼是一個(gè)簡(jiǎn)單的圖片編輯和生成示例,通過輸入原始圖像、掩碼圖像,經(jīng)過30次擴(kuò)散過程,完成圖像編輯。(a)為原始圖像,該圖像中有一條狗坐在凳子上;(b)為原始圖像中狗的掩碼圖像;(c)為編輯生成后的圖像,可以看出該模型結(jié)合原始圖片和對(duì)象掩碼,成功按文本描述將原始圖像中的狗變成一只貓。目錄2基于Grounded-SAM的圖像編輯1認(rèn)識(shí)Grounded-SAM開源項(xiàng)目3GroundingDINO模型的微調(diào)2.深度學(xué)習(xí)環(huán)境部署
任務(wù)目標(biāo)(1)掌握Grounding-SAM圖像編輯。(2)掌握Gradio工具使用。(3)測(cè)試圖像編輯效果。2.1以文修圖的實(shí)現(xiàn)過程Grounded-SAM圖像編輯流程由三個(gè)關(guān)鍵步驟構(gòu)成。首先,執(zhí)行目標(biāo)檢測(cè),利用GroundingDINO模型精確定位文本描述中提及的對(duì)象。接著,執(zhí)行指定區(qū)域的主體分割,通過SAM模型提取出特定區(qū)域內(nèi)的主要對(duì)象的掩碼。最后,利用stablediffusion模型對(duì)原始圖像中被掩碼覆蓋的部分進(jìn)行精細(xì)編輯,從而實(shí)現(xiàn)高質(zhì)量的圖像編輯效果。圖像編輯過程展示圖2.2基于Gradio實(shí)現(xiàn)可視化圖像編輯本節(jié)實(shí)現(xiàn)一個(gè)交互式的圖像編輯web程序,該程序可以提供圖像選擇、文本輸入、類型選擇等功能,且能夠?qū)斎脒M(jìn)行處理并可視化輸出結(jié)果。出于這一目標(biāo),利用Gradio這個(gè)機(jī)器學(xué)習(xí)演示快速構(gòu)建工具,將圖像編輯這一過程中的檢測(cè)、分割及編輯功能均抽象出來,實(shí)現(xiàn)了一個(gè)多功能的交互演示系統(tǒng)。Gradio簡(jiǎn)介程序代碼介紹程序的整體流程模型加載模型推理結(jié)果輸出Gradio頁(yè)面實(shí)現(xiàn)圖像編輯效果展示2.3Gradio簡(jiǎn)介
請(qǐng)注意,以上命令僅是示例,實(shí)際上可能需要根據(jù)系統(tǒng)配置和需求進(jìn)行一些調(diào)整,輸出結(jié)果也會(huì)根據(jù)版本不同而有所不同。此外,為了獲得更好的性能和穩(wěn)定性,在使用GPU版本時(shí)需確保GPU驅(qū)動(dòng)和CUDA版本與PyTorch兼容。Gradio是一個(gè)開源的Python庫(kù),專為簡(jiǎn)化機(jī)器學(xué)習(xí)模型和數(shù)據(jù)科學(xué)項(xiàng)目的演示與分享過程而設(shè)計(jì)。它允許開發(fā)者和數(shù)據(jù)科學(xué)家在不需要深入掌握Web開發(fā)技術(shù)的情況下,迅速為他們的模型或數(shù)據(jù)處理工作流創(chuàng)建交互式的Web界面。Gradio提供了一個(gè)簡(jiǎn)潔的API,用戶只需幾行代碼就能將模型包裝成一個(gè)具備圖形用戶界面的Web應(yīng)用。Gradio支持多種輸入和輸出類型,涵蓋了文本、圖像、音頻、視頻等多種數(shù)據(jù)格式。Gradio的核心是Interface類,它允許用戶定義輸入和輸出類型,創(chuàng)建交互式的Web界面。Gradio中典型的組件有輸入組件、輸出組件及頁(yè)面布局組件。輸入組件輸出組件頁(yè)面布局組件2.3.1Gradio輸入組件說明及示例
請(qǐng)注意,以上命令僅是示例,實(shí)際上可能需要根據(jù)系統(tǒng)配置和需求進(jìn)行一些調(diào)整,輸出結(jié)果也會(huì)根據(jù)版本不同而有所不同。此外,為了獲得更好的性能和穩(wěn)定性,在使用GPU版本時(shí)需確保GPU驅(qū)動(dòng)和CUDA版本與PyTorch兼容。組件名說明示例Audio允許用戶上傳音頻文件或直接錄音。gr.Audio(source="microphone",type="filepath")Checkbox提供復(fù)選框,用于布爾值輸入。gr.Checkbox(label="同意條款")CheckboxGroup允許用戶從一組選項(xiàng)中選擇多個(gè)。gr.CheckboxGroup(["選項(xiàng)1","選項(xiàng)2","選項(xiàng)3"],label="選擇你的興趣")ColorPicker用于選擇顏色,通常返回十六進(jìn)制顏色代碼。gr.ColorPicker(default="#ff0000")Dataframe允許上傳CSV文件或輸入DataFrame。gr.Dataframe(headers=["列1","列2"],row_count=5)Dropdown下拉菜單,用戶可以從中選擇一個(gè)選項(xiàng)gr.Dropdown(["選項(xiàng)1","選項(xiàng)2","選項(xiàng)3"],label="選擇一個(gè)選項(xiàng)")File用于上傳任意文件,支持多種文件格式。gr.File(file_count="single",type="file")Image用于上傳圖片,支持多種圖像格式。gr.Image(type='pil')Number數(shù)字輸入框,適用于整數(shù)和浮點(diǎn)數(shù)。gr.Number(default=0,label="輸入一個(gè)數(shù)字")Radio單選按鈕組,用戶從中選擇一個(gè)選項(xiàng)。gr.Radio(["選項(xiàng)1","選項(xiàng)2","選項(xiàng)3"],label="選擇一個(gè)選項(xiàng)")Slider滑動(dòng)條,用于選擇一定范圍內(nèi)的數(shù)值。gr.Slider(minimum=0,maximum=10,step=1,label="調(diào)整數(shù)值")Textbox單行文本輸入框,適用于簡(jiǎn)短文本。gr.Textbox(default="默認(rèn)文本",placeholder="輸入文本")Textarea多行文本輸入?yún)^(qū)域,適合較長(zhǎng)的文本輸入。gr.Textarea(lines=4,placeholder="輸入長(zhǎng)文本")Time用于輸入時(shí)間。gr.Time(label="選擇時(shí)間")Video視頻上傳組件,支持多種視頻格式。gr.Video(label="上傳視頻")Data用于上傳二進(jìn)制數(shù)據(jù),如圖像或音頻的原始字節(jié)。gr.Data(type="auto",label="上傳數(shù)據(jù)")2.3.2Gradio輸出組件說明及示例
請(qǐng)注意,以上命令僅是示例,實(shí)際上可能需要根據(jù)系統(tǒng)配置和需求進(jìn)行一些調(diào)整,輸出結(jié)果也會(huì)根據(jù)版本不同而有所不同。此外,為了獲得更好的性能和穩(wěn)定性,在使用GPU版本時(shí)需確保GPU驅(qū)動(dòng)和CUDA版本與PyTorch兼容。組件名說明示例Audio播放音頻文件。gr.Audio(type="auto")Carousel以輪播方式展示多個(gè)輸出,適用于圖像集或多個(gè)數(shù)據(jù)點(diǎn)。gr.Carousel(item_type="image")DataframePandasDataFrame展示,適用于表格數(shù)據(jù)。gr.Dataframe(type="pandas")Gallery以畫廊形式展示一系列圖像。gr.Gallery(label="images",show_label=False,elem_id="gallery",columns=[2],rows=[1],object_fit="contain",height="auto")HTML展示HTML內(nèi)容,適用于富文本或網(wǎng)頁(yè)布局。gr.HTML(value=generate_html())Image展示圖像。gr.Image(type="pil")JSON以JSON格式展示數(shù)據(jù),便于查看結(jié)構(gòu)化數(shù)據(jù)。gr.JSON(value=json.dumps({"a":30})Label展示文本標(biāo)簽,適用于簡(jiǎn)單的文本輸出。gr.Label(value="cat")
Markdown支持Markdown格式的文本展示。gr.Markdown(value="##Mark")Plot展示圖表,如matplotlib生成的圖表。gr.Plot(value=plt.gcf())Text用于顯示文本,適合較長(zhǎng)的輸出。gr.Text(value=echo("Hello,World!"))Video播放視頻文件。gr.Video(value="VideoPath.mp4")2.3.3Gradio布局組件說明及示例
請(qǐng)注意,以上命令僅是示例,實(shí)際上可能需要根據(jù)系統(tǒng)配置和需求進(jìn)行一些調(diào)整,輸出結(jié)果也會(huì)根據(jù)版本不同而有所不同。此外,為了獲得更好的性能和穩(wěn)定性,在使用GPU版本時(shí)需確保GPU驅(qū)動(dòng)和CUDA版本與PyTorch兼容。組件名說明示例Row播放音頻文件。withgr.Blocks()asdemo:withgr.Row():gr.Button("Button1")gr.Button("Button2")Column以輪播方式展示多個(gè)輸出,適用于圖像集或多個(gè)數(shù)據(jù)點(diǎn)。withgr.Blocks()asdemo:withgr.Column():gr.Textbox(label="Enteryourname")gr.Button("Submit")Accordion允許用戶通過展開和折疊來顯示或隱藏其內(nèi)容。withgr.Blocks()asdemo:withgr.Accordion("Clickmetoexpand"):gr.Text("Thistextishidden")Tab用于創(chuàng)建帶有多個(gè)標(biāo)簽頁(yè)的界面,用戶可以在這些標(biāo)簽頁(yè)之間切換withgr.Blocks()asdemo:withgr.Tab("Tab1"):gr.Text("ThisisinTab1.")withgr.Tab("Tab2"):gr.Text("ThisisinTab2.")2.4 程序代碼介紹-程序的整體流程
請(qǐng)注意,以上命令僅是示例,實(shí)際上可能需要根據(jù)系統(tǒng)配置和需求進(jìn)行一些調(diào)整,輸出結(jié)果也會(huì)根據(jù)版本不同而有所不同。此外,為了獲得更好的性能和穩(wěn)定性,在使用GPU版本時(shí)需確保GPU驅(qū)動(dòng)和CUDA版本與PyTorch兼容。四個(gè)組件分別為Sam全分割、GroundingDINO目標(biāo)檢測(cè)、SamPredictor指定區(qū)域分割、StableDiffusion圖像編輯。該程序?qū)?yīng)的四個(gè)功能及其過程為:1.全分割功能:無(wú)需輸入?yún)?shù),通過圖中①⑤進(jìn)行;2.目標(biāo)檢測(cè)功能:需要輸入待檢測(cè)對(duì)象文本,通過圖中②⑥進(jìn)行;3.文本分割功能:需要輸入待檢測(cè)對(duì)象文本,通過圖中②③⑦進(jìn)行;4.圖像編輯功能:需要輸入待檢測(cè)對(duì)象文本及編輯提示文本,通過圖中②③④⑧進(jìn)行。程序的整體流程。該程序的整體過程如下圖所示,程序由SamAutomaticMaskGenerator、GroundingDINO、SamPredictor、StableDiffusionInpaintPipeline等四個(gè)算法組件及1-8個(gè)路徑組成。2.4.1 程序代碼介紹–模型加載
請(qǐng)注意,以上命令僅是示例,實(shí)際上可能需要根據(jù)系統(tǒng)配置和需求進(jìn)行一些調(diào)整,輸出結(jié)果也會(huì)根據(jù)版本不同而有所不同。此外,為了獲得更好的性能和穩(wěn)定性,在使用GPU版本時(shí)需確保GPU驅(qū)動(dòng)和CUDA版本與PyTorch兼容。模型加載。該部分主要為模型加載部分,主要為模型路徑設(shè)置,模型加載。具體可見右側(cè)代碼,其中run_grounded_sam函數(shù)中僅有圖像獲取及轉(zhuǎn)換過程,模型推理、結(jié)果輸出部分在后面介紹。2.4.2 程序代碼介紹-模型推理
請(qǐng)注意,以上命令僅是示例,實(shí)際上可能需要根據(jù)系統(tǒng)配置和需求進(jìn)行一些調(diào)整,輸出結(jié)果也會(huì)根據(jù)版本不同而有所不同。此外,為了獲得更好的性能和穩(wěn)定性,在使用GPU版本時(shí)需確保GPU驅(qū)動(dòng)和CUDA版本與PyTorch兼容。模型推理。推理部分封裝了四個(gè)功能的推理腳本,見右側(cè)代碼。當(dāng)task_type為'automask'直接進(jìn)行全分割模型;當(dāng)task_type為'det',僅進(jìn)行文本提示目標(biāo)檢測(cè);當(dāng)task_type為'seg'或'inpainting'進(jìn)行文本提示目標(biāo)檢測(cè)模型及指定區(qū)域主體分割算法。2.4.3 程序代碼介紹-結(jié)果輸出
請(qǐng)注意,以上命令僅是示例,實(shí)際上可能需要根據(jù)系統(tǒng)配置和需求進(jìn)行一些調(diào)整,輸出結(jié)果也會(huì)根據(jù)版本不同而有所不同。此外,為了獲得更好的性能和穩(wěn)定性,在使用GPU版本時(shí)需確保GPU驅(qū)動(dòng)和CUDA版本與PyTorch兼容。下面為結(jié)果輸出部分,其輸出為圖像列表。當(dāng)任務(wù)類型為目標(biāo)檢測(cè)或全分割時(shí),返回繪制的推理結(jié)果的圖像;當(dāng)任務(wù)類型為文本提示分割、圖像編輯兩種情況時(shí),返回的是繪制推理結(jié)果圖像及掩碼圖像。2.4.4 程序代碼介紹-Gradio頁(yè)面實(shí)現(xiàn)Gradio包含豐富的組件,能夠快速構(gòu)建展示程序。本項(xiàng)目頁(yè)面中設(shè)置圖像組件、文本輸入組件、下拉框組件、滑動(dòng)組件等,并設(shè)定單擊按鈕,將按鈕與上文run_grounded_sam函數(shù)綁定。能夠自動(dòng)獲取輸入的圖片、文本以及參數(shù)等,調(diào)用推理函數(shù)。最后將函數(shù)返回結(jié)果呈現(xiàn)到輸出組件。defvisual_interface():
withgr.Blocks(title="Grounded-SAMStyleImage")asblock:#設(shè)置界面名
withgr.Row():#添加一行
input_image=gr.Image(type="pil")#創(chuàng)建輸入圖像組件
gallery=gr.Gallery(#創(chuàng)建輸出結(jié)果組件
label="Generatedimages",show_label=False,elem_id="gallery"
,columns=[2],rows=[1],object_fit="contain",height="auto"
)
withgr.Row():
#選擇框,選擇任務(wù)(全分割、文本提示檢測(cè)、文本提示分割、圖像編輯)
task_type=gr.Dropdown(["automask","det","seg","inpainting"],value="inpainting",label="task_type")
withgr.Row():#添加圖像檢測(cè)的文本輸入行
text_prompt=gr.Textbox(label="TextPrompt")
withgr.Row():#添加圖像編輯的文本輸入行
inpaint_prompt=gr.Textbox(label="InpaintPrompt")
withgr.Row():#添加擴(kuò)散迭代次數(shù)
infer_steps_num=gr.Textbox(label="InpaintInferenceSteps")
withgr.Row():#設(shè)置按鈕
run_button=gr.Button()
withgr.Row():#高級(jí)屬性,用于修改對(duì)象檢測(cè)文本、框閾值及圖像編輯方式
withgr.Accordion("Advancedoptions",open=False):box_threshold=gr.Slider(label="BoxThreshold",minimum=0.0,maximum=1.0,value=0.3,step=0.05)text_threshold=gr.Slider(label="TextThreshold",minimum=0.0,maximum=1.0,value=0.25,step=0.05)
inpaint_mode=gr.Dropdown(["merge","first"],value="merge",label="inpaint_mode")
#將按鈕與推理函數(shù)綁定
run_button.click(run_grounded_sam,
inputs=[input_image,text_prompt,task_type,inpaint_prompt,
box_threshold,text_threshold,inpaint_mode,infer_steps_num],
outputs=gallery)
block.launch()2.5.1 圖像編輯操作界面展示
請(qǐng)注意,以上命令僅是示例,實(shí)際上可能需要根據(jù)系統(tǒng)配置和需求進(jìn)行一些調(diào)整,輸出結(jié)果也會(huì)根據(jù)版本不同而有所不同。此外,為了獲得更好的性能和穩(wěn)定性,在使用GPU版本時(shí)需確保GPU驅(qū)動(dòng)和CUDA版本與PyTorch兼容。如圖所示,第一行左側(cè)為圖像輸入組件,右側(cè)為結(jié)果輸出組件;接下來分別為task_type選擇欄,能用于選擇功能類別,默認(rèn)為”inpainting”,即圖像編輯;TextPrompt用于輸入檢測(cè)(待編輯)對(duì)象的提示文本;InpaintPrompt用于輸入需要生成對(duì)象的提示文本;InpaintInferenceSteps用于輸入擴(kuò)散循環(huán)次數(shù)(決定了生成對(duì)象的特征程度)。后面的高級(jí)選項(xiàng)用于設(shè)定閾值和模式。當(dāng)輸入及參數(shù)設(shè)置完成,點(diǎn)擊run按鈕后進(jìn)行處理。2.5.2圖像編輯效果展示
請(qǐng)注意,以上命令僅是示例,實(shí)際上可能需要根據(jù)系統(tǒng)配置和需求進(jìn)行一些調(diào)整,輸出結(jié)果也會(huì)根據(jù)版本不同而有所不同。此外,為了獲得更好的性能和穩(wěn)定性,在使用GPU版本時(shí)需確保GPU驅(qū)動(dòng)和CUDA版本與PyTorch兼容。針對(duì)圖像編輯進(jìn)行了兩組實(shí)驗(yàn),分別以提示詞、擴(kuò)散迭代次數(shù)為變量來進(jìn)行比對(duì)。圖像(a)為原始圖像,該測(cè)試設(shè)置檢測(cè)文本提示為dog,擴(kuò)散迭代次數(shù)為30,中間為當(dāng)編輯提示詞為”acat”時(shí)的輸出圖像,右側(cè)為當(dāng)編輯提示詞為”apig”時(shí)的輸出圖像??梢?,當(dāng)要編輯生成的對(duì)象與原檢測(cè)對(duì)象的大小和類型比較一致的時(shí)候,編輯生成的效果較好。2.5.3圖像編輯效果展示
請(qǐng)注意,以上命令僅是示例,實(shí)際上可能需要根據(jù)系統(tǒng)配置和需求進(jìn)行一些調(diào)整,輸出結(jié)果也會(huì)根據(jù)版本不同而有所不同。此外,為了獲得更好的性能和穩(wěn)定性,在使用GPU版本時(shí)需確保GPU驅(qū)動(dòng)和CUDA版本與PyTorch兼容。針對(duì)圖像編輯進(jìn)行了兩組實(shí)驗(yàn),分別以提示詞、擴(kuò)散迭代次數(shù)為變量來進(jìn)行比對(duì)。(a)為原始圖像,該測(cè)試設(shè)置檢測(cè)文本提示為”Hair”,編輯生成提示詞為”Whitehair”,如圖8-9(b)
為擴(kuò)散迭代次數(shù)為20時(shí)的輸出圖像,如圖(c)
為擴(kuò)散迭代次數(shù)為40時(shí)的輸出圖像??梢钥闯霾煌臄U(kuò)散次數(shù)會(huì)編輯出不同效果的圖像,可通過設(shè)置不同的迭代次數(shù)來編輯出較為滿意的圖像。目錄2基于Grounded-SAM的圖像編輯1認(rèn)識(shí)Grounded-SAM開源項(xiàng)目3GroundingDINO模型的微調(diào)3.模型訓(xùn)練與評(píng)估
任務(wù)目標(biāo)(1)模型微調(diào)環(huán)境部署。(2)模型微調(diào)配置文件設(shè)置。(3)基于數(shù)據(jù)加載及損失函數(shù)編寫。3.1.1微調(diào)任務(wù)分析–貓咪數(shù)據(jù)集自建貓咪寵物數(shù)據(jù)集數(shù)據(jù)集圖像來自于家里兩只不同貓咪的拍攝,分別為橘貓和英短,具體可見圖,圖中(a)為橘貓(Gingercat),(b)的為英短(BritishShorthair)。本項(xiàng)目中,數(shù)據(jù)集格式轉(zhuǎn)為coco樣式,訓(xùn)練集、測(cè)試集圖片以文件夾形式存放,標(biāo)注文件分別是對(duì)應(yīng)一個(gè)json文件。訓(xùn)練集中有300張圖像,圖像包含的橘貓、英短兩種對(duì)象數(shù)量分別為160個(gè)、157個(gè);測(cè)試集中有26張圖像,圖像包含的橘貓、英短兩種對(duì)象數(shù)量分別為18個(gè)、12個(gè)。(b)英短(a)橘貓3.1.2微調(diào)任務(wù)分析–貓咪檢測(cè)測(cè)試2)GroundingDINO細(xì)類貓咪檢測(cè)測(cè)試在貓咪數(shù)據(jù)集中篩選出了典型圖像用于測(cè)試GroundingDINO對(duì)貓咪的細(xì)類描述的檢測(cè)效果,圖(a)為測(cè)試圖像,該圖中同時(shí)存在橘貓和英短兩只貓咪。圖(b)、(c)、(d)是在輸入的檢測(cè)文本描述分別為Gingercat、BritishShorthair、Gingercat.BritishShorthair這三種種情況下的結(jié)果展示:從測(cè)試結(jié)果中可看出GroundingDINO原始模型實(shí)際上分不清楚Gingercat、BritishShorthair兩種貓,當(dāng)輸入提示文本為Gingercat時(shí),模型將兩只貓都識(shí)別為Gingercat;當(dāng)輸入提示文本為BritishShorthair時(shí),模型將兩只貓都識(shí)別為BritishShorthair;當(dāng)輸入提示文本為Gingercat.BritishShorthair時(shí),模型將圖像上側(cè)的BritishShorthair識(shí)別為Gingercat,將Gingercat識(shí)別為BritishShorthair。鑒于上述的測(cè)試結(jié)果,接下來的主要任務(wù)是在該數(shù)據(jù)集上微調(diào)GroundingDINO模型,使該模型能夠識(shí)別橘貓、英短兩種類別貓咪。3.2模型微調(diào)-工程結(jié)構(gòu)介紹本次微調(diào)工程的主要文件和目錄結(jié)構(gòu)。其中,bert-base-uncased/、weight分別為存放模型的目錄,configs/中包含GroundingDINO微調(diào)的配置文件。Demo中image_demo.py為推理代碼,tools中dist_train.sh為訓(xùn)練腳本。Data中為數(shù)據(jù)集存放目錄,cats/train中為訓(xùn)練集圖像、cats/val中為驗(yàn)證集圖像、annotations中為標(biāo)簽文件。3.2.1模型微調(diào)-環(huán)境部署首先需要部署好MMDetection框架微調(diào)GroundingDINO所需要的環(huán)境。根據(jù)本機(jī)硬件環(huán)境安裝cuda、torch、torchvision,這里不做詳細(xì)說明。需注意:訓(xùn)練需要8G以上的顯存。下面分別介紹環(huán)境包安裝、預(yù)訓(xùn)練模型及所依賴的語(yǔ)言模塊下載。(1)依賴包安裝。執(zhí)行以下命令安全相關(guān)依賴包。其中MMDetection的代碼也可從課程資源下載。pipinstall-Uopenmimmiminstallmmenginemiminstall"mmcv>=2.0.0"gitclone/open-mmlab/MMDetection.gitcdMMDetectionpipinstall-v-e.(2)預(yù)訓(xùn)練模型及NLTK庫(kù)模塊下載。下載預(yù)訓(xùn)練模型bert-base-uncased、GroundingDINO_swint_ogc_mmdet-822d7e9d.pth,分別將其放置在項(xiàng)目根路徑及項(xiàng)目根路徑下的weight中。MMDetection微調(diào)GroundingDINO過程依賴于NLTK庫(kù)(NaturalLanguageToolkit)中的部分模塊,分別為punkt、averaged_perceptron_tagger,前者是NLTK庫(kù)中用于句子分割(句子切分)的模塊,后者是NLTK庫(kù)中用于詞性標(biāo)注的模塊。由于nltk包的download方法無(wú)法下載,會(huì)導(dǎo)致程序長(zhǎng)時(shí)間等待后發(fā)生錯(cuò)誤。因此通過手動(dòng)方式下載這兩個(gè)模塊,首先在MMDetection安裝路徑下的mmdet/models/detectors/glip.py中刪除nltk.download,如下圖所示。之后在github上下載其壓縮包后分別以下面的文件格式存放在用戶home文件夾中nltk_data中,具體的目錄結(jié)構(gòu)如下圖所示。|+--~/nltk_data/|+--taggers/
|+--averaged_perceptron_tagger/
|+--averaged_perceptron_tagger.zip|+--tokenizers/
|+--punkt/
|+--punkt.zip3.2.2模型微調(diào)利用MMDetection微調(diào)GroundingDINO主要涉及準(zhǔn)備數(shù)據(jù)集、配置訓(xùn)練參數(shù)、運(yùn)行訓(xùn)練腳本并評(píng)估模型性能。
(1)配置文件參數(shù)設(shè)置:
設(shè)置data_root、class_name、palette、train_dataloader、test_dataloader、val_evaluator、max_epoch等參數(shù)。data_root為數(shù)據(jù)集目錄;class_name為微調(diào)數(shù)據(jù)集類別名;palette為顏色列表,用于可視化檢測(cè)結(jié)果;train_dataloader、test_dataloader、val_evaluator為數(shù)據(jù)集圖像路徑及標(biāo)簽路徑;max_epoch為訓(xùn)練迭代次數(shù)。(2)終端執(zhí)行微調(diào)命令:
./tools/dist_train.shconfigs/grounding_dino/grounding_dino_swin-t_finetune_8xb2_20e_cat_custom.py1--workdir-dircats_gb_work_dir(3)微調(diào)模型測(cè)試:pythondemo/image_demo.py/home/aiservice/workspace/mmGroundingDINO/da
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 招商銷售實(shí)戰(zhàn)技巧提升培訓(xùn)
- 中醫(yī)醫(yī)院擴(kuò)容提質(zhì)工程項(xiàng)目可行性研究報(bào)告(范文模板)
- 《推動(dòng)公民道德建設(shè)的行動(dòng)方案》
- 熱力管網(wǎng)改造工程項(xiàng)目可行性研究報(bào)告(模板)
- 年產(chǎn)60萬(wàn)噸錳系合金項(xiàng)目可行性研究報(bào)告(范文模板)
- 紅色蛇年大吉中國(guó)風(fēng)工作總結(jié)模板
- 小滿飲食新解讀
- 小暑季電商營(yíng)銷
- 交通審批培訓(xùn)課件
- 土木工程施工課件:結(jié)構(gòu)自防水
- 2024年醫(yī)院重點(diǎn)崗位人員定期輪崗制度
- TCI 324-2024 冠心病患者防治精準(zhǔn)護(hù)理技術(shù)規(guī)范
- 港航實(shí)務(wù) 皮丹丹 教材精講班課件 51-第2章-2.5.2-鋪面基層施工
- 橋門式起重機(jī)拆卸、搬遷、安裝施工方案
- Unit 3 Sports and Fitness Reading for Writing 詞匯與寫作 教學(xué)設(shè)計(jì)-2023-2024學(xué)年高一上學(xué)期英語(yǔ)人教版(2019)必修第一冊(cè)
- 灌注樁后注漿施工技術(shù)規(guī)程1
- 《大數(shù)據(jù)導(dǎo)論(第2版)》全套教學(xué)課件
- 職業(yè)病防護(hù)設(shè)施與個(gè)體防護(hù)用品的使用和維護(hù)
- 新疆能源(集團(tuán))有限責(zé)任公司招聘筆試題庫(kù)2024
- 2024年全國(guó)高中數(shù)學(xué)聯(lián)賽北京賽區(qū)預(yù)賽一試試題(解析版)
- 2025屆新高考化學(xué)熱點(diǎn)精準(zhǔn)復(fù)習(xí) 高三化學(xué)復(fù)習(xí)備考的方法與策略
評(píng)論
0/150
提交評(píng)論