99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

教你如何用OpenCV、Python和深度學(xué)習(xí)技術(shù)對圖像和實時視頻進(jìn)行神經(jīng)風(fēng)格遷移

zhKF_jqr_AI ? 來源:未知 ? 作者:李倩 ? 2018-08-31 09:47 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

編者按:在這篇教程中,作者Adrian Rosebrock將教你如何用OpenCV、Python深度學(xué)習(xí)技術(shù)對圖像和實時視頻進(jìn)行神經(jīng)風(fēng)格遷移。

2015年,Gatsys等人在論文A Neural Algorithm of Artistic Style中提出了最初的神經(jīng)風(fēng)格遷移算法。2016年,Johnson等人發(fā)表了Perceptual Losses for Real-Time Style Transfer and Super-Resolutioin一文,將神經(jīng)網(wǎng)絡(luò)遷移作為用感知損失處理超分辨率問題的框架。結(jié)果表明該算法比Gatys等人的方法快了三倍。接下來,我將介紹如何在自己的圖像和視頻流中應(yīng)用神經(jīng)風(fēng)格遷移。

用OpenCV進(jìn)行神經(jīng)風(fēng)格遷移

首先說明的一點是,今天討論的方法在一個CPU上可以達(dá)到近乎實時的效果,如果在GPU上則完全可以實現(xiàn)實時效果。

首先我們會簡單塔倫下什么是神經(jīng)風(fēng)格遷移,以及它是如何運作的。之后我們會用OpenCV和Python動手操作。

什么是神經(jīng)風(fēng)格遷移?

從左至右:我們的內(nèi)容圖像;風(fēng)格圖像;輸出的風(fēng)格遷移圖像

神經(jīng)風(fēng)格遷移主要有兩個過程:

提取某張圖片的風(fēng)格

將該種風(fēng)格應(yīng)用到另一張圖片上

上圖就是將梵高著名的畫作《星夜》的風(fēng)格應(yīng)用到普通的生活照上,我們保留了原照片中的山、人物和啤酒等所有內(nèi)容,但全部替換成了梵高的油畫風(fēng)格。

問題就是,我們應(yīng)該如何定義一個神經(jīng)網(wǎng)絡(luò),讓它執(zhí)行神經(jīng)風(fēng)格遷移呢?

神經(jīng)風(fēng)格遷移如何工作?

在Gatys等人提出的首篇論文中,神經(jīng)風(fēng)格遷移算法不需要新的架構(gòu)。相反,我們可以用一個預(yù)訓(xùn)練網(wǎng)絡(luò)(通常在ImageNet上進(jìn)行的預(yù)訓(xùn)練),并且定義一個損失函數(shù),能讓我們達(dá)到風(fēng)格遷移的目標(biāo),然后對損失函數(shù)不斷優(yōu)化。

那么,這里的問題就不是“該用什么神經(jīng)網(wǎng)絡(luò)”了,而是“該用什么損失函數(shù)”。

答案包括:內(nèi)容損失、風(fēng)格損失和總變差損失。每個部分都是單獨計算,然后在一個元損失函數(shù)中結(jié)合。通過將元損失函數(shù)最小化,我們將依次對內(nèi)容、風(fēng)格和總變差損失進(jìn)行優(yōu)化。

雖然Gatys等人的方法能生成不錯的神經(jīng)風(fēng)格遷移結(jié)果,但是它的速度非常慢。2016年,Johnson等人在Gatys的基礎(chǔ)上提出的全新算法速度快了三倍,但同時也存在著缺點,即用戶不能隨機(jī)選擇想要應(yīng)用的風(fēng)格圖像。用戶首先要訓(xùn)練一個網(wǎng)絡(luò),生成你想要的風(fēng)格。網(wǎng)絡(luò)訓(xùn)練好后,你可以將它應(yīng)用到任意內(nèi)容圖像上。

然而到了2017年,Ulyanov等人發(fā)表了Instance Normalization: The Missing Ingredient for Fast Stylization一文,他們表示將batch normalization替換成instance normalization(然后在訓(xùn)練和測試時都應(yīng)用instance normalization),可以達(dá)到更快的效果,并且藝術(shù)效果也更好。

項目結(jié)構(gòu)

