<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天內不再提示

神經網絡技術在網絡視頻處理的應用探討

倩倩 ? 來源:ZOL中關村在線 ? 2020-04-17 15:10 ? 次閱讀

一、背景:

是一家集產品數據、專業資訊、科技視頻、互動行銷為一體的復合型媒體網站。公司內部每天都要對網站大量的文字,圖片,視頻進行處理。給視頻貼標簽,給文章配圖,分類等等。公司主要是依賴人工來處理這些信息的,但是人工處理存在著工作量大,成本高,效率低的問題。于是公司組建了大數據部門,希望通過科技的手段來緩解人工處理信息的壓力。

機器學習神經網絡(machinelearning):

那么什么樣的科技才能幫到我們呢?首先把目光投向了機器學習,也就是所謂的machinelearning。機器學習簡單的說就是要讓電腦自己學習,就像老師教學生數學題一樣,先給計算機展示一些例子,然后讓計算機自己去做題。希望通過這個理念來訓練計算機思考,代替人力。能夠實現機器學習的算法多種多樣,每種算法都有自己的特點和優劣勢。而我想要重點介紹的一個比較先進的算法,人工神經網絡(ArtificialNeuralNetworks,簡寫為ANNs)。它是一種應用類似于大腦神經突觸聯接的結構進行信息處理的數學模型。神經網絡的是一個較為新的算法概念。其出現使得機器學習有了突飛猛進的進展。人工神經網絡在模式識別、智能機器人、自動控制、預測估計、生物、醫學、經濟等領域已成功地解決了許多現代計算機難以解決的實際問題,表現出了良好的智能特性。而卷積神經網絡(cnn)更是用途最廣的神經網絡之一。它具有一定的抽象能力,可以提取數據的特征,魯棒性較強。也就是說如果同一組數據發生了變化,卷積神經網絡也一樣可以適應這些變化。例如時下流行的人臉識別,新款的iPhone8和iPhoneX應用的正是卷積神經網絡來做到的人臉解鎖。百度搜索引擎也利用了卷積神經網絡實現了精準的黃色,垃圾,恐怖等非法圖片,非法網址的識別。

二、問題的提出:

由于目前谷歌等大型網絡公司對神經網絡的深入研究?,F在卷積神經網絡已經能對文字和圖片的進行識別高效而準確的識別。但是對于視頻內容的識別還處于開始階段。于是我想在卷積神經網絡在視頻信息處理的可行性方面做出一點探究。而這次我把目光投向了游戲視頻。

游戲直播一直都是網絡直播行業的主力軍。而為了保留下精彩瞬間吸引更多觀眾,各大直播平臺也紛紛推出了自己的錄播平臺,上傳自己游戲主播的精彩視頻。但是,將整段整段的錄播內容上傳十分耗費時間,保留這些視頻也十分耗費內存。如果能對視頻進行切割,只保留有游戲的部分,除掉其它與游戲無關部分,將會大大緩解這些問題,并且還能方便看錄像的觀眾跳過等待時間。但是,對視頻進行分段十分耗費人力。中國目前知名的直播平臺douyuTV,僅游戲類主播每天就能產生上千個小時的錄播視頻。人力將無法有效地處理如此龐大的數據量,因此我想嘗試卷積神經網絡是否能對這些游戲視頻做出高效的處理。本文將通過機器學習來建立“絕地大逃殺”這款游戲視頻的卷積神經網絡模型,使其對這款游戲開始,游戲中,和結束3各階段進行識別。

三、問題的研究分析:

實驗對象分析:

絕地大逃殺是一款第一人稱視角射擊類游戲。游戲本身采用了當下比較流行MOBA類游戲模式。既游戲分為一場又一場的比賽,比賽之間相互獨立,且每局比賽有鮮明的開始和結束畫面,便于識別。在這方面與之相類似的還有很多人氣很高的游戲:LeagueofLegend,dota2,Overwatch,等等。如果我能通過機器學習對這款游戲的視頻進行分段,那么說明對其他游戲這類游戲也同樣可行。

算法分析:

現在存在著很多種卷積神經網絡,而我下面想要重點介紹2D卷積神經網絡,和3d卷積神經網絡。這兩類卷積神經網絡擅長于捕捉數據的特點并對其進行分類,正是我需要的算法。

2D卷積神經網絡:

