PyTorch进行神经风格转换/迁移(Neural-Transfer:图像风格迁移)
前言
文章目錄
- 前言
- 1.介紹
- 2. 基本原理
- 3 準備工作
- 4 加載素材
1.介紹
本教程主要講解如何實現由Leon A. Gatys,Alexander S. Ecker和Matthias Bethge提出的 Neural-Style 算法。Neural-Style或者叫Neural-Transfer,可以讓你運用新的風格將你指定的圖片進行重構。這個算法將使用兩張圖片,一張圖片作為風格提供者,一張圖片作為內容提供者,另外生成一張圖片內容與內容圖片相似,但圖片風格的和風格圖片相似的新圖片。
2. 基本原理
其實現原理非常特別,展現了人類思維的巧妙性,
我們定義兩個優化指標:
1,一個用于內容D_C;
2,一個用于風格D_S。
D_C度量兩張圖片內容上的區別,而D_S用來測量兩張圖片風格的區別。
然后,我們生成第三張圖片,并優化這張圖片,使其與內容圖片的內容差別和風格圖片的風格差別最小化。
現在,原理講完了,開始實現吧,首先,我們導入必要的包。
3 準備工作
首先是導入以下的包:
接著是一個比較關鍵的步驟,確定是GPU還是CPU來運行神經網絡。雖然,在GPU上運行可以加速,但有的電腦上沒有GPU。
我們可以使用torch.cuda.is_available()來判斷是否有可用的GPU。
4 加載素材
接下來是導入提供風格和內容的圖片。
導入圖片也意味著對圖片進行預處理,原始的PIL圖片的屬性值介于0到255之間,但是當轉換成torch張量時,它們的值被壓縮到0到1之間,另外,圖片分辨率也會被調整到520。一個重要的細節是,注意torch庫中的神經網絡用來訓練的張量的值為0到1之間。如果你嘗試將0到255的張量圖片加載到神經網絡,然后激活的特征映射將不能偵測到目標內容和風格。然而,Caffe庫中的預訓練網絡用來訓練的張量值為0到255之間的圖片。
這是一個下載本教程需要用到的圖片的鏈接: picasso.jpg 和 dancing.jpg。下載這兩張圖片并且將它們添加到你當前工作目錄。
如果嫌麻煩,可以關注公眾號,
發送neuralstyle,自動推送資源集成包。
設置圖片預處理程序
因為tensor是四維的不能直接展示,所以,我們創建一個imshow函數,重新將圖片轉換成標準三維數據來展示,這樣也可以讓我們確認圖像是否被正確加載。
unloader = transforms.ToPILImage() # reconvert into PIL imageplt.ion()def imshow(tensor, title=None):image = tensor.cpu().clone() # we clone the tensor to not do changes on itimage = image.squeeze(0) # remove the fake batch dimension 去掉0維度image = unloader(image)plt.imshow(image)if title is not None:plt.title(title)plt.pause(0.001) # pause a bit so that plots are updatedplt.figure() imshow(style_img, title='Style Image')plt.figure() imshow(content_img, title='Content Image')正確加載的話,運行到這里,可以看到這個。
總結
以上是生活随笔為你收集整理的PyTorch进行神经风格转换/迁移(Neural-Transfer:图像风格迁移)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 查看led设备,Linux下
- 下一篇: oracle truncate 日期,【