欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>PyTorch教程14.12之神經(jīng)風格遷移

PyTorch教程14.12之神經(jīng)風格遷移

2023-06-05 | pdf | 0.33 MB | 次下載 | 免費

資料介紹

如果你是攝影愛好者,你可能對濾鏡并不陌生。它可以改變照片的色彩風格,使風景照片變得更清晰或肖像照片皮膚變白。但是,一個濾鏡通常只會改變照片的一個方面。要為照片應用理想的風格,您可能需要嘗試多種不同的濾鏡組合。這個過程與調(diào)整模型的超參數(shù)一樣復雜。

在本節(jié)中,我們將利用 CNN 的分層表示將一幅圖像的風格自動應用到另一幅圖像,即 風格遷移 Gatys等人,2016 年。此任務需要兩張輸入圖像:一張是內(nèi)容圖像,另一張是風格圖像我們將使用神經(jīng)網(wǎng)絡修改內(nèi)容圖像,使其在風格上接近風格圖像。例如 圖14.12.1中的內(nèi)容圖片是我們在西雅圖郊區(qū)雷尼爾山國家公園拍攝的風景照,而風格圖是一幅以秋天的橡樹為主題的油畫。在輸出的合成圖像中,應用了樣式圖像的油畫筆觸,使顏色更加鮮艷,同時保留了內(nèi)容圖像中對象的主要形狀。

https://file.elecfans.com/web2/M00/A9/CD/poYBAGR9PAyAD4TXACzLlevRbk4394.svg

圖 14.12.1給定內(nèi)容和風格圖像,風格遷移輸出合成圖像。

14.12.1。方法

圖 14.12.2用一個簡化的例子說明了基于 CNN 的風格遷移方法。首先,我們將合成圖像初始化為內(nèi)容圖像。這張合成圖像是風格遷移過程中唯一需要更新的變量,即訓練期間要更新的模型參數(shù)。然后我們選擇一個預訓練的 CNN 來提取圖像特征并在訓練期間凍結(jié)其模型參數(shù)。這種深度 CNN 使用多層來提取圖像的層次特征。我們可以選擇其中一些層的輸出作為內(nèi)容特征或樣式特征。如圖14.12.2舉個例子。這里的預訓練神經(jīng)網(wǎng)絡有 3 個卷積層,其中第二層輸出內(nèi)容特征,第一層和第三層輸出風格特征。

../_images/神經(jīng)風格.svg

圖 14.12.2基于 CNN 的風格遷移過程。實線表示正向傳播方向,虛線表示反向傳播。

接下來,我們通過正向傳播(實線箭頭方向)計算風格遷移的損失函數(shù),并通過反向傳播(虛線箭頭方向)更新模型參數(shù)(輸出的合成圖像)。風格遷移中常用的損失函數(shù)由三部分組成:(i)內(nèi)容損失使合成圖像和內(nèi)容圖像在內(nèi)容特征上接近;(ii)風格損失使得合成圖像和風格圖像在風格特征上接近;(iii) 總變差損失有助于減少合成圖像中的噪聲。最后,當模型訓練結(jié)束后,我們輸出風格遷移的模型參數(shù),生成最終的合成圖像。

下面,我們將通過一個具體的實驗來解釋風格遷移的技術細節(jié)。

14.12.2。閱讀內(nèi)容和樣式圖像

首先,我們閱讀內(nèi)容和樣式圖像。從它們打印的坐標軸,我們可以看出這些圖像具有不同的尺寸。

%matplotlib inline
import torch
import torchvision
from torch import nn
from d2l import torch as d2l

d2l.set_figsize()
content_img = d2l.Image.open('../img/rainier.jpg')
d2l.plt.imshow(content_img);
https://file.elecfans.com/web2/M00/A9/CD/poYBAGR9PBSAQji4AAJilAS7Cj4664.svg
style_img = d2l.Image.open('../img/autumn-oak.jpg')
d2l.plt.imshow(style_img);
https://file.elecfans.com/web2/M00/AA/47/pYYBAGR9PBmAZ-kLAAMLjwnT-xs129.svg
%matplotlib inline
from mxnet import autograd, gluon, image, init, np, npx
from mxnet.gluon import nn
from d2l import mxnet as d2l

npx.set_np()

d2l.set_figsize()
content_img = image.imread('../img/rainier.jpg')
d2l.plt.imshow(content_img.asnumpy());
https://file.elecfans.com/web2/M00/A9/CD/poYBAGR9PBSAQji4AAJilAS7Cj4664.svg
style_img = image.imread('../img/autumn-oak.jpg')
d2l.plt.imshow(style_img.asnumpy());
https://file.elecfans.com/web2/M00/AA/47/pYYBAGR9PBmAZ-kLAAMLjwnT-xs129.svg

14.12.3。預處理和后處理

