基於判別器和生成器建模方法的紋理合成具有很大的潛力,但是現有方法為了效率而採用的前向網路在泛化能力上並不行,即乙個網路只能合成一種紋理,缺少多樣性。本文著重解決該問題。訓練乙個多紋理合成網路存在的一些困難:不同型別紋理的統計特是完全不同,使用基於 gram 矩陣的紋理損失[1, 2]只能部分的衡量其中的差異;紋理之間內在的不同導致收斂速率也不一樣。所以訓練乙個多紋理合成網路的難度取決於紋理之間的差異和各個紋理本身的複雜性。另外,多紋理合成網路還會出現輸入的雜訊向量被邊緣化的問題,這就導致乙個給定的紋理無法生成多個不同樣本,這通常意味著對特定紋理的過擬合。
本文設計的網路結構有兩個輸入,乙個雜訊向量、乙個 one-hot vector 表示不同紋理,網路分為 generator 和 selector 兩路,selector 的每層的特徵圖除了自用之外,還會和 generator 的對應層特徵拼接在一起作為 generator 下一層的輸入,最後一層的輸出即為生成的紋理,再使用 vgg 提取特徵。
基於 gram 矩陣的紋理損失函式對於單一紋理合成很有用,但是用於多紋理時並不夠理想,作者認為這是因為不同紋理的 gram 矩陣在尺度上有較大的差異導致的,所以本文首先是改進了 texture loss,由公式(1)變成公式(2):
改進前後的效果對比:
第一行是原始紋理,第二行是公式(1)的效果,第三行是改進後的效果。
另乙個需要解決的是缺乏多樣性的問題,因為網路有把雜訊向量邊緣化的問題,所以作者提出了顯式衡量同一紋理不同雜訊下生成樣本之間的損失函式,即多樣性損失,強行把輸入雜訊和輸出耦合在一起:
其效果如下:
第一列是原始紋理,第三~四列是沒使用多樣性損失的結果,很明顯三個樣本差不多,最後三個是使用了多樣性損失的結果,樣本之間有明顯的差異。
具體訓練時,作者發現每次都隨機的選擇一種紋理和有規律的增量訓練效果差別挺大,增量訓練的過程如下:
隨機訓練和增量訓練的結果對比:
第一行為原始紋理,第二行是隨機訓練的結果,第三行是增量訓練的結果,顯然是增量訓練的結果更接近原始紋理。
作者還將其擴充套件到了 multi-style transfer 上,這裡就不具體介紹了,關鍵點都是以上的內容,展示點效果:
第一行為 style,第二行為風格遷移效果。風格插值效果如下:
最左邊和最右邊是兩種不同的 style,中間為為插值效果。
參考文獻
[1] l. a. gatys, a. s. ecker, and m. bethge. texture synthesis using convolutional neural networks. in nips, 2015.
[2] l. a. gatys, a. s. ecker, and m. bethge. image style transfer using convolutional neural networks. in cvpr, 2016.
[3] li, yijun, et al. diversified texture synthesis with feed-forward networks. in cvpr, 2017.
matlab練習程式(紋理合成)
關於紋理合成最經典的 應該就數efros的texture synthesis by non parametric sampling這篇 了,引用量近2000。這裡的合成是基於樣例的,就是先有乙個小的紋理影象,然後合成乙個大的。我個人的理解是,先產生乙個大的隨機影象,然後對隨機影象中每個畫素及其鄰域畫...
solr的多樣化查詢
由需要確定查詢的方式。範圍查詢是根據欄位的字典順序進行的查詢 詞條查詢 test public void testterm throws exception 萬用字元查詢 test public void testwildcard throws exception 模糊查詢 test public ...
lucene多樣化搜尋,結果排序。
一 多樣化的搜尋 乙個關鍵字,對乙個字段進行查詢 queryparser qp new queryparser content analyzer query qp.parse keyword hits hits searcher.search query 模糊查詢 term term new ter...