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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【损失函数】生成任务感知损失小结

發(fā)布時(shí)間:2023/12/16 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【损失函数】生成任务感知损失小结 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

隔了一個(gè)季度之后,再次更新。之前停更并非是意志松懈,主要是身體抱恙,疫情期間過(guò)度用眼導(dǎo)致眼疲勞,加上疫情穩(wěn)定后打球崴腳臥床數(shù)周,拖著疲勞的眼睛僅能勉強(qiáng)應(yīng)付網(wǎng)課和日常任務(wù),無(wú)力去維持其他的用眼活動(dòng)。那段時(shí)間也反思為什么以前在學(xué)校長(zhǎng)時(shí)間用眼也沒(méi)有什么不適,細(xì)想發(fā)現(xiàn)眼睛日常通勤中得到了很好的休息,而在家?guī)缀鯖](méi)有通勤時(shí)間。如今每天有意識(shí)地調(diào)節(jié)屏幕時(shí)間,眼疲勞得到了一定的緩解。說(shuō)這么多,總結(jié)感悟就是身體是革命的本錢,管理好身體才能更好地做其他事情。

感知損失(Perceptual Loss)

在生成網(wǎng)絡(luò)中,為了使生成圖像與源圖像具有相同的特征,最先使用的主要是在像素層面上做正則化,即∣∣xsrc?xg∣∣l||{\bf x_{src}}-{\bf x_g}||_lxsrc??xg?l?,用L1或L2范數(shù)來(lái)對(duì)兩者的像素層信息進(jìn)行約束。但像素級(jí)約束有很多局限性,比如兩張相同的圖像,某一張圖像的像素進(jìn)行輕微的整體平移,兩者的像素差就會(huì)變得很大,而實(shí)際內(nèi)容卻是相同的。
感知損失則是在深度特征層面對(duì)原圖和生成圖進(jìn)行約束,深度特征通過(guò)神經(jīng)網(wǎng)絡(luò)提取,而深度特征通常隨著網(wǎng)絡(luò)層數(shù)的加深而獲取到圖像更深層次的語(yǔ)義信息,通過(guò)懲罰深度特征差異的監(jiān)督,生成圖像可以保留源圖像中較高層語(yǔ)義信息。
但是在不同的任務(wù)中,研究者們對(duì)感知損失或內(nèi)容損失的使用是有所不同的,下文將對(duì)各種使用形式做出相應(yīng)的梳理,并針對(duì)性地對(duì)筆者課題相關(guān)的使用進(jìn)行展開式討論,由于筆者水平有限,如理解有誤還望評(píng)論指正。

感知損失計(jì)算公式

根據(jù)筆者的論文閱讀存量和搜集情況,目前主要分為以下三種形式。

形式1

lfeat?,j(y^,y)=1CjHjWj∣∣?j(y^)??j(y)∣∣22l_{feat}^{\phi,j}({\bf \hat y,y})=\frac{1}{C_jH_jW_j}||\phi_j({\bf \hat y})-\phi_j({\bf y})||_2^2 lfeat?,j?(y^?,y)=Cj?Hj?Wj?1??j?(y^?)??j?(y)22? 其中y^,y{\bf \hat y,y}y^?,y分別表示生成圖像與源圖像,?\phi?表示預(yù)訓(xùn)練的神經(jīng)網(wǎng)絡(luò),jjj表示該網(wǎng)絡(luò)的第j層,Cj×Hj×WjC_j \times H_j \times W_jCj?×Hj?×Wj?為第j層特征圖的形狀,這個(gè)公式中涉及的feature map有兩種選擇:

  • 每個(gè)卷積模塊的激活值[1]
  • 每個(gè)卷積模塊激活值前的特征[2]

這種形式的感知損失主要應(yīng)用于超分辨、人臉屬性編輯等任務(wù)。下圖為文獻(xiàn)[1]中的參考圖像,風(fēng)格遷移的內(nèi)容本文不涉及,詳細(xì)內(nèi)容請(qǐng)參考文獻(xiàn)[1]。