下面,我們定義了兩個用于預處理和后處理圖像的函數(shù)。preprocess函數(shù)對輸入圖像的三個 RGB 通道中的每一個進行標準化,并將結(jié)果轉(zhuǎn)換為 CNN 輸入格式。postprocess函數(shù)將輸出圖像中的像素值恢復為標準化前的原始值。由于圖像打印功能要求每個像素都有一個從0到1的浮點值,我們將任何小于0或大于1的值分別替換為0或1。

rgb_mean = torch.tensor([0.485, 0.456, 0.406])
rgb_std = torch.tensor([0.229, 0.224, 0.225])

def preprocess(img, image_shape):
  transforms = torchvision.transforms.Compose([
    torchvision.transforms.Resize(image_shape),
    torchvision.transforms.ToTensor(),
    torchvision.transforms.Normalize(mean=rgb_mean, std=rgb_std)])
  return transforms(img).unsqueeze(0)

def postprocess(img):
  img = img[0].to(rgb_std.device)
  img = torch.clamp(img.permute(1, 2, 0) * rgb_std + rgb_mean, 0, 1)
  return torchvision.transforms.ToPILImage()(img.permute(2, 0, 1))
rgb_mean = np.array([0.485, 0.456, 0.406])
rgb_std = np.array([0.229, 0.224, 0.225])

def preprocess(img, image_shape):
  img = image.imresize(img, *image_shape)
  img = (img.astype('float32') / 255 - rgb_mean) / rgb_std
  return np.expand_dims(img.transpose(2, 0, 1), axis=0)

def postprocess(img):
  img = img[0].as_in_ctx(rgb_std.ctx)
  return (img.transpose(1, 2, 0) * rgb_std + rgb_mean).clip(0, 1)

14.12.4。提取特征

我們使用在 ImageNet 數(shù)據(jù)集上預訓練的 VGG-19 模型來提取圖像特征( Gatys et al. , 2016 )。

pretrained_net = torchvision.models.vgg19(pretrained=True)
pretrained_net = gluon.model_zoo.vision.vgg19(pretrained=True)

為了提取圖像的內(nèi)容特征和風格特征,我們可以選擇VGG網(wǎng)絡中某些層的輸出。一般來說,越靠近輸入層越容易提取圖像的細節(jié),反之越容易提取圖像的全局信息。為了避免在合成圖像中過度保留內(nèi)容圖像的細節(jié),我們選擇了一個更接近輸出的VGG層作為內(nèi)容層輸出圖像的內(nèi)容特征。我們還選擇不同 VGG 層的輸出來提取局部和全局風格特征。這些圖層也稱為樣式圖層。如第 8.2 節(jié)所述,VGG 網(wǎng)絡使用 5 個卷積塊。在實驗中,我們選擇第四個卷積塊的最后一個卷積層作為內(nèi)容層,每個卷積塊的第一個卷積層作為樣式層。這些層的索引可以通過打印pretrained_net實例來獲得。

style_layers, content_layers = [0, 5, 10, 19, 28], [25]
style_layers, content_layers = [0, 5, 10, 19, 28], [25]

當使用 VGG 層提取特征時,我們只需要使用從輸入層到最接近輸出層的內(nèi)容層或樣式層的所有那些。讓我們構建一個新的網(wǎng)絡實例net,它只保留所有用于特征提取的 VGG 層。

net = nn.Sequential(*[pretrained_net.features[i] for i in
           range(max(content_layers + style_layers) + 1)])
net = nn.Sequential()
for i in range(max(content_layers + style_layers) + 1):
  net.add(pretrained_net.features[i])

給定輸入X,如果我們簡單地調(diào)用前向傳播 net(X),我們只能得到最后一層的輸出。由于我們還需要中間層的輸出,因此我們需要逐層計算并保留內(nèi)容層和樣式層的輸出。

def extract_features(X, content_layers, style_layers):
  contents = []
  styles = []
  for i in range(len(net)):
    X = net[i](X)
    if i in style_layers:
      styles.append(X)
    if i in content_layers:
      contents.append(X)
  return contents, styles
def extract_features(X, content_layers, style_layers):
  contents = []
  styles = []
  for i in range(len(net)):
    X = net[i](X)
    if i in style_layers:
      styles.append(X)
    if i in content_layers:
      contents.append(X)
  return contents, styles

下面定義了兩個函數(shù):get_contents函數(shù)從內(nèi)容圖像中提取內(nèi)容特征,函數(shù)get_styles從風格圖像中提取風格特征。由于在訓練期間不需要更新預訓練 VGG 的模型參數(shù),我們甚至可以在訓練開始之前提取內(nèi)容和風格特征。由于合成圖像是一組需要更新的模型參數(shù)以進行風格遷移,因此我們只能extract_features 在訓練時通過調(diào)用函數(shù)來提取合成圖像的內(nèi)容和風格特征。

def get_contents(image
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費