視頻中品牌識別系統及其實現方法與流程
2023-10-20 19:34:37 3

本發明涉及一種在一段視頻中自動地檢測品牌logo空間位置的品牌識別技術,具體地說是一種視頻中品牌識別系統及其實現方法。
背景技術:
視頻內品牌識別技術是在一段視頻中自動地檢測品牌logo的空間位置,並且在接下來的時間裡,自動地跟蹤該logo的運動軌跡,並且識別出該logo所屬品牌的一種技術,涉及到圖像處理、計算機視覺、模式識別、人工智慧等前沿技術。
技術實現要素:
本發明為解決上述技術問題而採用的技術方案是提供一種視頻中品牌識別系統及其實現方法,其中,具體技術方案為:
系統包含檢測識別模塊、實時跟蹤模塊、後處理模塊;
檢測識別模塊有2個核心模塊:rpn網絡、分類網絡,檢測識別模塊進行兩個步驟,第一個步驟為離線的訓練出模型,第二個步驟是根據訓練得到的模型,進行輸入圖片的inference,即檢測識別logo;
實時跟蹤模塊包含算法調度模塊、通用的高性能多線程調度模塊、基於簡單工廠模式封裝的各種算法模塊、高性能鏡頭切換檢測模塊;通用的高性能多線程調度模塊、基於簡單工廠模式封裝的各種算法模塊、高性能鏡頭切換檢測模塊默認配置為使能的部分,當算法調度模塊沒有被使能的時候,默認是執行的這個部分,即默認的配置;
後處理模塊為了將檢測和跟蹤的結果進行融合,並通過投票得到一個個含有統一識別信息的序列,得到這種結構化信息後,存入json文件或者資料庫;
檢測、跟蹤結果融合:系統由於同時運行了檢測識別模塊和實時跟蹤模塊,所以有可能既有檢測結果又有跟蹤結果,採取如下策略:
1)當跟蹤框和檢測框的iou大於設定值時,認為這個時候該跟蹤框和該檢測框描述的是同一個logo,這個時候信任的是檢測結果,將跟蹤器進行初始化,初始化的位置採用這個檢測的boundingbox;
2)當檢測到的某一個框與跟蹤到的任何一個boundingbox均小於設定值時,這個時候認為該跟蹤框和該檢測框描述的是不是同一個logo,那麼該跟蹤器繼續跟蹤該目標,同時由於檢測到了一個新的目標,所以新初始化一個跟蹤器來跟蹤該目標;
3)投票:最終生成一個個序列後,序列中的每一個目標均來自跟蹤或者檢測結果,對於到底應該給這個序列統一打個什麼樣的label採用加權平均的方式作出最終判斷該序列為哪種label的序列;
4)將結構化的識別數據輸出:根據我們的應用的不同可以將其輸出到json文件中或者資料庫中。
上述的視頻中品牌識別系統及其實現方法,其中:
系統還包含視頻前處理模塊,視頻前處理模塊將視頻解碼出來,處理成一種合乎格式的視頻幀後,送入檢測識別模塊和實時跟蹤模塊;視頻前處理模塊通過如下方式進行質量矯正;
1)視頻解碼:調用opencv3.1的解碼器直接進行視頻解碼,提取出相應的視頻幀;
2)resize、灰度化:根據檢測識別模塊和實時跟蹤模塊的要求,對解碼後的視頻幀進行resize和灰度化的操作;
3)直方圖均衡化:如果檢測到輸入的圖像存在過曝或者弱曝的情況,這個時候就會進行直方圖均衡化的操作,分布不均,這個時候進行本操作來對圖片質量或者說對比度進行提升;
4)去噪:對於檢測到的輸入圖像的噪點,採用雙邊濾波器來降噪並保留原始視頻幀的細節信息,採取方法是求其圖像局部的方差以及圖像的局部的拉普拉斯高頻分量,如果大於一定閾值,說明噪聲過大,需要進行去噪操作。
上述的視頻中品牌識別系統及其實現方法,其中:
算法調度模塊:
1)根據xml進行默認值配置;
2)由於不同跟蹤算法的優勢劣勢互不相同,根據場景識別或者提前xml配置,在程序中進行動態的跟蹤器選取。
上述的視頻中品牌識別系統及其實現方法,其中:
通用的高效多線程調度模塊,支持多進程,需要一個參數的配置,只需要根據xml配置文件進行一個flag的配置,系統當前默認是設置成多線程的,根據實驗數據,多線程調度比多進程調度效率快3-4%。
上述的視頻中品牌識別系統及其實現方法,其中:
基於簡單工廠模式的跟蹤算法模塊包含四種;
tld-lite;
m-kerneltracker;
asmsbased;
facetracker;
1)m-kerneltracker,在原算法的基礎上加入了7個scale的跟蹤,並且進行了優化,包括根據目標大小動態resize,浮點轉定點;tracker算法是基於kcf;
a加入了對被跟蹤物體scale變化的支持
b給原圖像加擾動,以提高其在跟蹤過程中對環境的適應能力;
c對算法進行了優化,包括根據目標大小動態resize,浮點轉定點,採用了快速傅立葉變換(fft)進行加速,部分關鍵代碼使用了intel的sse2指令集進行了加速;
2)tld-lite,去掉了學習和檢測模塊,利用tld的跟蹤模塊,將trackingpoint的選取由陣列式選取該為先根據梯度的模值大小來提取特徵點,然後再進行跟蹤,降低選取到無效的特徵點的可能性;
3)asmsbased,基於meanshift的算法,支持單scale的跟蹤;
4)facetracker,基於人臉特徵點的跟蹤,在facetracker中加入了速度極快的人臉檢測,從而使得其具備了跟蹤分數過低時候,自動使用facedetection進行re-detect,從而對跟蹤軌跡進行了糾正,如果無法檢測到人臉,若干幀後,即判斷為目標丟失。
上述的視頻中品牌識別系統及其實現方法,其中:
高性能鏡頭切換檢測算法模塊:
有兩個核心模塊,直方圖匹配模塊與s-kernel(smeanssinglescale)跟蹤模塊,首先,進行前後兩幀的直方圖匹配,得到一個分數,如果這個分數過低或者圖像本身的灰度極低,為了支持兩個鏡頭之間插入黑色幀則立即判斷為鏡頭切換。否則,根據直方圖匹配的分數對s-kernel全場景跟蹤模塊的學習率進行調整:直方圖匹配分數高,則調高s-kerneltracker學習率;反之,亦然;這樣做的原理是如果直方圖分數匹配較高,那麼說明當前可能沒有發生鏡頭切換,這個時候調高了s-kernel。
上述的視頻中品牌識別系統及其實現方法,其中:
檢測識別模塊是基於深度神經網絡的解決方案,使用基於deeplearning的logo檢測/識別算法,並且,基於pvanet深度學習網絡來滿足視頻內logo檢測的獨特需求,訓練方法為end2end。
上述的視頻中品牌識別系統及其實現方法,其中:
end2end訓練共229類logo,使用ap/map來度量準確率與召回率,目前的229類的map=97.31%,單幀檢測速度150ms/frame,視頻處理時間比0.5,每10幀進行一次logo檢測/識別。
上述的視頻中品牌識別系統及其實現方法,其中:
pvanet是基於faster-rcnn的一種新的detection方法,目的在提高精度的同時進行加速,根據需求對於pvanet進行了以下改進:
1)將pvanet整合進faster-rcnn中進行end2end訓練,backbone使用的是pvanet;pvanet是用於分類的一個網絡,所以必須將其整合進faster-rcnn的框架後才能支持檢測+識別;
2)在消除誤檢方面,同時採取了兩種措施:第一種是將在線地全圖取負樣本(ohem)整合進框架中,第二種是採取自舉的方式,離線地通過多次迭代,定點清除誤檢;
3)利用pvanet+ohem的特點調整了數據集,使得數據集中除了標註的logo外,不存在其他幹擾的logo類別,使得map從0.953提高至0.970;
4)通過減小pooling層的stride來增加featuremap的大小來滿足對小物體的檢測需求;經過這個措施後,map達到了新高0.9731;
5)在4)的基礎上,對視頻進行分割區塊,再結合原圖的檢測。
上述的視頻中品牌識別系統及其實現方法,其中:
視頻中品牌識別系統其實現方法為:
當視頻輸入進來時,首先進行了視頻前處理,進行視頻解碼、視頻圖像處理、包括resize、直方圖均衡化、去噪操作,目的是為了將解碼出來的視頻幀以一種合適的方式送入檢測識別模塊和實時跟蹤模塊;
其次,經由前處理處理過後的幀輸入到檢測識別模塊中,對品牌logo的檢測和識別是同時進行,如果在某一幀中檢測和識別到了logo,即得到了其位置信息,那麼在這一幀就初始化跟蹤器,並且在接下來的視頻序列中對這個檢測到的logo進行跟蹤,直到發生跟蹤丟失的情況或者發生了鏡頭切換,至此一個跟蹤序列結束;
同一幀的畫面中同時跟蹤多個目標,每檢測識別一次卻需要150ms,並採用了加速方法,每隔十幀才檢測識別一次;
接下來,在每十幀的時候有可能既有檢測結果又有跟蹤結果,那麼就牽扯到融合,在融合之後,便得到了一個個logo序列,每一個序列都包含如下信息:序列開始幀號、序列結束幀號、幀數、位置、識別的類別號、識別的置信度或者說分數;於是,為了得到最終的識別結果,需要一個投票操作;經過了這個投票操作後,對於每一個序列均會得到一個統一的label、一個統一的分數;至此經過對整個視頻的掃描後,對這個視頻內的品牌信息已經分析完畢;
最後,將結構化的視頻數據寫入到json文件中或者資料庫中,輸入一個視頻,經過系統,輸出一個結構化的識別結果。
本發明相對於現有技術具有如下有益效果:
本發明專利申請方案提出了一種視頻中品牌識別系統及其實現方法,該系統可提供實時(30-60幀/秒)、高準確率的視頻內品牌檢測、品牌跟蹤以及品牌識別功能,可有效檢測、跟蹤、識別大於8*8像素的logo,能夠應對複雜場景以及光照變化,並支持自適應logo形變、尺度縮放、部分遮擋、跟蹤丟失檢測、多目標的同時檢測、跟蹤、識別,在此基礎上生成了結構化的視頻內logo序列描述信息(json格式,也可選存入資料庫),從而根據業務實際需要可以使用在品牌曝光度分析、自動廣告投放等應用中,顯著地提高了視頻端的交互體驗。經過實際測量,在nvidiam40gpu上可以達到約0.5:1的處理速度(即1小時的視頻,0.5小時處理完畢),可共支持229種不同品牌的logo種類。
附圖說明
圖1為視頻中品牌識別系統及其實現方法的整體框圖;
圖2為跟蹤模塊的整體框圖;
圖3為高性能鏡頭切換算法模塊的示意圖;
圖4為檢測識別模塊的框架圖。
具體實施方式
下面結合附圖和實施例對本發明作進一步的描述。
本發明專利申請方案提出的視頻中品牌識別系統及其實現方法,硬體環境為:視頻中品牌識別系統部署在阿里雲上,主要伺服器硬體配置是nvidiam40gpu,intelxeon處理器,8g內存。部署語言為c++,其中網絡訓練語言為python、c++,基於的深度學習框架為caffe。作業系統為linuxubuntu15.04。
首先了解一下該系統的整體框架,然後再來了解一下各個模塊的算法以及有哪些創新點。附圖1是當前我們系統的整體框圖。我們可以看到該系統整體框架主要包含4個核心模塊:視頻前處理模塊、檢測識別模塊、實時跟蹤模塊、後處理模塊。其中檢測識別模塊與實時跟蹤模塊是我們介紹的重點。
首先簡要地了解一下該系統:在圖中我們可以看到,當視頻輸入進來時,我們首先進行了視頻前處理,簡單地將視頻前處理模塊依次包括如下:視頻解碼、視頻圖像處理、包括resize、直方圖均衡化等、去噪等操作,我們進行這一步的目的是為了將解碼出來的視頻幀以一種合適的方式送入我們的檢測識別模塊和實時跟蹤模塊。其次,經由前處理處理過後的幀輸入到檢測識別模塊中,顧名思義,在這裡我們對品牌logo的檢測和識別是同時進行的。如果在某一幀中我們檢測和識別到了logo,即我們得到了其位置等信息,那麼在這一幀我們就初始化我們的跟蹤器,並且在接下來的視頻序列中對這個檢測到的logo進行跟蹤,直到發生跟蹤丟失的情況或者發生了鏡頭切換,至此一個跟蹤序列結束。我們的跟蹤器目前最多支持8路,也就是說,同一幀的畫面中至多同時跟蹤8個目標。這裡注意,由於跟蹤器運行比較快(實時),而相對而言,我們每檢測識別一次卻需要150ms,由於幀間變化有限,所以這裡採用了一個加速方法:每隔十幀才檢測識別一次。接下來,我們可以看到,在每十幀的時候我們有可能既有檢測結果又有跟蹤結果,那麼就牽扯到一個融合的問題。在融合之後,我們便得到了一個個logo序列,顯然,這個每一個序列都包含如下信息:序列開始幀號、序列結束幀號、幀數、位置、識別的類別號、識別的置信度或者說分數等等。於是,我們為了得到最終的識別結果,需要一個投票操作。經過了這個投票操作後,我們對於每一個序列均會得到一個統一的label、一個統一的分數。至此經過對整個視頻的「掃描」後,我們對這個視頻內的品牌信息已經全部分析完畢。最後,我們會將這些結構化的視頻數據寫入到json文件中或者資料庫中。簡單的理解就是,輸入一個視頻,經過我們的系統,輸出一個結構化的識別結果。
我們先簡單介紹一下前處理模塊和後處理模塊,緊接著我們重點介紹一下檢測識別模塊和實時跟蹤模塊。
1.視頻前處理模塊
一言以蔽之,視頻前處理模塊目的是為了將視頻解碼出來,處理成一種合乎需求的視頻幀後,送入我們的檢測識別模塊和實時跟蹤模塊。很顯然,跟照片比起來,視頻更容易出現質量不佳的情況,所以我們針對此種情況,使用了簡單的質量矯正。
視頻解碼:這個很簡單,我們直接調用opencv3.1的解碼器直接進行視頻解碼,提取出相應的視頻幀。
resize、灰度化:我們會根據檢測識別模塊和實時跟蹤模塊的不同要求,對解碼後的視頻幀進行resize和灰度化的操作。具體是,檢測識別模塊需要三通道的彩色圖,並且我們將輸入的幀resize到短邊為640像素,並且長邊不超過1024,並且保證為32的整數倍。對於跟蹤模塊,我們統一resize到640x480的像素級別,並且輸入有可能是單通道的灰度圖(根據具體自動調用的跟蹤算法而不同)。
直方圖均衡化:如果我們檢測到輸入的圖像存在一定程度上過曝或者弱曝的情況,這個時候就會進行直方圖均衡化的操作。如何判斷該圖像存在過曝或者弱爆的情況?我們僅僅需要將這張圖片的直方圖求出,如果大部分像素都分布在直方圖的較低的位置或者較高的位置,簡言之,分布極為不均,這個時候我們就進行這個操作來對圖片質量或者說對比度進行一定的提升。
去噪:如果我們檢測到輸入圖像的質量較差,通常表現為噪點過大,這個時候我們會採用一個常用的處理方法:雙邊濾波器,來既降噪又最大程度的保留原始視頻幀的細節信息。我們這裡採取了一個方法就是求其圖像局部的方差以及圖像的局部的拉普拉斯高頻分量,如果大於一定閾值,說明噪聲過大,需要進行去噪操作。
2.後處理模塊
後處理模塊主要是為了將檢測和跟蹤的結果進行融合,並通過投票得到一個個含有統一識別信息的序列,得到這種結構化信息後,存入json文件或者資料庫。
檢測、跟蹤結果融合:在每十幀的時候我們由於同時運行了檢測識別模塊和實時跟蹤模塊,所以,有可能既有檢測結果又有跟蹤結果,那麼就牽扯到一個融合的問題:到底是取檢測的結果還是取跟蹤的結果?換句話說,我們更相信哪個結果是正確的?我們採取了如下策略:
1)當跟蹤框和檢測框的iou大於0.5時,我們認為這個時候該跟蹤框和該檢測框描述的是同一個logo,這個時候我們更信任的是檢測結果:我們會將跟蹤器進行初始化,初始化的位置採用這個檢測的boundingbox。
2)當檢測到的某一個框與跟蹤到的任何一個boundingbox均小於0.5時,這個時候我們認為該跟蹤框和該檢測框描述的是不是同一個logo,那麼該跟蹤器繼續跟蹤該目標,同時由於檢測到了一個新的目標,所以我們新初始化一個跟蹤器來跟蹤該目標。
投票:我們最終生成一個個序列後,很顯然序列中的每一個目標均來自跟蹤或者檢測結果,我們到底應該給這個序列統一打個什麼樣的label呢?我們來舉一個小小的例子幫助理解,假設我們得到的某個序列有10個目標,其中有6個跟蹤結果,4個檢測結果,我們首先排除跟蹤結果,在4個檢測結果中,有2個百事可樂(分數分別為0.7,0.8),2個可口可樂(分數分別為0.6,0.7),我們可以採用加權平均的方式,最終判斷該序列為一個百事可樂的序列:(0.7+0.8)/2>(0.6+0.7)/2,以此同時,我們將這個序列的置信度或者說分數置為0.75。
將結構化的識別數據輸出:根據我們的應用的不同可以將其輸出到json文件中或者資料庫中。
3.實時跟蹤模塊
我們先來了解一下實時跟蹤模塊的框架。附圖2是當前我們實時跟蹤系統的整體框圖。我們可以看到如下框架主要有4個核心模塊:算法調度模塊、通用的高性能多線程調度模塊、基於簡單工廠模式封裝的各種算法模塊、高性能鏡頭切換檢測模塊。其中虛線裡面的部分是我們默認配置為使能的部分,也就是說當我們的算法調度模塊沒有被使能的時候,默認是執行的這個部分,即默認的配置。算法調度模塊、通用的高性能多線程調度模塊、基於簡單工廠模式封裝的各種算法模塊、高性能鏡頭切換檢測模塊
算法調度模塊:
1)根據xml進行默認值配置
2)由於不同跟蹤算法的優勢劣勢互不相同,比如kcf對於光照比較魯棒,而asms由於是利用了三通道信息,對於光照不太變化的場景效果好,速度快。所以根據場景識別或者提前xml配置,在程序中進行動態的跟蹤器選取,比如說如果是mtv場景,我們就調用kcfbased跟蹤算法,如果是訪談類節目我們就調用asms跟蹤算法。再比如說,如果我檢測到了人臉,並且對速度要求不高的情況下,可以調用專用的人臉跟蹤器。
通用的高效多線程調度模塊:
這是我們研發的一款通用的高效多線程調度模塊。通用(無論何種任務都,只要封裝成符合接口標準,都可以加入)、高性能(線程池、信號量)。我們不僅僅局限於算法的優化,這種通用的高性能多線程調度模塊,將會極大的提升整體架構的性能。雖然這裡我們看到了「多線程」關鍵字,但是該模塊也是支持多進程的,僅僅需要一個參數的配置:只需要根據xml配置文件進行一個flag的配置即可。該系統當前默認是設置成多線程的,因為根據實驗數據,多線程調度比多進程調度效率快了3~4%。
基於簡單工廠模式的跟蹤算法模塊
基於簡單工廠模式封裝的各種算法:目前我們共重點研究了4種:
tld-lite
m-kerneltracker
asmsbased
facetracker
眾所周知,objecttracking領域百花齊放百家爭鳴,並沒有像objectdetection領域一樣基本上已經由deeplearning算法一統江湖,事實上歷史上objecttracking作為最著名的「坑」長期困擾學術界、工業界,從來沒有一種流派或者方法能在objecttracking領域獨領風騷。反觀objectdetection,vjharr-like級聯分類器方法、svm、deeplearning這三種方法在不同時期都取得了統治地位。在詳細的研究了競賽vot2014和vot2015的基礎下,結合我們業務的實際情況,重點的選擇和改進了這幾種方法。接下來重點介紹一下各個算法的改進:
1.m-kerneltracker:在原算法的基礎上加入了7個scale的跟蹤,並且進行了優化,包括根據目標大小動態resize,浮點轉定點等等。這個tracker算法是基於kcf的。並且主要在如下方面進行了創新:
1)加入了對被跟蹤物體scale變化的支持;
2)實際上這裡會給原圖像加一些擾動,比如噪聲、光照、白化之類以提高其在跟蹤過程中對環境的適應能力,使得學習到的模板更為魯棒。具體這裡添加哪種擾動是根據應用來的,默認是僅僅進行了類似於直方圖均衡化的簡單處理。
3)對算法進行了優化,包括根據目標大小動態resize,浮點轉定點等等。並且採用了快速傅立葉變換(fft)進行加速。並且部分關鍵代碼使用了intel的sse2指令集進行了加速。
2.tld-lite:去掉了學習和檢測模塊,僅僅利用tld的跟蹤模塊。並且將trackingpoint的選取由陣列式選取該為先根據梯度的模值大小來提取特徵點,然後再進行跟蹤。這樣的好處是可以降低選取到無效的特徵點的可能性,進而更好的跟蹤。
3.asmsbased:這是一個基於meanshift的算法,速度極快,我們又進行了簡化從而也支持單scale的跟蹤。
4.facetracker:基於68個人臉特徵點的跟蹤,特點是跟蹤人臉可以達到像素級的穩定,缺點是速度較慢。我們在facetracker中加入了速度極快的人臉檢測(基於pico算法),從而使得其具備了跟蹤分數過低時候,自動使用facedetection進行re-detect,從而對跟蹤軌跡進行了糾正。當然,這個時候如果無法檢測到人臉,若干幀後,即判斷為目標丟失。
高性能鏡頭切換檢測算法模塊
雖然現在基本上只是使用在跟蹤大模塊中,用於判斷跟蹤物體丟失。但是,實際上這是一個通用的鏡頭切換檢測模塊,可以無差別的應用於其他項目或者領域。
這是我們研發的一款鏡頭切換算法模塊(詳見附圖3),從目前的速度和效果來看已經達到領先水平,其對光照、鏡頭水平移動、鏡頭遠近拉伸、以及漸隱變化等均有較為魯棒的支持。從圖中我們可以看到,簡單來講,鏡頭切換模塊有兩個核心模塊:直方圖匹配模塊與s-kernel(smeanssinglescale)跟蹤模塊,首先,進行前後兩幀的直方圖匹配,得到一個分數,如果這個分數過低或者圖像本身的灰度極低(為了支持兩個鏡頭之間插入黑色幀)則立即判斷為鏡頭切換。否則,根據直方圖匹配的分數對s-kernel全場景跟蹤模塊的學習率進行調整:直方圖匹配分數高,則調高s-kerneltracker學習率。反之,亦然。這樣做的原理是:如果直方圖分數匹配較高,那麼說明當前很有可能沒有發生鏡頭切換,這個時候調高了s-kernel
tracker的學習率可以讓s-kerneltracker儘可能的跟上全場景,當然也不排除s-kerneltracker
在這麼高的直方圖下跟蹤失敗,這個時候就可以判斷為鏡頭切換,因為畢竟直方圖帶來的空間信息有限,僅僅是一個全圖統計意義上的概率分布。由於直方圖和s-kerneltracker模塊的速度都非常快,所以這個鏡頭切換模塊的速度約為2ms/幀。我們其實可以看出這裡鏡頭切換模塊的作用:輔助跟蹤模塊,如果發生鏡頭切換,將判斷為所有正在跟蹤的目標丟失。對視頻進行語義級別的片段切割,使得其形成一個一個的序列,這個功能在某些沒有自帶判斷跟蹤丟失的跟蹤算法(比如asmsbased)而言,是極為重要的。
4.檢測識別模塊
我們先來了解一下檢測識別模塊的基本框架。很顯然,我們的檢測識別模塊是基於深度神經網絡的解決方案,硬體型號為nvidia的m40gpu。附圖4是當前我們檢測識別模塊的整體框圖。我們可以看到該框架主要有2個核心模塊:rpn網絡、分類網絡(事實上將這兩個網絡整合進了一個大的網絡中,網絡結構詳見附錄2。我們要進行兩個步驟,第一個步驟為離線的訓練出模型,這個步驟是不會部署到我們的伺服器上的。第二個步驟是根據訓練得到的模型,進行輸入圖片的inference,即檢測識別logo。我們使用基於deeplearning的logo檢測/識別算法。並且,基於pvanet(可以簡單理解為faster-rcnn的一個變種),我們提出了改進的深度學習網絡來滿足視頻內logo檢測的獨特需求,訓練方法為:end2end.訓練共229類(見附錄1)logo,3w張圖片左右。一般情況下使用ap/map來度量準確率與召回率,目前的229類的map=97.31%(在我們自己的測試集上,共3420張圖片),單幀檢測速度:150ms/frame。視頻處理時間比:0.5(越低越快),每10幀進行一次logo檢測/識別。
pvanet是基於faster-rcnn的一種新的detection方法,主要目的在提高精度的同時進行加速。當然,我們根據我們的需求對於pvanet進行了以下幾點改進:
1)將pvanet整合進faster-rcnn中進行end2end訓練,backbone使用的是pvanet。pvanet
主要是用於分類的一個網絡,所以必須將其整合進faster-rcnn的框架後才能支持檢測+識別。end2end的好處是相比於4-stage的訓練而言,其在損失了理論層面上的少許精度外,大大簡化了神經網絡的維護成本並且減少了訓練時間。
2)在消除誤檢方面,這裡我同時採取了兩種措施:第一種是將在線地全圖取負樣本(ohem)整合進我們的框架中,第二種是採取自舉的方式,離線地通過多次迭代,定點清除誤檢。在實施1)和2)後map為0.953。
3)利用pvanet+ohem的特點調整了數據集,使得數據集中除了標註的logo外,不存在其他幹擾的logo類別,這個舉措使得map從0.953提高至0.970。
4)由於一般情況下logo在視頻幀內出現時,往往其resolution比較低或者說比較小,faster-rcnn的固有缺陷造成對這種情況無法很好的識別。我們的網絡由於deconvolutionlayer的存在,能一定程度上提高小物體的featuremap解析度,從來改善這個問題,但是還是無法滿足我們的要求,所以我們對網絡進行了大膽改進,即通過減小pooling層的stride來增加了featuremap的大小來滿足對小物體的檢測需求。經過這個措施後,我們的map達到了新高:0.9731。
5)在4)的基礎上,對視頻進行分割成幾個區塊,再結合原圖的檢測,便可以較為完美的解決小logo的問題。當然會面臨一些nms方面的格外操作。如果分割成4個區塊,再加上原圖,速度可以理解為x5。可以在對速度要求不高的場合中enable之。
雖然本發明已以較佳實施例揭示如上,然其並非用以限定本發明,任何本領域技術人員,在不脫離本發明的精神和範圍內,當可作些許的修改和完善,因此本發明的保護範圍當以權利要求書所界定的為準。