<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于OpenCV的DNN圖像風格遷移

科技綠洲 ? 來源:Python實用寶典 ? 作者:Python實用寶典 ? 2023-10-30 10:03 ? 次閱讀

圖像風格遷移已經屬于比較成熟的領域了,現在連實時的風格遷移都不成問題。之前一直想出一篇這樣的文章,但無奈于大部分開源項目配置起來非常麻煩,比如 luanfujun/deep-photo-styletransfer 項目,需要安裝 CUDA、pytorch、cudnn等等,配置能花一天的時間。

不過最近我發現一個非常好的開源應用項目,那就是基于OpenCV的DNN圖像風格遷移。你只需要安裝OpenCV就可以使用。

它也有局限性,我們只能用別人訓練好的模型進行風格遷移,如果我們要自定義風格,那就必須配置cudn等工具,使用 deep-photo-styletransfer 等項目的方法進行訓練。

不過作為初學者,我們只需要體驗一下這樣的風格遷移算法即可。感興趣的同學可以再自己深入研究。今天的教程我們拿 fast-neural-style 訓練好的模型對下面的圖片做一次風格遷移。

1.準備

開始之前,你要確保Pythonpip已經成功安裝在電腦上,如果沒有,可以訪問這篇文章:超詳細Python安裝指南 進行安裝。

**(可選1) **如果你用Python的目的是數據分析,可以直接安裝Anaconda:Python數據分析與挖掘好幫手—Anaconda,它內置了Python和pip.

**(可選2) **此外,推薦大家用VSCode編輯器,它有許多的優點:Python 編程的最好搭檔—VSCode 詳細指南。

請選擇以下任一種方式輸入命令安裝依賴

  1. Windows 環境 打開 Cmd (開始-運行-CMD)。
  2. MacOS 環境 打開 Terminal (command+空格輸入Terminal)。
  3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.
pip install python-opencv

2.選擇模型

fast-neural-style放出的模型風格一共有9種,我們將一一嘗試,其中部分風格如下比如:
3.克隆OpenCV源碼

我們直接克隆OpenCV開源項目中關于DNN圖像遷移的例子,地址是:
https://github.com/opencv/opencv/blob/3.4.0/samples/dnn/fast_neural_style.py

代碼:

import cv2 as cv
import numpy as np
import argparse

parser = argparse.ArgumentParser(
        description='This script is used to run style transfer models from '
                    'https://github.com/jcjohnson/fast-neural-style using OpenCV')
parser.add_argument('--input', help='Path to image or video. Skip to capture frames from camera')
parser.add_argument('--model', help='Path to .t7 model')
parser.add_argument('--width', default=-1, type=int, help='Resize input to specific width.')
parser.add_argument('--height', default=-1, type=int, help='Resize input to specific height.')
parser.add_argument('--median_filter', default=0, type=int, help='Kernel size of postprocessing blurring.')
args = parser.parse_args()

net = cv.dnn.readNetFromTorch(args.model)

if args.input:
    cap = cv.VideoCapture(args.input)
else:
    cap = cv.VideoCapture(0)

cv.namedWindow('Styled image', cv.WINDOW_NORMAL)
while cv.waitKey(1) < 0:
    hasFrame, frame = cap.read()
    if not hasFrame:
        cv.waitKey()
        break

    inWidth = args.width if args.width != -1 else frame.shape[1]
    inHeight = args.height if args.height != -1 else frame.shape[0]
    inp = cv.dnn.blobFromImage(frame, 1.0, (inWidth, inHeight),
                              (103.939, 116.779, 123.68), swapRB=False, crop=False)

    net.setInput(inp)
    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)

    t, _ = net.getPerfProfile()
    freq = cv.getTickFrequency() / 1000
    print t / freq, 'ms'

    if args.median_filter:
        out = cv.medianBlur(out, args.median_filter)

    cv.imshow('Styled image', out)

注意,源代碼是基于Python2的,所以第46行少了括號,如果你是Python3請注意補上括號。

這份代碼可以直接使用, parser 里定義了5個參數,--input輸入要遷移的圖像寬度和高度, median_filter 是中值濾波器, 基本思想是用像素點鄰域灰度值的中值來代替該像素點的灰度值 ,因此理論上數值越大,圖像越平滑,輸出的結果細節越好(不確定)。

親自試了一下median_filter對圖像的影響,發現改變微乎其微,因此直接為默認值即可。

4.開始遷移

將第二步的代碼保存到一個文件中,命名為1.py,在CMD/Terminal中帶參數運行腳本,其中input是源圖像路徑,model是遷移的風格模型文件,如運行:

python 1.py --input 1.jpg --model udnie.t7
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 模型
    +關注

    關注

    1

    文章

    2771

    瀏覽量

    47858
  • 編輯器
    +關注

    關注

    1

    文章

    791

    瀏覽量

    30427
  • OpenCV
    +關注

    關注

    29

    文章

    612

    瀏覽量

    40847
  • dnn
    dnn
    +關注

    關注

    0

    文章

    56

    瀏覽量

    8962
