この記事では、Python OpenCV のイメージ スタイル移行の実装方法について説明します。一定の参考価値があります。必要な友人は参考にしてください。お役に立てれば幸いです。
現在、多くの人が写真 (セルフィー) を撮るのが好きです。限られたフィルターや装飾で遊びすぎると飽きてしまうので、写真を ## に変身させるプリズマやバーサなど、有名な画風を模倣する機能を備えたアプリもあります。 #ゴッホ、ピカソやムンクなどの巨匠のスタイル。
この機能は「
Image Style Transfer」と呼ばれるもので、ほぼすべて CVPR 2015 の論文「##」に基づいています。 #A これは、芸術スタイルのニューラル アルゴリズム および ECCV 2016 論文「リアルタイム スタイル転送と超解像度のための知覚損失」で提案されたアルゴリズム、およびその後の関連アルゴリズムに基づいて開発されました。研究。 平たく言えば、ニューラル ネットワーク
を使用して有名な絵画のスタイルをモデルに事前学習し、それをさまざまな写真に適用して新しい様式化された画像を生成することです。
「芸術的なスタイルのニューラル アルゴリズム」より
そして、ニューラル ネットワークはコンピュータ ビジョンでますます使用されているため、有名なビジュアル開発ライブラリ OpenCV は、バージョン 3.3 でDNN (ディープ ニューラル ネットワーク)
を正式に導入し、Caffe、TensorFlow、Torch/PyTorch などの主流フレームワークのモデルをサポートし、画像認識、検出、分類、セグメンテーション、色分け、その他の機能。最近、OpenCV のサンプル コード (後知恵をお許しください) に画像スタイル転送の Python 例があることを発見しました。これは、ECCV 2016 論文のネットワーク モデル実装に基づいています。したがって、人工知能の初心者であっても、他の人が訓練したモデルで遊んで、ニューラル ネットワークの素晴らしさを体験することができます。 (関連するコードとモデルについては記事の最後を参照してください)
python fast_neural_style.py --model starry_night.t7
model
パラメーターは、事前トレーニングされたモデル ファイルへのパスを指定します。 OpenCV はダウンロードを提供しませんが、リファレンス プロジェクト https://github.com/jcjohnson/fast-neural-styleその他の設定可能なパラメータは次のとおりです。
元の画像/ビデオを指定できます。指定しない場合は、デフォルトでカメラを使用してリアルタイムでキャプチャされます。
width
、
median_filter
メディアン フィルターのウィンドウ サイズは、結果の画像を滑らかにするために使用されますが、結果にはほとんど影響しません。
実行後の効果 (jcjohnson/fast-neural-style から抜粋):
ECCV16 モデル
##instance_norm モデル
モデルをロードする->画像を読み取る->計算する->画像を出力するです。公式の例に基づいてさらに簡略化しました。 :import cv2
# 加载模型
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('Styled image', out)
cv2.waitKey(0)
また、複数のエフェクトをリアルタイムに比較するバージョン(計算量が多くて非常に遅い)を修正し、コード内にアップロードしました。
追記: 2日前にZhao Leiのコンサートを観たとき、私も言いました:背景のMVがたくさんあります画像の二値化やエッジ検出などの操作は、昔のデジタル画像処理の授業での大きな課題を思い出させます...画像スタイルの転送効率がリアルタイムに達した今、それは実現されると思います今後も頻繁に使用されます。
以上がPython+OpenCVの画像スタイル移行の実装方法の説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。