在開始今天的教程前,請先下載我提供的資料(點擊文末原文地址獲取資料)。準(zhǔn)備好了腳本、模型和圖像后,你可以用tree指令檢查項目的結(jié)構(gòu):

如果你從下載了.zip文件,就無需上網(wǎng)找其他素材了。我在其中提供了很多測試用的圖像和模型。同時還有三種Python腳本。

開始神經(jīng)風(fēng)格遷移

接下來讓我們用OpenCV和Python進(jìn)行神經(jīng)風(fēng)格遷移的實踐。

首先打開neural_style_transfer.py文件,插入如下代碼:

首先,我們導(dǎo)入所需的包并解析命令行參數(shù)。

導(dǎo)入的有:

imutils:這個包可以通過pip install --upgrade imutils安裝。最近我發(fā)布了imutils==0.5.1,所以不要忘記更新!

OpenCV:你需要一個OpenCV 3.4或者更高版本。

該腳本下需要兩個命令行:

--model:神經(jīng)風(fēng)格遷移的模型路徑。在“下載”區(qū)中,我加入了11中經(jīng)過與訓(xùn)練的模型。

--image:需要進(jìn)行風(fēng)格遷移的圖像(輸入圖像)。在其中我放入了四張圖片。

你不需要改變命令行代碼,參數(shù)會在運行過程中進(jìn)行處理。如果你不熟悉這一過程,可以閱讀我另一篇文章:www.pyimagesearch.com/2018/03/12/python-argparse-command-line-arguments/

接下來的部分比較有趣,我們要下載圖像和模型,然后計算神經(jīng)風(fēng)格遷移:

在這部分代碼中,我們進(jìn)行了:

將下載的預(yù)訓(xùn)練神經(jīng)風(fēng)格遷移模型稱為net(第17行);

下載輸入圖像并調(diào)整尺寸(21和22行);

用均值減法創(chuàng)建blob(27和28行);

執(zhí)行forward,獲取output圖像(31行)。

接下來,重要的是對輸出圖像進(jìn)行后處理:

最后一步是將輸出圖像顯示在屏幕上:

神經(jīng)風(fēng)格遷移結(jié)果

當(dāng)你下載好文件后,打開終端執(zhí)行以下命令:

現(xiàn)在,對命令行參數(shù)做簡單改變,然后用《侏羅紀(jì)公園》中的截圖作為內(nèi)容圖像,進(jìn)行風(fēng)格遷移:

另一個例子:

這是我最喜歡的案例,感覺都能當(dāng)做酒吧的裝飾畫了。

實時神經(jīng)風(fēng)格遷移

上面我們講了如何在單一圖像上應(yīng)用風(fēng)格遷移,現(xiàn)在我們要把這一過程放在視頻上。

大致流程和圖像處理差不多,在這一腳本中,我們將:

利用一個特殊的Python迭代器,它可以讓我們在模型路徑中循環(huán)使用所有可用的神經(jīng)風(fēng)格遷移模型。

啟動網(wǎng)絡(luò)攝像頭視頻流,我們會(近乎)實時處理攝像頭的幀。對于某些較大的模型,系統(tǒng)可能會慢一些。

在每一幀上應(yīng)用風(fēng)格遷移,對輸出進(jìn)行后處理,并將結(jié)果顯示在屏幕上。

如果用戶按下“n”鍵,我們將把迭代器循環(huán)運用到下一個神經(jīng)風(fēng)格遷移模型上,不用重啟腳本。

首先,打開neural_style_transfer_video.py文件,插入以下代碼:

之后,創(chuàng)建模型路徑迭代器:

一旦我們開始在while循環(huán)中處理幀,“n”按鍵就會在迭代器中下載“下一個”模型。

為了創(chuàng)建模型迭代器,我們:

搜集所有神經(jīng)風(fēng)格遷移模型并分類(18和19行)

為每種模型分配ID(23行)

利用itertools和cycle創(chuàng)建迭代器(27行)。

讓我們開始下載第一個模型并對視頻進(jìn)行處理:

在32行,我們讀取了第一個模型利用的路徑。在36和37行,啟動了視頻,從攝像頭中采集幀。

之后在幀與幀之間進(jìn)行循環(huán):

接著進(jìn)行后處理并將輸出圖像展示出來:

