精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

圖像風格遷移也有框架了:使用Python編寫,與PyTorch完美兼容,外行也能用

開發 開發工具
pystiche 是一個用 Python 編寫的 NST 框架,基于 PyTorch 構建,并與之完全兼容。相關研究由 pyOpenSci 進行同行評審,并發表在 JOSS 期刊 (Journal of Open Source Software) 上。

易于使用的神經風格遷移框架 pystiche。

將內容圖片與藝術風格圖片進行融合,生成一張具有特定風格的新圖,這種想法并不新鮮。早在 2015 年,Gatys、 Ecker 以及 Bethge 開創性地提出了神經風格遷移(Neural Style Transfer ,NST)。

不同于深度學習,目前 NST 還沒有現成的庫或框架。因此,新的 NST 技術要么從頭開始實現所有內容,要么基于現有的方法實現。但這兩種方法都有各自的缺點:前者由于可重用部分的冗長實現,限制了技術創新;后者繼承了 DL 硬件和軟件快速發展導致的技術債務。

最近,新項目 pystiche 很好地解決了這些問題,雖然它的核心受眾是研究人員,但其易于使用的用戶界面為非專業人員使用 NST 提供了可能。

pystiche 是一個用 Python 編寫的 NST 框架,基于 PyTorch 構建,并與之完全兼容。相關研究由 pyOpenSci 進行同行評審,并發表在 JOSS 期刊 (Journal of Open Source Software) 上。

論文地址:https://joss.theoj.org/papers/10.21105/joss.02761

項目地址:https://github.com/pmeier/pystiche

在深入實現之前,我們先來回顧一下 NST 的原理。它有兩種優化方式:基于圖像的優化和基于模型的優化。雖然 pystiche 能夠很好地處理后者,但更為復雜,因此本文只討論基于圖像的優化方法。

在基于圖像的方法中,將圖像的像素迭代調整訓練,來擬合感知損失函數(perceptual loss)。感知損失是 NST 的核心部分,分為內容損失(content loss)和風格損失(style loss),這些損失評估輸出圖像與目標圖像的匹配程度。與傳統的風格遷移算法不同,感知損失包含一個稱為編碼器的多層模型,這就是 pystiche 基于 PyTorch 構建的原因。

如何使用 pystiche

讓我們用一個例子介紹怎么使用 pystiche 生成神經風格遷移圖片。首先導入所需模塊,選擇處理設備。雖然 pystiche 的設計與設備無關,但使用 GPU 可以將 NST 的速度提高幾個數量級。

模塊導入與設備選擇:

  1. import torch 
  2. import pystiche 
  3. from pystiche import demo, enc, loss, ops, optim 
  4.  
  5. print(f"pystiche=={pystiche.__version__}") 
  6.  
  7. device = torch.device("cuda" if torch.cuda.is_available() else "cpu") 

輸出:

  1. pystiche==0.7.0 

多層編碼器

content_loss 和 style_loss 是對圖像編碼進行操作而不是圖像本身,這些編碼是由在不同層級的預訓練編碼器生成的。pystiche 定義了 enc.MultiLayerEncoder 類,該類在單個前向傳遞中可以有效地處理編碼問題。該示例使用基于 VGG19 架構的 vgg19_multi_layer_encoder。默認情況下,它將加載 torchvision 提供的權重。

多層編碼器:

  1. multi_layer_encoder = enc.vgg19_multi_layer_encoder() 
  2. print(multi_layer_encoder) 