2D卷積神經網絡比傳統神經網絡多出的部分就是卷積層和采樣層。比如我們想識別所有帶有狗的圖片,而現在輸入層是就是一張帶有狗的圖片。想要讓神經網絡理解什么是狗,我們先要大致預測這張照片展現了多少狗的特征,這就是卷積的含義了。如上圖所示,如果我預測狗有40個特征,那么這一張照片將被分成40份(c1層),分別做檢測,每一份檢測一個特征。但是由于機器的限制,第一次卷積每一個特征的大小都是相同的,也就是說第一次卷積可能只檢測到5x5像素大小的狗的特征。而還有一些狗的更大的特征無法被檢測。于是我們要降采樣。保留c1層檢測到的特征的位置,把沒有特征的像素去掉。我們得到了一張更模糊的圖片(s1層),然后對這張更模糊的圖片再次卷積,然后再降采樣,如此往復,直到圖片的像素少到難以判斷這是什么的時候。最后一步,把所有最后一層的小圖片們中的像素展開,形成一列,這一過程就是上圖的全連接。把它們輸入傳統人工神經網絡分析,得到輸出,這到底是不是狗。

3D卷積神經網絡:

3D卷積神經網絡和2D卷積神經網絡的思路相似,都是通過不斷卷積,再降采樣來識別輸入數據的特征。但是與2D-cnn不同的是,3D-cnn側重于識別連續樣本中特征連續變化的特征。也就是說3D-cnn比較擅長處理連續變化的數據。所以3D-cnn多用于視頻識別。如上圖所示的是3D-cnn的卷積過程。首先把視頻按照幀數輸入到一個3維矩陣中。由于輸入層是一個3維矩陣,那么卷積所要捕捉的特征也會是3維的。假設我想捕捉在連續五幀里5x5像素大小的特征,那么卷積核就的大小就是一個5x5x5的三維矩陣。最后的輸出是上圖的“輸出特征圖”,對應2D-cnn的C1層中的某一層。

四、問題的解決及驗證:

目前看來比較主流的處理視頻的算法是3d卷積神經網絡,這次我采用的是傳統的2d卷積神經網絡,以下是我的分析。

雖然說3d卷積神經網絡在能更好的識別視頻中連續幀所包含的信息。然而,游戲視頻有自己的一些特性。在游戲開始,進行,和結束階段,視頻畫面往往會有很大的差異,例如“絕地大逃殺”這款游戲,游戲開始時玩家屏幕中會有一架飛機:

而游戲結束時顯示的是計分板:

大部分游戲都會有這種鮮明的畫面對比來告知玩家游戲開始,或結束了。所以用2d神經網絡倆對這些幀做識別較為合適。3d卷積神逐幀會對視頻逐幀分析,捕捉到視頻的動態特點,但這些特點對視頻截取沒有額外的幫助。權衡之下我采用了傳統2d卷積神經網絡。通過對游戲中這些關鍵幀的識別來達到對游戲內容分段的效果。

然而2d神經網絡也存在自己的問題。我第一次訓練的時候從兩個游戲視頻中截取了532張圖片做訓練,結果損失函數很快地就收斂了,準確率也一直高地驚人,僅僅10次訓練就達到了100%。但是當我用該模型測試一段全新的視頻時,準確率確只有65%左右。經過反復思考,我發現問題產生在我用于做訓練的視頻太少,而我截取的樣本容量卻太多。雖然通過密集地截取視頻幀數可以獲得大量的訓練樣本,但是這些樣本存在很大問題。鄰近幀數的圖片往往差異比較小,將這些差異極小的圖片大量地輸入神經網絡會導致訓練的準確率虛高,且模型容易訓練過度。因此,這次我在訓練時特別注意了這個細節,找到了12段不一樣的視頻,只截取了1000張左右的圖片。

搭建神經網絡:

所有激活函數均采用了ReLU函數來作為激活函數,以便加速收斂。卷積神經模型,分3層卷積網絡。每層提取8x8大小的特征40個,每次卷積完后用2x2大小的filter進行maxpool。最后展開層有5400個神經元,算上輸入層一共有7層。

Input:(3,68,120)float32

layer0:cnn1/Relu:0(68,120,40)float32

layer1:pool1:0(34,60,40)float32

layer2:cnn2/Relu:0(34,60,40)float32

layer3:pool2:0(17,30,40)float32

layer4:cnn3/Relu:0(17,30,40)float32

layer5:pool3:0(9,15,40)float32

layer6:flatten:0(5400,)float32

接下來對有5400個神經元的展開層后面加一個50%dropout率的Dropout層。接下來第8,10,12層為全連接層,9,11層又是Dropout層,Dropout率均為50%。12層為輸出層,輸出3個值為某一幀是游戲開始,游戲中,游戲結束可能性的參數。

layer7:drop1/mul:0(5400,)float32