對按鍵的處理:

兩種不同的按鍵會對腳本運行產(chǎn)生不同的影響:

“n”:抓取下一個模型的路徑和ID,并進(jìn)行下載。如果我們已經(jīng)獲取上一個模型,迭代器就會從頭開始循環(huán)。

“q”:按下q會退出while循環(huán)。

實時風(fēng)格遷移的結(jié)果

執(zhí)行以下命令就可以在視頻上運用風(fēng)格遷移啦:

可以看到,只需要按一個按鍵就能輕松地進(jìn)行循環(huán)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11080

    瀏覽量

    217155
  • 圖像
    +關(guān)注

    關(guān)注

    2

    文章

    1094

    瀏覽量

    41290
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5561

    瀏覽量

    122811

原文標(biāo)題:無需GPU,只用OpenCV和Python實現(xiàn)圖像和視頻的風(fēng)格遷移

文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    何用OpenCV的相機(jī)捕捉視頻進(jìn)行人臉檢測--基于米爾NXP i.MX93開發(fā)板

    本文將介紹基于米爾電子MYD-LMX93開發(fā)板(米爾基于NXPi.MX93開發(fā)板)的基于OpenCV的人臉檢測方案測試。OpenCV提供了一個非常簡單的接口,用于相機(jī)捕捉一個視頻(我用的電腦內(nèi)置
    的頭像 發(fā)表于 04-15 11:51 ?342次閱讀
    如<b class='flag-5'>何用</b><b class='flag-5'>OpenCV</b>的相機(jī)捕捉<b class='flag-5'>視頻</b><b class='flag-5'>進(jìn)行</b>人臉檢測--基于米爾NXP i.MX93開發(fā)板

    BP神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)的關(guān)系

    ),是一種多層前饋神經(jīng)網(wǎng)絡(luò),它通過反向傳播算法進(jìn)行訓(xùn)練。BP神經(jīng)網(wǎng)絡(luò)由輸入層、一個或多個隱藏層和輸出層組成,通過逐層遞減的方式調(diào)整網(wǎng)絡(luò)權(quán)重,目的是最小化網(wǎng)絡(luò)的輸出誤差。 二、深度
    的頭像 發(fā)表于 02-12 15:15 ?867次閱讀

    深度學(xué)習(xí)入門:簡單神經(jīng)網(wǎng)絡(luò)的構(gòu)建與實現(xiàn)

    深度學(xué)習(xí)中,神經(jīng)網(wǎng)絡(luò)是核心模型。今天我們用 Python 和 NumPy 構(gòu)建一個簡單的神經(jīng)網(wǎng)絡(luò)。 神經(jīng)
    的頭像 發(fā)表于 01-23 13:52 ?533次閱讀

    【AI實戰(zhàn)項目】基于OpenCV的“顏色識別項目”完整操作過程

    適用于哪些場景,然后通過Python編寫代碼來實現(xiàn)這些算法,并應(yīng)用于實際項目中,實現(xiàn)圖像的檢測、識別、分類、定位、測量等目標(biāo)。華清遠(yuǎn)見【python+OpenCV
    的頭像 發(fā)表于 12-09 16:42 ?1426次閱讀
    【AI實戰(zhàn)項目】基于<b class='flag-5'>OpenCV</b>的“顏色識別項目”完整操作過程

    一個月速成python+OpenCV圖像處理

    適用于哪些場景,然后通過Python編寫代碼來實現(xiàn)這些算法,并應(yīng)用于實際項目中,實現(xiàn)圖像的檢測、識別、分類、定位、測量等目標(biāo)。本文將介紹一個高效學(xué)習(xí)Python+O
    的頭像 發(fā)表于 11-29 18:27 ?464次閱讀
    一個月速成<b class='flag-5'>python+OpenCV</b><b class='flag-5'>圖像</b>處理

    何用OpenCV的相機(jī)捕捉視頻進(jìn)行人臉檢測--基于米爾NXP i.MX93開發(fā)板

    提供了一個非常簡單的接口,用于相機(jī)捕捉一個視頻(我用的電腦內(nèi)置攝像頭) 1、安裝python3-opencv apt install python3-opencv 2、查看攝像頭支持的格式與分辨率
    發(fā)表于 11-15 17:58

    使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行圖像分類的步驟

    使用卷積神經(jīng)網(wǎng)絡(luò)(CNN)進(jìn)行圖像分類是一個涉及多個步驟的過程。 1. 問題定義 確定目標(biāo) :明確你想要分類的圖像類型,例如貓和狗、不同的植物種類等。 數(shù)據(jù)需求 :確定需要多少數(shù)據(jù)以及
    的頭像 發(fā)表于 11-15 15:01 ?851次閱讀

    深度學(xué)習(xí)中的卷積神經(jīng)網(wǎng)絡(luò)模型

    深度學(xué)習(xí)近年來在多個領(lǐng)域取得了顯著的進(jìn)展,尤其是在圖像識別、語音識別和自然語言處理等方面。卷積神經(jīng)網(wǎng)絡(luò)作為深度
    的頭像 發(fā)表于 11-15 14:52 ?850次閱讀

    如何使用Python構(gòu)建LSTM神經(jīng)網(wǎng)絡(luò)模型

    構(gòu)建一個LSTM(長短期記憶)神經(jīng)網(wǎng)絡(luò)模型是一個涉及多個步驟的過程。以下是使用Python和Keras庫構(gòu)建LSTM模型的指南。 1. 安裝必要的庫 首先,確保你已經(jīng)安裝了Python和以下庫
    的頭像 發(fā)表于 11-13 10:10 ?1584次閱讀

    基于OPENCV的相機(jī)捕捉視頻進(jìn)行人臉檢測--米爾NXP i.MX93開發(fā)板

    本文將介紹基于米爾電子MYD-LMX93開發(fā)板(米爾基于NXPi.MX93開發(fā)板)的基于OpenCV的人臉檢測方案測試。OpenCV提供了一個非常簡單的接口,用于相機(jī)捕捉一個視頻(我用的電腦內(nèi)置
    的頭像 發(fā)表于 11-07 09:03 ?1483次閱讀
    基于<b class='flag-5'>OPENCV</b>的相機(jī)捕捉<b class='flag-5'>視頻</b><b class='flag-5'>進(jìn)行</b>人臉檢測--米爾NXP i.MX93開發(fā)板

    GPU深度學(xué)習(xí)應(yīng)用案例

    GPU在深度學(xué)習(xí)中的應(yīng)用廣泛且重要,以下是一些GPU深度學(xué)習(xí)應(yīng)用案例: 一、圖像識別 圖像識別是
    的頭像 發(fā)表于 10-27 11:13 ?1387次閱讀

    激光雷達(dá)技術(shù)的基于深度學(xué)習(xí)的進(jìn)步

    信息。這使得激光雷達(dá)在自動駕駛、無人機(jī)、機(jī)器人等領(lǐng)域具有廣泛的應(yīng)用前景。 二、深度學(xué)習(xí)技術(shù)的發(fā)展 深度學(xué)習(xí)是機(jī)器
    的頭像 發(fā)表于 10-27 10:57 ?1073次閱讀

    AI大模型與深度學(xué)習(xí)的關(guān)系

    AI大模型與深度學(xué)習(xí)之間存在著密不可分的關(guān)系,它們互為促進(jìn),相輔相成。以下是對兩者關(guān)系的介紹: 一、深度學(xué)習(xí)是AI大模型的基礎(chǔ) 技術(shù)支撐 :
    的頭像 發(fā)表于 10-23 15:25 ?2902次閱讀

    深度識別算法包括哪些內(nèi)容

    深度識別算法是深度學(xué)習(xí)領(lǐng)域的一個重要組成部分,它利用深度神經(jīng)網(wǎng)絡(luò)模型對輸入數(shù)據(jù)進(jìn)行高層次的理解和
    的頭像 發(fā)表于 09-10 15:28 ?845次閱讀

    FPGA在深度神經(jīng)網(wǎng)絡(luò)中的應(yīng)用

    隨著人工智能技術(shù)的飛速發(fā)展,深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network, DNN)作為其核心算法之一,在圖像識別、語音識別、自然語言處理等領(lǐng)域取得了顯著成果。然而,傳統(tǒng)的
    的頭像 發(fā)表于 07-24 10:42 ?1212次閱讀