形式2

lfeat(x,x′)=∑i=1N1CjHjWj[∣∣?j(x)??j(x′)∣∣1]l_{feat}({\bf x,x'})=\sum_{i=1}^N\frac{1}{C_jH_jW_j}[||\phi_j({\bf x})-\phi_j({\bf x'})||_1] lfeat?(x,x)=i=1N?Cj?Hj?Wj?1?[?j?(x)??j?(x)1?] 其中x,x′{\bf x,x'}x,x分別表示GT和生成圖像,?\phi?表示預(yù)訓(xùn)練的神經(jīng)網(wǎng)絡(luò),jjj表示該網(wǎng)絡(luò)的第j層,Cj×Hj×WjC_j \times H_j \times W_jCj?×Hj?×Wj?為第j層特征圖的形狀,使用的是每個(gè)卷積模塊的激活值。
這種形式應(yīng)用于pix2pix問(wèn)題[3,4],跟形式1有所區(qū)別的是,它使用了多層深度特征,并且使用的是L1范數(shù),而與形式1最大的區(qū)別是感知損失內(nèi)的兩個(gè)對(duì)象,這里是GT和生成圖像。以pix2pix-HD[4]的實(shí)現(xiàn)細(xì)節(jié)為例,感知損失模型為ImageNet上預(yù)訓(xùn)練的VGG19,使用的層數(shù)為conv1~5模塊的激活值,針對(duì)每個(gè)模塊的特征匹配還做了權(quán)重分配,代碼摘要如下:

# pytorch實(shí)現(xiàn) # 這種從torchvision加載的方式在訓(xùn)練時(shí)不如使用模型參數(shù)加載的方式,后者占用的計(jì)算資源較少 from torchvision import models class Vgg19(torch.nn.Module):def __init__(self, requires_grad=False):super(Vgg19, self).__init__()vgg_pretrained_features = models.vgg19(pretrained=True).featuresself.slice1 = torch.nn.Sequential()self.slice2 = torch.nn.Sequential()self.slice3 = torch.nn.Sequential()self.slice4 = torch.nn.Sequential()self.slice5 = torch.nn.Sequential()for x in range(2):self.slice1.add_module(str(x), vgg_pretrained_features[x])for x in range(2, 7):self.slice2.add_module(str(x), vgg_pretrained_features[x])for x in range(7, 12):self.slice3.add_module(str(x), vgg_pretrained_features[x])for x in range(12, 21):self.slice4.add_module(str(x), vgg_pretrained_features[x])for x in range(21, 30):self.slice5.add_module(str(x), vgg_pretrained_features[x])if not requires_grad:for param in self.parameters():param.requires_grad = Falsedef forward(self, X):h_relu1 = self.slice1(X)h_relu2 = self.slice2(h_relu1) h_relu3 = self.slice3(h_relu2) h_relu4 = self.slice4(h_relu3) h_relu5 = self.slice5(h_relu4) out = [h_relu1, h_relu2, h_relu3, h_relu4, h_relu5]return outclass VGGLoss(nn.Module):def __init__(self, gpu_ids):super(VGGLoss, self).__init__() self.vgg = Vgg19().cuda()self.criterion = nn.L1Loss()self.weights = [1.0/32, 1.0/16, 1.0/8, 1.0/4, 1.0] def forward(self, x, y): x_vgg, y_vgg = self.vgg(x), self.vgg(y)loss = 0for i in range(len(x_vgg)):loss += self.weights[i] * self.criterion(x_vgg[i], y_vgg[i].detach()) return loss

pix2pix-HD[4]的生成器網(wǎng)絡(luò)框架圖如下圖,貼圖的目的主要是為了對(duì)pix2pix有一個(gè)感性的認(rèn)識(shí),論文作者在文獻(xiàn)中討論了感知損失的作用,感知損失可以輕微地提升生成質(zhì)量,但并不起決定性作用,因?yàn)椴挥酶兄獡p失也可以得到較好的效果,效果對(duì)比圖如下,因此感知損失屬于錦上添花的操作。