收藏 人收藏

    評論

    相關推薦

    教你如何用OpenCV、Python和深度學習技術對圖像和實時視頻進行神經風格遷移

    雖然Gatys等人的方法能生成不錯的神經風格遷移結果,但是它的速度非常慢。2016年,Johnson等人在Gatys的基礎上提出的全新算法速度快了三倍,但同時也存在著缺點,即用戶不能隨機選擇想要應用的風格
    的頭像 發表于 08-31 09:47 ?7444次閱讀

    使用全卷積網絡模型實現圖像分割

    OpenCv-C++-深度神經網絡(DNN)模塊-使用FCN模型實現圖像分割
    發表于 05-28 07:33

    【洞幺邦】基于深度學習的GAN應用風格遷移

    和虛假,最后兩者到達動態的平和的時候,生成網絡G就可以生成以假亂真的圖片了。GAN應用風格遷移:在最一開始那個吶喊的例子中,人類騎行的圖像通過組合風格
    發表于 07-01 10:53

    【飛凌嵌入式OKMX8MP-C 開發板試用體驗】OpenCV-DNN移植&使用體驗(基于YOLOV3模型識別物體)

    OpenCV-DNN攝像頭圖像實時識別物品的Demo,從網上下載coco.names(物品類名稱文件),yolov3.cfg(YOLOV3配置文件),yolov3.weights(YOLOV3模型
    發表于 02-21 00:22

    遷移學習

    、目標檢測、行人重識別等任務中的應用,學習圖像/視頻風格遷移方法,了解風格遷移在實際生活中的應用。七、小樣本學習、Transformer等前
    發表于 04-21 15:15

    【飛凌RK3568開發板試用體驗】使用OpenCV進行人臉識別

    RK3568四核Arm Cortex-A55 處理器的主板,從廠商的宣傳看,其主要市場就是人臉識別等視頻和圖像應用。今天就使用OpenCV自帶的DNN模塊進行人臉識別,看看其性能如何。一、Op
    發表于 01-11 22:06

    使用ldquo cv2.dnn.readnet rdquo時,無法從中間表示(IR)讀取網絡怎么解決

    安裝了 opencv-python 無頭 和 openvino 封裝。 隨 Python* 導入 OpenCV* 使用 cv2.dnn.readNet(): cv2.error: Build
    發表于 08-15 07:20

    ?多模態風格遷移——生成更加美麗動人的風格圖像

    基于卷積的圖像風格遷移主要利用兩種方法來對特征進行表示,一種假設全局具有相同分布并用全局特征來表風格,另一種則基于圖像片提取
    的頭像 發表于 05-01 14:11 ?4495次閱讀

    OpenCV新版本4.5.1發布

    ,以方便再網頁中使用,并提供了相關教程。 圖像分類 ? 目標檢測 ? 風格遷移 ? 語義分割 ? 姿態估計 2. OpenCV.js?WASM SIMD?優化 2.0,網頁端調用
    的頭像 發表于 12-31 09:47 ?2538次閱讀

    邊緣環境下DNN應用的計算遷移調度綜述

    深度神經網絡(Deυ Neural Network,DNN)應用對運行設備的性能要求較高,無法直接在計算資源受限的移動設備上運行。通過計算遷移技術將某些計算復雜的神經網絡層遷移到資源豐富的邊緣或者
    發表于 05-10 14:01 ?3次下載

    手把手教你使用LabVIEW OpenCV DNN實現手寫數字識別(含源碼)

    在LabVIEW中如何使用OpenCV DNN模塊實現手寫數字識別
    的頭像 發表于 03-08 16:10 ?1111次閱讀

    手把手教你使用LabVIEW OpenCV dnn實現圖像分類(含源碼)

    使用LabVIEW OpenCV dnn實現圖像分類
    的頭像 發表于 03-09 13:37 ?838次閱讀

    PyTorch教程14.12之神經風格遷移

    電子發燒友網站提供《PyTorch教程14.12之神經風格遷移.pdf》資料免費下載
    發表于 06-05 11:21 ?0次下載
    PyTorch教程14.12之神經<b class='flag-5'>風格</b><b class='flag-5'>遷移</b>

    PyTorch教程-14.12. 神經風格遷移

    的一個方面。要為照片應用理想的風格,您可能需要嘗試多種不同的濾鏡組合。這個過程與調整模型的超參數一樣復雜。 在本節中,我們將利用 CNN 的分層表示將一幅圖像風格自動應用到另一幅圖像
    的頭像 發表于 06-05 15:44 ?451次閱讀
    PyTorch教程-14.12. 神經<b class='flag-5'>風格</b><b class='flag-5'>遷移</b>

    基于OpenCV DNN實現YOLOv8的模型部署與推理演示

    基于OpenCV DNN實現YOLOv8推理的好處就是一套代碼就可以部署在Windows10系統、烏班圖系統、Jetson的Jetpack系統
    的頭像 發表于 03-01 15:52 ?593次閱讀
    基于<b class='flag-5'>OpenCV</b> <b class='flag-5'>DNN</b>實現YOLOv8的模型部署與推理演示
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>