現(xiàn)在很多人都喜歡拍照(自拍)。有限的濾鏡和裝飾玩多了也會膩,所以就有 APP 提供了模仿名畫風格的功能,比如 prisma、versa 等,可以把你的照片變成梵高、畢加索、蒙克等大師的風格。
這種功能叫做“圖像風格遷移”,幾乎都是基于 CVPR 2015 的論文《A Neural Algorithm of Artistic Style》和 ECCV 2016 的論文《Perceptual Losses for Real-Time Style Transfer and Super-Resolution》中提出的算法,以及后續(xù)相關研究的基礎上開發(fā)出來的。
通俗來講,就是借助于神經(jīng)網(wǎng)絡,預先將名畫中的風格訓練成出模型,在將其應用在不同的照片上,生成新的風格化圖像。
而因為神經(jīng)網(wǎng)絡在計算機視覺方面的應用越來越廣,著名的視覺開發(fā)庫 OpenCV 在 3.3 版本中正式引入DNN(深度神經(jīng)網(wǎng)絡),支持 Caffe、TensorFlow、Torch/PyTorch 等主流框架的模型,可用以實現(xiàn)圖像的識別、檢測、分類、分割、著色等功能。
我最近才發(fā)現(xiàn)在 OpenCV 的 Sample 代碼中就有圖像風格遷移的 Python 示例(原諒我的后知后覺),是基于 ECCV 2016 論文中的網(wǎng)絡模型實現(xiàn)。所以,即使作為人工智能的菜鳥,也可以拿別人訓練好的模型來玩一玩,體會下神經(jīng)網(wǎng)絡的奇妙。
(相關代碼和模型的獲取見文末)
OpenCV 官方代碼地址:https://github.com/opencv/opencv/blob/3.4.0/samples/dnn/fast_neural_style.py
目錄下通過執(zhí)行命令運行代碼:
pythonfast_neural_style.py--modelstarry_night.t7
model參數(shù)是提供預先訓練好的模型文件路徑,OpenCV 沒有提供下載,但給出的參考項目 https://github.com/jcjohnson/fast-neural-style 中可以找到
其他可設置參數(shù)有:
-
input可以指定原始圖片/視頻,如果不提供就默認使用攝像頭實時采集。
-
width、height,調整處理圖像的大小,設置小一點可以提高計算速度。在我自己的電腦上,300x200 的轉換視頻可以達到 15 幀/秒。
-
median_filter中值濾波的窗口大小,用來對結果圖像進行平滑處理,這個對結果影響不大。
執(zhí)行后的效果(取自 jcjohnson/fast-neural-style):
原始圖像
ECCV16 models
instance_norm models
核心代碼其實很短,就是加載模型 -> 讀取圖片 -> 進行計算 -> 輸出圖片,我在官方示例基礎上進一步簡化了一下:
importcv2 #加載模型 net=cv2.dnn.readNetFromTorch('the_scream.t7') net.setPreferableBackend(cv2.dnn.DNN_BACKEND_OPENCV); #讀取圖片 image=cv2.imread('test.jpg') (h,w)=image.shape[:2] blob=cv2.dnn.blobFromImage(image,1.0,(w,h),(103.939,116.779,123.680),swapRB=False,crop=False) #進行計算 net.setInput(blob) out=net.forward() out=out.reshape(3,out.shape[2],out.shape[3]) out[0]+=103.939 out[1]+=116.779 out[2]+=123.68 out/=255 out=out.transpose(1,2,0) #輸出圖片 cv2.imshow('Styledimage',out) cv2.waitKey(0)
執(zhí)行結果:
另外還改了個多效果實時對比的版本(計算量大了,很卡頓),也一并上傳在代碼中。
PS:前兩天看趙雷演唱會的時候我還說:他演唱會的背景 MV 大量使用了 圖像二值化、邊緣檢測 等操作,讓我想到以前數(shù)字圖像處理課的大作業(yè)……現(xiàn)在圖像風格遷移的效率達到了實時,想必以后也會經(jīng)常被使用吧
參考文獻:
fast-neural-style jcjohnson
https://github.com/jcjohnson/fast-neural-style
Perceptual Losses for Real-Time Style Transfer and Super-Resolution(ECCV 2016)
Justin Johnson, Alexandre Alahi, Li Fei-Fei
A Neural Algorithm of Artistic Style(CVPR 2015)
Leon A. Gatys, Alexander S. Ecker, Matthias Bethge
Neural Style Transfer with OpenCV - Adrian Rosebrock
https://www.pyimagesearch.com/2018/08/27/neural-style-transfer-with-opencv/
無需GPU,只用OpenCV和Python實現(xiàn)圖像和視頻的風格遷移(譯) - 論智 Bing
https://mp.weixin.qq.com/s/KXA6b-ckttBSQR5DvS3SBg
可以用 Python 編程語言做哪些神奇好玩的事情?- 知乎回答 @楊航鋒
https://www.zhihu.com/question/21395276/answer/115805610
用processing代碼模仿梵高畫楊超越 - 算法藝術實驗室AALab Alice
https://mp.weixin.qq.com/s/UOVww7IgCteuQ6Bsbf0yEA
-
神經(jīng)網(wǎng)絡
+關注
關注
42文章
4781瀏覽量
101189 -
機器視覺
+關注
關注
162文章
4406瀏覽量
120751 -
OpenCV
+關注
關注
31文章
635瀏覽量
41569
發(fā)布評論請先 登錄
相關推薦
使用Python+OpenCV處理圖片
【AI實戰(zhàn)項目】基于OpenCV的“顏色識別項目”完整操作過程
![【AI實戰(zhàn)項目】基于<b class='flag-5'>OpenCV</b>的“顏色識別項目”完整操作過程](https://file1.elecfans.com/web3/M00/01/9C/wKgZPGdWrW6ALvshAAAgxUs2CfI310.png)
RK3568 + OpenCV 會碰撞出什么火花?案例詳解:2-1 基于OpenCV的畫線實驗
一個月速成python+OpenCV圖像處理
![一個月速成<b class='flag-5'>python+OpenCV</b>圖像處理](https://file1.elecfans.com/web3/M00/00/7F/wKgZPGdJlvGANv8EAAAl3WfWse8658.png)
如何用OpenCV的相機捕捉視頻進行人臉檢測--基于米爾NXP i.MX93開發(fā)板
手寫圖像模板匹配算法在OpenCV中的實現(xiàn)
![手寫圖像模板匹配算法在<b class='flag-5'>OpenCV</b>中的實現(xiàn)](https://file1.elecfans.com/web1/M00/F4/B4/wKgZoWcxaGqAPU4YAAAPQhF4fVs669.png)
評論