形式3

lfeatD,l(x,x′)=12ClHlWl∣∣Dl(x)?Dl(x′)∣∣F2l_{feat}^{D,l}({\bf x,x'})=\frac{1}{2C_lH_lW_l}||D_l({\bf x})-D_l({\bf x'})||_F^2 lfeatD,l?(x,x)=2Cl?Hl?Wl?1?Dl?(x)?Dl?(x)F2? lperception(x,x′)=∑l=ijwllfeatD,l(x,x′)l_{perception}({\bf x,x'})=\sum_{l=i}^jw_{_l}l_{feat}^{D,l}({\bf x,x'}) lperception?(x,x)=l=ij?wl??lfeatD,l?(x,x) 其中x,x′{\bf x,x'}x,x分別表示源和生成圖像,DDD表示判別器網(wǎng)絡(luò),lll表示判別器的第lll層,Cj×Hj×WjC_j \times H_j \times W_jCj?×Hj?×Wj?為第j層特征圖的形狀。文獻(xiàn)[5,6]使用類似于這種形式的感知損失。
DIAT[5]是使用GAN的人臉屬性遷移任務(wù),和前面兩種形式的使用方式不同,這里并不是使用預(yù)訓(xùn)練的分類器來(lái)提取深度特征,使用的是判別器提取的中間隱層特征。文獻(xiàn)[5]中解釋,現(xiàn)成的預(yù)訓(xùn)練分類器通常是在其他的訓(xùn)練集上訓(xùn)練的,并且不是為當(dāng)前任務(wù)所量身定制的,因此可能不太適合于當(dāng)前任務(wù)下的模型。

匹配深度特征的圖像

從公式上看,感知損失涉及兩張圖像,根據(jù)任務(wù)和任務(wù)涉及的數(shù)據(jù)不同,使用感知損失的任務(wù)可以分為兩種:

  • 匹配Ground Truth和生成圖像
  • 匹配源輸入圖像和生成圖像
  • 第一種形式
    存在Ground Truth的任務(wù)有超分辨[1,2,8,10]、pix2pix[3,4,6],其中文獻(xiàn)[1,2,10]使用的是形式1的公式,即涉及某一層深度特征的匹配,而文獻(xiàn)[3,4,6,8]使用多層深度特征的匹配。
    這種形式是以Ground Truth作為監(jiān)督,讓生成圖像從深度特征層面向Ground Truth靠攏。對(duì)于pix2pix問(wèn)題,由于輸入是分割圖,而Ground Truth和生成圖為實(shí)際圖像,所以匹配多層深度特征可以給生成模型提供更多的真實(shí)域信息;對(duì)于超分辨任務(wù),目前搜集到的文獻(xiàn)大都采用一層深度特征,而文獻(xiàn)[8]則選擇了兩層,分別為第二層和第五層的池化層特征,涉及低層語(yǔ)義和深層語(yǔ)義,由于筆者對(duì)超分辨了解不多,這里就點(diǎn)到為止。

    第二種形式
    對(duì)于不存在Ground Truth的任務(wù),如人臉屬性編輯[5]、人臉老化[9],妝容遷移[11],其中文獻(xiàn)[5]選擇了其判別器模型的3、4層;文獻(xiàn)[9,11]使用的公式是形式1。文獻(xiàn)[9]主要是使用年齡標(biāo)簽進(jìn)行跨域?qū)W習(xí),使用一層感知損失,使用的是預(yù)訓(xùn)練的AlexNet,下圖為其對(duì)不同層的嘗試,由于其模型設(shè)計(jì)具有一定局限性,只能在人臉內(nèi)容和紋理風(fēng)格上做折衷,該方法選擇的是conv5,其感知損失在總損失函數(shù)的權(quán)重極低,為5e-5.

    而文獻(xiàn)[11]雖然有妝容的參考圖像,但不同于Ground Truth,因此其感知損失用于源圖和生成圖之間,采用的是ImageNet預(yù)訓(xùn)練的VGG16,特征匹配層為con4,與文獻(xiàn)[9]一樣,感知損失的權(quán)重壓得很低,設(shè)置為0.005.
    以上這類方法由于沒(méi)有Ground Truth,所以使用感知損失的目的主要是為了保留源圖的某些特征,僅起到重構(gòu)作用,但由于這類任務(wù)主要是為了讓源圖發(fā)生特定的變化,因此感知損失不宜施加較強(qiáng)的約束。

    形式1的展開

    形式1的公式如下:
    lfeat?,j(y^,y)=1CjHjWj∣∣?j(y^)??j(y)∣∣22l_{feat}^{\phi,j}({\bf \hat y,y})=\frac{1}{C_jH_jW_j}||\phi_j({\bf \hat y})-\phi_j({\bf y})||_2^2 lfeat?,j?(y^?,y)=Cj?Hj?Wj?1??j?(y^?)??j?(y)22?
    在文獻(xiàn)[1]中,作者復(fù)現(xiàn)了文獻(xiàn)[7]的想法,固定網(wǎng)絡(luò)參數(shù)優(yōu)化輸入,即找到一張圖像能夠使得上述損失函數(shù)最小,效果圖如下所示。從這個(gè)逆向過(guò)程可以反映出深度特征蘊(yùn)含的信息。

    值得一提的是,在文獻(xiàn)[1]的風(fēng)格遷移效果中(如下圖),可以看出轉(zhuǎn)換網(wǎng)絡(luò)是可以感知到圖像的語(yǔ)義內(nèi)容的,例如第二列,湖面和沙灘雖然都按照背景進(jìn)行處理,但是很好地感知到“人”的語(yǔ)義。作者解釋,VGG-16損失網(wǎng)絡(luò)具有對(duì)人和動(dòng)物進(jìn)行選擇的特征,因?yàn)檫@些對(duì)象存在于分類數(shù)據(jù)集中,并在分類數(shù)據(jù)集上進(jìn)行訓(xùn)練。從某種角度來(lái)說(shuō),提供感知語(yǔ)義的分類器保留了預(yù)訓(xùn)練時(shí)的任務(wù)屬性。

    激活值特征?

    文獻(xiàn)[1]中使用的是每個(gè)卷積模塊中的激活值特征,即每個(gè)relu層的輸出特征。而在文獻(xiàn)[2]為超分辨方法,提出使用激活層之前的深度特征,作者列出兩個(gè)原因:

  • 激活后的特征是非常稀疏的,特別是非常深的網(wǎng)絡(luò),如下圖,稀疏的激活值將會(huì)提供較弱的監(jiān)督并導(dǎo)致較差的性能。

    其中VGG19-54中的“54”指的是特征從第4個(gè)卷積層(在第5個(gè)最大池化層之前)獲取,“22”與之類似。

  • 使用激活后的特征會(huì)導(dǎo)致重構(gòu)亮度不連續(xù),相較于Ground Truth.

    該圖展示了使用激活層前后特征的亮度值分布,可以看出使用激活層前的特征可以較精確地貼近GT的亮度分布,從右圖細(xì)節(jié)可以看出使用激活層前的特征可以生成更清晰的邊角和更豐富的紋理。

  • 可能出現(xiàn)的問(wèn)題

    在搜集涉及感知損失的文獻(xiàn)中,超分辨任務(wù)的多篇文獻(xiàn)均提到使用感知損失會(huì)導(dǎo)致棋盤偽影(checkerboard artifacts),在文獻(xiàn)[8]中找到了相關(guān)問(wèn)題的圖例,如下圖所示,其中ENet-P為僅使用感知損失的上采樣網(wǎng)絡(luò),可以看出棋盤偽影的效果,但聯(lián)合其他損失得到的效果則改善了這一問(wèn)題。由于筆者查閱超分辨的文獻(xiàn)較少,且沒(méi)有遇到這一問(wèn)題,這里就點(diǎn)到為止。


    總結(jié)

    感知損失的本質(zhì)就是讓兩張圖片在深度特征層面進(jìn)行匹配,深度特征由神經(jīng)網(wǎng)絡(luò)提取,至于選擇什么網(wǎng)絡(luò)模型提取特征、選取網(wǎng)絡(luò)中的哪幾層特征、讓哪兩張圖片進(jìn)行匹配則需要根據(jù)具體情況具體分析。本文主要涉及了三種形式的感知損失計(jì)算公式、兩種匹配對(duì)象的選擇,通過(guò)閱讀文獻(xiàn),可以初步得出以下結(jié)論:

    • 匹配低層特征可以保留幾何、紋理等低級(jí)語(yǔ)義信息,匹配深層特征可以保留內(nèi)容、風(fēng)格等高級(jí)語(yǔ)義信息。
    • 預(yù)訓(xùn)練網(wǎng)絡(luò)提取的特征附帶預(yù)訓(xùn)練時(shí)的任務(wù)屬性,會(huì)對(duì)生成模型產(chǎn)生影響,所以預(yù)訓(xùn)練模型盡量選擇與生成任務(wù)相關(guān)的模型參數(shù)。
    • 選擇特征匹配層不必局限于激活層,選擇激活層之前的特征進(jìn)行匹配,可以為生成模型提供更強(qiáng)的監(jiān)督信息。
    • 對(duì)于具有Ground Truth的任務(wù),深度特征匹配可以設(shè)置多層且較強(qiáng)的約束;對(duì)于沒(méi)有Ground Truth僅使用感知損失做重構(gòu)的任務(wù),深度特征匹配應(yīng)設(shè)置單層且較弱的約束。

    參考文獻(xiàn)

  • Johnson J, Alahi A, Feifei L, et al. Perceptual Losses for Real-Time Style Transfer and Super-Resolution[C]. european conference on computer vision, 2016: 694-711.
  • Wang X, Yu K, Wu S, et al. ESRGAN: Enhanced Super-Resolution Generative Adversarial Networks[C]. european conference on computer vision, 2018: 63-79.
  • Chen Q, Koltun V. Photographic Image Synthesis with Cascaded Refinement Networks[C]. international conference on computer vision, 2017: 1520-1529.
  • Wang T, Liu M, Zhu J, et al. High-Resolution Image Synthesis and Semantic Manipulation with Conditional GANs[C]. computer vision and pattern recognition, 2018: 8798-8807.
  • Li M, Zuo W, Zhang D, et al. Deep Identity-aware Transfer of Facial Attributes.[J]. arXiv: Computer Vision and Pattern Recognition, 2016
  • Wang C, Xu C, Wang C, et al. Perceptual Adversarial Networks for Image-to-Image Transformation[J]. IEEE Transactions on Image Processing, 2018, 27(8): 4066-4079
  • Mahendran A, Vedaldi A. Understanding deep image representations by inverting them[C]. computer vision and pattern recognition, 2015: 5188-5196.
  • Sajjadi M S, Scholkopf B, Hirsch M, et al. EnhanceNet: Single Image Super-Resolution Through Automated Texture Synthesis[C]. international conference on computer vision, 2017: 4501-4510
  • Tang X, Wang Z, Luo W, et al. Face Aging with Identity-Preserved Conditional Generative Adversarial Networks[C]. computer vision and pattern recognition, 2018: 7939-7947.
  • Ledig C, Theis L, Huszár F, et al. Photo-realistic single image super-resolution using a generative adversarial network[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 4681-4690.
  • Li T, Qian R, Dong C, et al. Beautygan: Instance-level facial makeup transfer with deep generative adversarial network[C]//Proceedings of the 26th ACM international conference on Multimedia. 2018: 645-653.
  • 總結(jié)

    以上是生活随笔為你收集整理的【损失函数】生成任务感知损失小结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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