layer8:relu1/Relu:0(5000,)float32

layer9:drop2/mul:0(5000,)float32

layer10:relu2/Relu:0(1024,)float32

layer11:drop3/mul:0(1024,)float32

layer12:output/Identity:0(3,)float32

增加dropout層可以大大減少模型對樣本容量的需求,而且也可以防止過度訓練。

最后,訓練將采用minibatch來提高訓練的速度。每十組數據分為一個batch。所以真正訓練時的神經網絡比上述的神經網絡每一層都多一維度,且該維度一直為10,例如輸入層大小為(10,3,68,120)。

訓練:

本次實驗在本人自己的工作電腦本上進行。Intel(R)Core(TM)i7-6700HQCPU@2.6Hz,英偉達GTX970顯卡。12個游戲視頻作為訓練樣本,這些視頻全部來自于www.bilibili.com,從視頻中以游戲開始,游戲進行,游戲結束這3個階段較為平均地抽取了1013張截圖作為訓練樣本。這些圖片又被以7:3的比例分為訓練組和驗證組。取幀軟件為Windows自帶的ffmpeg,截取下的圖片大小為1280*720,為了減少內存的壓力,用numpy把圖片轉換成120*68的大小。搭建神經網絡時使用python作為編程語言,主要應用tensorflow和tensorlayer來進行神經網絡的搭建。

由于鄰近幀數的畫面可能會彼此之間十分相似,當這相似的兩張圖片分別被分進了訓練組和驗證組便會導致驗證組的準確率虛高。所以為了減少這種情況干擾模型的準確率,驗證組中的畫面全部來自于與訓練組不同的游戲視頻。訓練時將對這1013張圖片反復訓練200次,每過10次,輸出一次訓練組和驗證組的損失參數和準確率。

結果:

訓練結果由下圖看可見。橫軸坐標中從2到21,每個數據代表著10次運算后的平均值。只有橫坐標為1時,代表了訓練了一次之后所得的結果。

損失函數:

準確率:

除去第一組數據后的損失函數:

除去第一組數據后的準確率函數:

在200次循環計算過程中平均每次循環花費3.292319秒,整個程序大約耗時12分鐘。

五、總結:

對比驗證組數據和訓練組數據,可以發現兩者之間存在的差異較小,說明搭建的模型比較真實的捕捉到了游戲中3個階段的特點,說明該2D-cnn模型克服了鄰近幀相似的問題。

從200次循環得到的數據來看,損失函數和準確率函數均有收斂的趨勢。但是在訓練樣本只有12個視頻的情況下再進行更多的重復訓練也不會更加提高模型的準確率,反而有可能過度訓練。由于一個人力量有限,無法提供更多的訓練樣本。如若能有更多的訓練樣本和更好的硬件設備,相信可以訓練出更加準確的模型來模仿這款游戲的進程從而對其進行分段。由此可見,通過2d卷積神經網絡來對游戲視頻進行分段是完全可行的。

如果以后這個算法被改良后用于視頻分段和視頻截取,將大大節省人工處理視頻的時間。目前我的程序處理1000左右幀的圖片需要話費約3.2秒,1000/3.2也就是312.5幀每秒。而一般人眼可有效識別的幀數的頻率大概是24幀每秒。由此可見神經網絡的運算速度遠遠高于人工的速度,約為人工的13倍。如果這種視頻分段方法被加以利用,可以大大減少人工時間。

此外除了對視頻進行簡單的分類,截取。對于特定游戲視頻加入對某些特點畫面的識別,例如許多游戲都有計分板,記錄玩家得分,對它們進行識別可以大致判斷玩家在這段視頻中的表現。又或者一些低概率發生的事件,發生時游戲畫面也會發生特定的變化。神經網絡完全可以識別這些細節,然后再對整個視頻的精彩程度加以判斷,把精彩的游戲視頻推送給感興趣的人。我們甚至還可以加入聲音的識別,對截取的視頻配上字幕,方便聽力不好的觀眾觀看。

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

    關注

    42

    文章

    4584

    瀏覽量

    99073
  • 函數
    +關注

    關注

    3

    文章

    4049

    瀏覽量

    61391
  • 機器學習
    +關注

    關注

    66

    文章

    8156

    瀏覽量

    130776