輸出:

  1. VGGMultiLayerEncoder( 
  2.   arch=vgg19framework=torchallow_inplace=True 
  3.   (preprocessing): TorchPreprocessing( 
  4.    (0): Normalize( 
  5.      mean=('0.485', '0.456', '0.406'), 
  6.      std=('0.229', '0.224', '0.225') 
  7.     ) 
  8.   ) 
  9.  (conv1_1): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) 
  10.  (relu1_1): ReLU(inplace=True
  11.  (conv1_2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) 
  12.  (relu1_2): ReLU(inplace=True
  13.  (pool1): MaxPool2d(kernel_size=2stride=2padding=0dilation=1ceil_mode=False
  14.  (conv2_1): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) 
  15.  (relu2_1): ReLU(inplace=True
  16.  (conv2_2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) 
  17.  (relu2_2): ReLU(inplace=True
  18.  (pool2): MaxPool2d(kernel_size=2stride=2padding=0dilation=1ceil_mode=False
  19.  (conv3_1): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) 
  20.  (relu3_1): ReLU(inplace=True
  21.  (conv3_2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) 
  22.  (relu3_2): ReLU(inplace=True
  23.  (conv3_3): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) 
  24.  (relu3_3): ReLU(inplace=True
  25.  (conv3_4): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) 
  26.  (relu3_4): ReLU(inplace=True
  27.  (pool3): MaxPool2d(kernel_size=2stride=2padding=0dilation=1ceil_mode=False
  28.  (conv4_1): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) 
  29.  (relu4_1): ReLU(inplace=True
  30.  (conv4_2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) 
  31.  (relu4_2): ReLU(inplace=True
  32.  (conv4_3): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) 
  33.  (relu4_3): ReLU(inplace=True
  34.  (conv4_4): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) 
  35.  (relu4_4): ReLU(inplace=True
  36.  (pool4): MaxPool2d(kernel_size=2stride=2padding=0dilation=1ceil_mode=False
  37.  (conv5_1): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) 
  38.  (relu5_1): ReLU(inplace=True
  39.  (conv5_2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) 
  40.  (relu5_2): ReLU(inplace=True
  41.  (conv5_3): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) 
  42.  (relu5_3): ReLU(inplace=True
  43.  (conv5_4): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) 
  44.  (relu5_4): ReLU(inplace=True
  45.  (pool5): MaxPool2d(kernel_size=2stride=2padding=0dilation=1ceil_mode=False

感知損失

pystiche 將內容損失和風格損失定義為操作符。使用 ops.FeatureReconstructionOperator 作為 content_loss,直接與編碼進行對比。如果編碼器針對分類任務進行過訓練,如該示例中這些編碼表示內容。對于content_layer,選擇 multi_layer_encoder 的較深層來獲取抽象的內容表示,而不是許多不必要的細節。

  1. content_layer = "relu4_2" 
  2. encoder = multi_layer_encoder.extract_encoder(content_layer) 
  3. content_loss = ops.FeatureReconstructionOperator(encoder) 

pystiche 使用 ops.GramOperator 作為 style_loss 的基礎,通過比較編碼各個通道之間的相關性來丟棄空間信息。這樣就可以在輸出圖像中的任意區域合成風格元素,而不僅僅是風格圖像中它們所在的位置。對于 ops.GramOperator,如果它在淺層和深層 style_layers 都能很好地運行,則其性能達到最佳。

style_weight 可以控制模型對輸出圖像的重點——內容或風格。為了方便起見,pystiche 將所有內容包裝在 ops.MultiLayerEncodingOperator 中,該操作處理在同一 multi_layer_encoder 的多個層上進行操作的相同類型操作符的情況。

  1. style_layers = ("relu1_1", "relu2_1", "relu3_1", "relu4_1", "relu5_1") 
  2. style_weight = 1e3 
  3.  
  4.  
  5. def get_encoding_op(encoder, layer_weight): 
  6.     return ops.GramOperator(encoder, score_weight=layer_weight
  7.  
  8.  
  9. style_loss = ops.MultiLayerEncodingOperator( 
  10.     multi_layer_encoder, style_layers, get_encoding_op, score_weight=style_weight

loss.PerceptualLoss 結合了 content_loss 與 style_loss,將作為優化的標準。

  1. criterion = loss.PerceptualLoss(content_loss, style_loss).to(device) 
  2. print(criterion) 

輸出:

  1. PerceptualLoss( 
  2.  (content_loss): FeatureReconstructionOperator( 
  3.    score_weight=1
  4.    encoder=VGGMultiLayerEncoder
  5.      layer=relu4_2
  6.      arch=vgg19
  7.      framework=torch
  8.      allow_inplace=True 
  9.    ) 
  10.  ) 
  11.  (style_loss): MultiLayerEncodingOperator( 
  12.    encoder=VGGMultiLayerEncoder
  13.      arch=vgg19
  14.      framework=torch
  15.      allow_inplace=True 
  16.  ), 
  17.  score_weight=1000 
  18.  (relu1_1): GramOperator(score_weight=0.2) 
  19.  (relu2_1): GramOperator(score_weight=0.2) 
  20.  (relu3_1): GramOperator(score_weight=0.2) 
  21.  (relu4_1): GramOperator(score_weight=0.2) 
  22.  (relu5_1): GramOperator(score_weight=0.2) 
  23.  ) 

圖像加載

首先加載并顯在 NST 需要的目標圖片。因為 NST 占用內存較多,故將圖像大小調整為 500 像素。

  1. size = 500 
  2. images = demo.images() 
  1. content_image = images["bird1"].read(sizesize=size, devicedevice=device) 
  2. criterion.set_content_image(content_image) 

內容圖片

  1. style_image = images["paint"].read(sizesize=size, devicedevice=device) 
  2. criterion.set_style_image(style_image) 

風格圖片

神經風格遷移

創建 input_image。從 content_image 開始執行 NST,這樣可以實現快速收斂。image_optimization 函數是為了方便,也可以由手動優化循環代替,且不受限制。如果沒有指定,則使用 torch.optim.LBFGS 作為優化器。

  1. input_image = content_image.clone() 
  2. output_image = optim.image_optimization(input_image, criterion, num_steps=500

【本文是51CTO專欄機構“機器之心”的原創譯文,微信公眾號“機器之心( id: almosthuman2014)”】 

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2024-12-11 15:15:42

2023-12-13 15:00:38

淺拷貝深拷貝Python

2009-09-17 08:35:56

Windows 7Itunes兼容性

2009-02-01 14:34:26

PythonUnix管道風格

2009-11-27 09:05:19

Windows 7Chrome兼容性

2009-11-26 11:00:28

Chrome瀏覽器Windows 7

2017-03-10 16:32:44

Apache Spar大數據工具

2018-05-07 14:11:15

RootAndroidXposed

2025-03-26 02:00:00

2024-12-13 16:01:35

2020-11-20 11:05:39

編程工具開發

2023-09-27 23:08:08

Web前端Vue.jsVue3.0

2023-12-04 09:00:00

PythonRuff

2025-08-01 11:45:57

2013-06-10 23:23:29

操作系統OS X

2009-07-15 11:00:48

proxool連接池

2023-10-09 14:36:28

工具PLGEFK

2015-07-15 14:53:38

Windows 10游戲

2022-03-16 15:30:25

barAndroid開發者

2016-03-30 11:20:10

點贊
收藏

51CTO技術棧公眾號

欧美女优在线视频| 丝袜老师在线| 处破女av一区二区| 国产91精品在线播放| 2019男人天堂| 亚州一区二区| 在线观看免费一区| 欧美中日韩在线| 国产在线电影| 国产成人综合网站| 国产精品av网站| 青青草手机在线观看| 亚洲精品一级二级三级| 91麻豆精品国产91| 日韩 欧美 高清| av在线免费网站| 久久欧美中文字幕| 成人免费视频观看视频| 久草热在线观看| 亚洲乱码视频| 久久av中文字幕| 日本精品在线观看视频| 国产成人一二| 欧美一区二区啪啪| 亚洲国产精品三区| 99爱在线视频| 亚洲男人的天堂在线观看| 久久精品国产综合精品| 国产黄a三级三级看三级| 久久一区精品| 26uuu另类亚洲欧美日本老年| 成人无码精品1区2区3区免费看 | 欧美日韩国产成人在线91| 国产视频九色蝌蚪| 草草影院在线| 一区二区高清免费观看影视大全 | 亚洲毛片一区| 色与欲影视天天看综合网| 99热6这里只有精品| 国产亚洲欧美日韩在线观看一区二区 | 免费一区二区三区视频导航| 亚洲成人免费在线视频| 中文字幕55页| 久久久久久爱| 91精品国产麻豆| 999久久久精品视频| 国产资源一区| 欧美日韩一区不卡| 日韩大片一区二区| 久久婷婷五月综合色丁香| 91久久精品一区二区| av天堂永久资源网| 伊人久久综合一区二区| 欧美性猛交xxxx| 日韩精品xxxx| 在线高清av| 欧美性猛交xxxx久久久| 大肉大捧一进一出好爽动态图| 波多野结衣久久精品| 欧美日韩在线视频一区| jizzjizzxxxx| 最新欧美电影| 欧美日韩精品系列| 肉色超薄丝袜脚交| 97se亚洲| 精品性高朝久久久久久久| 无码h肉动漫在线观看| 最新亚洲精品| 中文字幕亚洲二区| 成人免费黄色小视频| 欧美在线视屏| 午夜精品一区二区三区在线播放| 自拍偷拍欧美亚洲| 三级成人在线视频| 成人性生交xxxxx网站| 性生交生活影碟片| 91在线免费视频观看| 色阁综合av| 超碰公开在线| 精品成人久久av| chinese少妇国语对白| 日日夜夜亚洲| 欧美成人女星排名| 中文字幕一二三四区| 久久精品高清| 欧美巨大黑人极品精男| 日本视频免费在线| 蜜桃视频在线观看一区| 91久色国产| 日韩av成人| 成人欧美一区二区三区在线播放| 成人在线视频一区二区三区| 男人av在线播放| 56国语精品自产拍在线观看| 国产福利在线观看视频| 大色综合视频网站在线播放| 美女黄色丝袜一区| 久久精品视频1| 国内成+人亚洲+欧美+综合在线 | 国产日韩视频在线| 久久国产精品久久精品| 欧美啪啪小视频| 国产主播一区二区| 久久九九视频| 国产写真视频在线观看| 精品色蜜蜜精品视频在线观看| 手机在线成人免费视频| 凹凸成人在线| 色妞欧美日韩在线| 国产午夜免费福利| 国产一区二区三区不卡在线观看| 欧美国产综合视频| 永久免费网站在线| 欧美亚洲一区二区在线| 美女露出粉嫩尿囗让男人桶| 色偷偷综合网| 国产成+人+综合+亚洲欧洲| 亚洲av综合色区无码一二三区| 国产日本欧美一区二区| 国产极品尤物在线| 免费观看亚洲天堂| 色综合亚洲精品激情狠狠| 久久久久亚洲av成人毛片韩| 国产91富婆露脸刺激对白| 宅男av一区二区三区| 成人亚洲欧美| 日韩高清不卡av| 日韩精品无码一区二区| 国产·精品毛片| 一道本在线观看视频| 国产精品字幕| 一区二区三区 在线观看视| 久久久久久久久影院| www..com久久爱| 337p亚洲精品色噜噜狠狠p| 日韩精品一页| 日韩中文第一页| 亚洲天天综合网| 欧美国产视频在线| 久久黄色免费看| 久久91精品| 国产盗摄xxxx视频xxx69| 欧洲天堂在线观看| 一本色道a无线码一区v| 美女又爽又黄视频毛茸茸| 最新亚洲激情| 韩国一区二区三区美女美女秀| 女子免费在线观看视频www| 欧美一区二区三区在线观看视频| 日韩一卡二卡在线观看| 久久99日本精品| 亚洲自拍偷拍一区二区三区| 精品国产一区二| 久操成人在线视频| 亚洲国产日韩在线观看| 亚洲大片免费看| 精品国产av色一区二区深夜久久| 一本色道久久综合亚洲精品不| 国产伦精品一区二区三区在线| av资源在线看片| 日韩av在线免费观看一区| 亚洲第一网站在线观看| 国产欧美一区二区在线观看| 欧美伦理片在线观看| 亚洲成人三区| 国产一区二区高清不卡| 成人动漫一区| 自拍偷拍亚洲区| 国产suv一区二区| 亚洲一二三四在线| 巨胸大乳www视频免费观看| 免费精品视频最新在线| 国产精品夜夜夜爽张柏芝| 亚洲视频国产| 欧美一级片久久久久久久| 国产女主播在线直播| 欧美精品第1页| 国产在线拍揄自揄拍| 久久亚洲一区二区三区明星换脸| 国产综合免费视频| 99热国内精品| 国产伦精品一区二区三区免| 国产精品亚洲一区二区三区在线观看 | 精品熟女一区二区三区| 视频一区欧美精品| 男人的天堂成人| 欧美亚洲色图校园春色| 国产欧美中文字幕| 美女航空一级毛片在线播放| 亚洲欧美日韩精品久久| 国产又黄又大又粗的视频| 性感美女久久精品| 国产精品一区二区亚洲| 成人av网站在线观看免费| 亚洲精品怡红院| 韩国在线一区| 亚洲乱码一区二区三区| 精品欠久久久中文字幕加勒比| 日韩免费av片在线观看| 视频在线这里都是精品| 亚洲最新av在线| 三级小视频在线观看| 欧美视频三区在线播放| 久久精品国产av一区二区三区| 国产精品色哟哟| 熟女丰满老熟女熟妇| 国产最新精品精品你懂的| 久久精品香蕉视频| 国内精品久久久久久久97牛牛 | 三上悠亚ssⅰn939无码播放| 国产精品99久| 一道本在线免费视频| 亚洲欧美久久| www.在线观看av| 亚洲网色网站| 一区二区在线中文字幕电影视频| 亚洲制服一区| 国产精品一区二区三区在线观| 青娱乐极品盛宴一区二区| 91精品国产九九九久久久亚洲| 成人黄色网址| 久久精品在线视频| 成年在线电影| 亚洲欧美在线免费| 视频一区二区三区在线看免费看| 欧美日韩亚洲综合一区二区三区 | 日本三级在线观看网站| 色偷偷888欧美精品久久久| 青青草手机在线| 亚洲第一福利视频| 亚洲成人一级片| 日韩亚洲欧美一区| 国产三级在线观看视频| 欧美日韩国产综合久久| 中文字幕你懂的| 日本精品一级二级| 日韩熟女一区二区| 一本久久精品一区二区| 天天干天天干天天操| 欧美日韩国产精品一区| 圆产精品久久久久久久久久久| 亚洲综合色婷婷| 黄色一级视频免费| 亚洲曰韩产成在线| 久久香蕉精品视频| 亚洲国产精品久久久久婷婷884| 久久97人妻无码一区二区三区| 亚洲免费观看在线视频| 国产精品视频一区二区三| 亚洲视频在线一区| 免费成年人视频在线观看| 亚洲人成网站精品片在线观看| 精品人妻伦九区久久aaa片| 亚洲日本成人在线观看| 青娱乐在线视频免费观看| 亚洲国产视频在线| 欧美一二三区视频| 一本久久综合亚洲鲁鲁五月天| 天堂网一区二区| 欧美日韩在线不卡| 国产aⅴ一区二区三区| 精品日韩在线观看| 水莓100国产免费av在线播放| 亚洲欧美三级伦理| 天堂中文а√在线| 久操成人在线视频| 美女福利一区二区| 国产精品一区二区三区久久| av在线播放一区二区| 国产高清精品一区| 久久综合欧美| 手机福利在线视频| 欧美午夜在线视频| 少妇高潮喷水久久久久久久久久| 日韩经典中文字幕一区| 日本国产一级片| 成人午夜av电影| 免费在线观看成年人视频| 国产精品国产三级国产普通话99| 国产va在线播放| 一本大道av伊人久久综合| 亚洲午夜精品久久久| 亚洲精品在线免费播放| 国产中文字幕在线看| 欧美精品少妇videofree| 中国字幕a在线看韩国电影| 91精品国产综合久久久久久蜜臀| 91精品导航| 亚洲图片在线观看| 亚洲毛片播放| 日韩视频在线观看一区二区三区| 成人高清免费观看| 国产视频123区| 亚洲成人你懂的| 一级特黄特色的免费大片视频| 91精品免费在线| 国产天堂在线| 久久久在线免费观看| 国产精品麻豆成人av电影艾秋| 成人免费在线看片| 久久精品99久久无色码中文字幕| 日韩欧美精品免费| 精品一区二区三区蜜桃| jizz欧美性20| 一区二区在线看| 亚洲一区二区三区网站| 亚洲精品一区二三区不卡| 婷婷av在线| 国产欧美日韩专区发布| 亚洲综合福利| 99在线免费视频观看| 国产在线视频一区二区三区| 美女被到爽高潮视频| 亚洲成人tv网| 国产a级免费视频| 色av中文字幕一区| 欧美一级大黄| 久久精品国产精品国产精品污 | 成人性生交免费看| 久久久不卡网国产精品一区| 日韩av无码中文字幕| 欧美一区2区视频在线观看| av中文在线| 国产999精品久久久影片官网| 国产91精品入| www插插插无码免费视频网站| 精品一区二区三区香蕉蜜桃| 日韩av在线看免费观看| 精品久久久久久久久国产字幕| 国产成人毛毛毛片| 美女少妇精品视频| 亚洲国产91视频| 一区二区三区四区欧美日韩| 视频一区在线播放| 性欧美精品中出| 日本精品视频一区二区| 牛牛影视精品影视| 欧洲中文字幕国产精品| 欧美综合精品| 中文字幕日本最新乱码视频| 99视频有精品| 国内精品福利视频| 亚洲男人av在线| 久久精品女人天堂av免费观看| 久久综合九色99| 久久高清一区| 性の欲びの女javhd| 在线观看亚洲精品| 91欧美在线视频| 国产精品视频在线播放| 日韩欧美在线中字| 爱爱爱爱免费视频| 亚洲精品va在线观看| 国产三级漂亮女教师| 欧美激情伊人电影| 精品日产乱码久久久久久仙踪林| 日韩精品―中文字幕| 久久欧美一区二区| 中文字幕一区二区三区四区免费看 | 国产欧美黑人| 99国产在线观看| 亚洲另类视频| 成都免费高清电影| 欧美日韩精品欧美日韩精品一综合| 老司机午夜在线视频| 99视频在线播放| 久久www成人_看片免费不卡| 国产伦精品一区二区三区视频女| 欧美日韩精品一区二区三区四区 | 黄网站色欧美视频| 国产在线小视频| 成人免费淫片aa视频免费| 国产精品jizz在线观看美国| 亚洲午夜久久久久久久久| 色综合天天综合色综合av| 伊人在线视频| 痴汉一区二区三区| 蜜乳av另类精品一区二区| 在线观看黄网址| 亚洲国产成人精品一区二区| av高清不卡| 中文字幕av久久| 91丝袜高跟美女视频| 岳乳丰满一区二区三区| 欧美国产日产韩国视频| 亚州av日韩av| 一级黄色片在线免费观看| 五月婷婷久久丁香| 在线观看av的网站| 国产精品免费在线| 久久精品72免费观看| 国产在线一二区| 色多多国产成人永久免费网站 | 亚洲国产精品一区二区第一页| 国产精品亚洲一区二区三区在线| 日韩特黄一级片| 久久亚洲国产精品| 久久最新网址| 中文字幕乱码一区| 777a∨成人精品桃花网|