收藏 人收藏

    評論

    相關推薦

    神經網絡教程(李亞非)

      第1章 概述  1.1 人工神經網絡研究與發展  1.2 生物神經元  1.3 人工神經網絡的構成  第2章人工神經網絡基本模型  2.1 MP模型  2.2 感知器模型  2.3
    發表于 03-20 11:32

    【PYNQ-Z2試用體驗】基于PYNQ的神經網絡自動駕駛小車 - 項目規劃

    ,神經網絡技術的第三次發展浪潮仍在繼續,在其背后,高性能CPU、GPU和FPGA、ASIC以強大的算力為技術的應用落地提供了有力的支持。然而目前基于FPGA平臺搭建神經網絡作為控制器,適合我們自己動手實現
    發表于 03-02 23:10

    卷積神經網絡如何使用

    卷積神經網絡(CNN)究竟是什么,鑒于神經網絡在工程上經歷了曲折的歷史,您為什么還會在意它呢? 對于這些非常中肯的問題,我們似乎可以給出相對簡明的答案。
    發表于 07-17 07:21

    【案例分享】ART神經網絡與SOM神經網絡

    今天學習了兩個神經網絡,分別是自適應諧振(ART)神經網絡與自組織映射(SOM)神經網絡。整體感覺不是很難,只不過一些最基礎的概念容易理解不清。首先ART神經網絡是競爭學習的一個代表,
    發表于 07-21 04:30

    人工神經網絡實現方法有哪些?

    人工神經網絡(Artificial Neural Network,ANN)是一種類似生物神經網絡的信息處理結構,它的提出是為了解決一些非線性,非平穩,復雜的實際問題。那有哪些辦法能實現人工神經
    發表于 08-01 08:06

    如何設計BP神經網絡圖像壓縮算法?

    神經網絡的并行特點,而且它還可以根據設計要求配置硬件結構,例如根據實際需要,可靈活設計數據的位寬等。隨著數字集成電路技術的飛速發展,FPGA芯片的處理能力得到了極大的提升,已經完全可以承擔神經
    發表于 08-08 06:11

    怎么設計ARM與神經網絡處理器的通信方案?

    人工神經網絡在很多領域得到了很好的應用,尤其是具有分布存儲、并行處理、自學習、自組織以及非線性映射等特點的網絡應用更加廣泛。嵌入式便攜設備也越來越多地得到應用,多數是基于ARM內核及現場可編程門陣列
    發表于 09-20 06:15

    怎么解決人工神經網絡并行數據處理的問題

    本文提出了一個基于FPGA 的信息處理的實例:一個簡單的人工神經網絡應用Verilog 語言描述,該數據流采用模塊化的程序設計,并考慮了模塊間數據傳輸信號同 步的問題,有效地解決了人工神經網絡并行數據
    發表于 05-06 07:22

    如何構建神經網絡?

    原文鏈接:http://tecdat.cn/?p=5725 神經網絡是一種基于現有數據創建預測的計算系統。如何構建神經網絡?神經網絡包括:輸入層:根據現有數據獲取輸入的層隱藏層:使用反向傳播優化輸入變量權重的層,以提高模型的預測
    發表于 07-12 08:02

    卷積神經網絡一維卷積的處理過程

    以前的神經網絡幾乎都是部署在云端(服務器上),設備端采集到數據通過網絡發送給服務器做inference(推理),結果再通過網絡返回給設備端。如今越來越多的神經網絡部署在嵌入式設備端上,
    發表于 12-23 06:16

    圖像預處理和改進神經網絡推理的簡要介紹

    為提升識別準確率,采用改進神經網絡,通過Mnist數據集進行訓練。整體處理過程分為兩步:圖像預處理和改進神經網絡推理。圖像預處理主要根據圖像
    發表于 12-23 08:07

    卷積神經網絡模型發展及應用

    神經網絡已經廣泛應用于圖像分類、目標檢測、語義分割以及自然語言處理等領域。首先分析了典型卷積神經網絡模型為提高其性能增加網絡深度以及寬度的模型結構,分析了采用注意力機制進一步提升模型性
    發表于 08-02 10:39

    卷積神經網絡為什么適合圖像處理?

    卷積神經網絡為什么適合圖像處理?
    發表于 09-08 10:23

    神經網絡技術(原理篇)

    本文介紹了神經網絡的信息處理原理、基本結構以及神經網絡的數學模型,簡單闡述了神經網絡如何進行學習和信息處理,并且通過例子說明
    發表于 04-20 16:44 ?5次下載

    卷積神經網絡的應用 卷積神經網絡通常用來處理什么

    的前饋神經網絡,卷積神經網絡廣泛用于圖像識別、自然語言處理、視頻處理等方面。本文將對卷積神經網絡
    的頭像 發表于 08-21 16:41 ?4155次閱讀
    亚洲欧美日韩精品久久_久久精品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>