周洪萍,王金風,徐周昰,段永良
(1.南京傳媒學院,江蘇 南京 211172;2.西安交通大學,陜西 西安 710049)
攝像機是演播室或錄影棚中的重要設(shè)備。對攝像機的位置進行有效的監(jiān)測,可以更加方便有效地管理和調(diào)度現(xiàn)場的設(shè)備,保護錄制現(xiàn)場的安全,提高工作效率,進而縮短拍攝與制作周期,降低節(jié)目制作的成本。然而,錄影棚中的攝像機數(shù)量眾多,人為進行檢測追蹤,需要大量的時間和精力。對此,本文設(shè)計一種攝像機檢測追蹤系統(tǒng),能夠?qū)ΜF(xiàn)場攝像機進行自動識別和追蹤。工作過程中,攝像機往往會不斷地調(diào)整位置、角度和焦距等參數(shù),同時,燈光、陰影、反光等因素影響,對檢測和識別算法提出了更高的要求。人工智能技術(shù)的發(fā)展為攝像機的檢測提供了新的思路和技術(shù)手段,更有利于智能、高效地定位攝像機的位置,可以實現(xiàn)在演播室、錄影棚、轉(zhuǎn)播車甚至戶外環(huán)境中都能實時監(jiān)控檢測攝像機的存在和移動,并跟蹤攝像機的運動軌跡。實現(xiàn)人工智能在廣播電視領(lǐng)域更高效的自動化應(yīng)用,對廣播電視領(lǐng)域有著特殊的意義和實用價值,對廣播電視行業(yè)有著深遠的影響。
深度學習(Deep Learning,DL)是機器學習(Machine Learning,ML)的一種,是利用深度神經(jīng)網(wǎng)絡(luò)來進行自動分類、預(yù)測和學習的技術(shù),是人工智能技術(shù)的重要組成部分,也是人工智能的基礎(chǔ)。DL 可以從海量的數(shù)據(jù)中自動學習,尋找數(shù)據(jù)中的特征。DL 模型主要基于反向傳播算法進行訓練,學習的是隱含在輸入數(shù)據(jù)中的概率分布,并利用其來進行分類、回歸、聚類等任務(wù)。由于神經(jīng)網(wǎng)絡(luò)中的神經(jīng)元在結(jié)構(gòu)上具有相互連接的特性,因此可以把神經(jīng)網(wǎng)絡(luò)看作是一個近似線性模型。為了降低參數(shù)調(diào)整和優(yōu)化的難度,一般采用批處理學習方式進行訓練,即將數(shù)據(jù)按照一定規(guī)則分成N個小塊,將每一塊數(shù)據(jù)作為輸入,根據(jù)數(shù)據(jù)的特點選擇一個或多個隱藏層進行學習。在圖像處理領(lǐng)域,DL 算法將復(fù)雜的圖像分解成各種特征,從中提取出所需要的信息,匹配相應(yīng)的特征,將復(fù)雜的圖像識別問題轉(zhuǎn)換成簡單的數(shù)學問題。因此,可以用DL 算法對復(fù)雜場景進行目標檢測。
基于DL 的目標檢測能自動從圖像或視頻中識別出所需要檢測的對象。這種技術(shù)需要訓練一個深度神經(jīng)網(wǎng)絡(luò)來識別不同的目標,通常需要對數(shù)據(jù)進行充分的預(yù)處理和計算,以進行訓練和優(yōu)化。DL 模型的性能受許多因素的影響,包括數(shù)據(jù)集的大小、訓練算法的選擇等等。因此,在實際應(yīng)用中,需要根據(jù)具體情況選擇合適的方法,以達到最佳的性能。
基于DL 的目標檢測方法通過深度神經(jīng)網(wǎng)絡(luò)自動從圖像中學習目標的特征表示和目標類別的分類器,算法通常包括兩個主要步驟。第一,算法會在輸入圖像中檢測出一些可能包含目標的區(qū)域,這些區(qū)域被稱為候選框;第二,分類器對這些候選框進行分類,判斷它們是否包含特定的目標。常見的基于DL 的目標檢測方法有YOLO(You Only Look Once,YOLO)、Faster R-CNN、SSD(Single Shot MultiBoxDetector,SSD)、RetinaNet 等。它們在檢測任務(wù)中取得了很好的性能,能夠自動學習目標的特征表示和分類器,具有更好的適應(yīng)性,逐漸成為人們用來進行實驗研究的重要技術(shù)[1]。
本實驗使用YOLOv7 的目標檢測算法來檢測識別圖片或視頻中的攝像機。YOLO 是一種實時目標檢測方法,在2015 年被提出,并不斷進行改進和更新,先后分別有YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5、YOLOv6、YOLOv7 及YOLOv8等版本。
YOLOv7 采用了一系列新的技術(shù)和策略,以提高目標檢測的性能。YOLOv7 使用了更深的網(wǎng)絡(luò)結(jié)構(gòu)和更多的特征金字塔層,從而能夠提供更高的檢測精度,尤其是對于小目標的檢測效果有了很大的改觀。YOLOv7 使用了新的數(shù)據(jù)增強策略,包括馬賽克(Mosaic)數(shù)據(jù)增強等方法,從而增強了模型的適應(yīng)性,并且在訓練速度方面也做了優(yōu)化。通過改進的模型結(jié)構(gòu)和訓練策略,YOLOv7 能夠在保持較高檢測精度的同時加快訓練速度,提高生產(chǎn)環(huán)境下的實時性。YOLOv7 具有很強的通用性,可以應(yīng)用于多種目標檢測場景,適用于各種不同規(guī)模和復(fù)雜度的數(shù)據(jù)集。
YOLOv7 的主要結(jié)構(gòu)是REP,即repvgg_block模塊。REP 模塊分兩部分,一部分是訓練,另一部分是推理。訓練模塊分為3 個部分。最頂端的枝干是3×3 卷積,用來抽取特征;中間的支路是一個1×1 的卷積,用來對特征進行光滑處理;最終的分支是一個Identity,沒有進行任何的卷積運算,而是直接移動過去,把它與上面的部分相加。推理模塊由3×3 卷積、stride 組成[2]。
YOLOv7 中的Backbone 主要使用E-ELAN 網(wǎng)絡(luò),可任意對最短至最長之漸變路徑進行控制,使較深層網(wǎng)絡(luò)具有較高的學習效率與收斂性。E-ELAN 在ELAN 的基礎(chǔ)上,通過expand、shuffle 等方式來實現(xiàn)功能,不會破壞原來的漸變路徑。
YOLOv7 相對于其他目標檢測算法的優(yōu)勢體現(xiàn)在檢測速度快,可以實現(xiàn)在視頻中實時、高精度地檢測出目標,每秒鐘可以處理數(shù)百幀圖像。因此,用YOLOv7 進行檢測系統(tǒng)的設(shè)計優(yōu)勢突出,有著極大的穩(wěn)定性和廣闊的應(yīng)用場景。
好的數(shù)據(jù)集可以提供多樣化、真實、豐富的數(shù)據(jù)樣本,包含不同的場景、光照、角度、尺寸及姿態(tài)的樣本,能夠使模型更加有利于實驗。
數(shù)據(jù)集應(yīng)該有準確的標注信息,且標注信息應(yīng)該清晰、準確、全面,包含目標的位置、大小、形狀等信息,可以讓模型更好地學習和理解目標。此外,數(shù)據(jù)集中的樣本數(shù)量越多,且足夠多樣,模型的訓練效果就越好,泛化能力也越強。
一個優(yōu)秀的數(shù)據(jù)集對于模型的提升效果是非常重要的,不僅可以提高模型的準確性和健壯性,而且可以提高模型的泛化能力,為實際應(yīng)用提供更好的支持。本實驗選取的數(shù)據(jù)是由網(wǎng)絡(luò)上采集和實際拍攝的圖片構(gòu)成的,驗證數(shù)據(jù)是現(xiàn)場拍攝和從網(wǎng)絡(luò)獲取的視頻數(shù)據(jù)。樣本數(shù)據(jù)集如圖1 所示。使用LabelImg 工具對數(shù)據(jù)集進行標注[3]。
圖1 樣本數(shù)據(jù)集示例
YOLOv7 目標檢測算法采用單階段檢測器的方式進行物體識別。其訓練過程可以分為兩個步驟。第一步,數(shù)據(jù)準備。需要收集好訓練數(shù)據(jù),包括訓練圖片和標注文件,其中標注文件采用標記圖形文件的格式。在這個步驟中,將數(shù)據(jù)集按照9 ∶1 的比例劃分為訓練集和驗證集。第二步,對模型進行選擇和配置。本實驗選擇YOLOv7.pt 作為預(yù)訓練模型,根據(jù)硬件環(huán)境選擇合適的參數(shù)設(shè)置。設(shè)置batch_size 為12,img_size 選擇640。數(shù)據(jù)集的num_classes 為1,將名稱設(shè)置為camera。訓練集如圖2 所示。
圖2 訓練集示例
實驗開始,使用訓練集對模型進行訓練,更新模型的參數(shù)。每次訓練結(jié)束后,要對模型進行評估,進而調(diào)整模型參數(shù),使其形成最好的數(shù)據(jù)模型。最后對選擇好的模型進行保存和測試。訓練完成后,可以將模型保存為.pt 文件,用驗證集對數(shù)據(jù)進行測試,評估模型的各項性能。驗證集如圖3 所示。
為了增加數(shù)據(jù)樣本量、提高模型泛化能力,需要對訓練數(shù)據(jù)進行增強,用來提升數(shù)據(jù)訓練的效率。本實驗采用Mosaic 數(shù)據(jù)增強方法。
Mosaic 數(shù)據(jù)增強是一種常用的高效處理數(shù)據(jù)的方法,基本思想是將多張不同的圖片合并成一張大圖,并隨機裁剪出多個小圖來進行訓練,使形成的每張小圖都覆蓋大圖的1/4 區(qū)域。在裁剪過程中,大圖中的不同部分可能會組合成新的圖像,從而豐富了訓練數(shù)據(jù),使得模型的效果越來越好。合成的Mosaic 圖像通常包含多個目標、背景和目標之間的遮擋關(guān)系,能夠使模型更好地學習復(fù)雜場景中的目標檢測。Mosaic 數(shù)據(jù)增強還可以減少過擬合現(xiàn)象的發(fā)生,使模型的性能變得更好。Mosaic 數(shù)據(jù)增強的效果如圖4 所示。
本實驗使用PyTorch 框架搭建YOLOv7 網(wǎng)絡(luò)架構(gòu)。PyTorch 的編程接口比較易于使用,能與Python編程語言很好地集成。它有一個簡單直觀的應(yīng)用程序編程接口(Application Programming Interface,API),能夠快速進行實驗。配置CUDA、CUDNN、OpenCV 和Git 庫,CUDA 庫用來進行圖形處理器(Graphics Processing Unit,GPU)加速,CUDNN 庫用來加速深度神經(jīng)網(wǎng)絡(luò)訓練和推理,OpenCV 庫用于圖像和視頻處理,Git 庫用來克隆存儲庫。
PyCharm 是一種集成開發(fā)環(huán)境,帶有一整套可以幫助用戶在使用Python 語言開發(fā)時提高效率的工具,如調(diào)試、語法高亮、項目管理、代碼跳轉(zhuǎn)、智能提示、自動完成、單元測試及版本控制等。使用Pycharm 工具編寫Python 代碼時,一般使用本地的Python 解釋器。因此,需要下載、安裝解釋器,配置解釋器后才能進行操作。
通過YOLOv7 訓練出的檢測模型在實際拍攝的應(yīng)用場景構(gòu)建的數(shù)據(jù)集下精確率(Precision,P)、召回率(Recall,R)均超過0.95。這兩個評價指標的計算公式為
式中:TP表示在識別出的目標中,樣本的真實類別是正例,且模型預(yù)測的結(jié)果也是正例,預(yù)測正確;FP表示樣本的真實類別是負例,但模型卻將它預(yù)測成正例,預(yù)測出錯;FN表示樣本的真實類別是正例,但模型將它預(yù)測成負例,預(yù)測錯誤,代表漏檢目標數(shù)量。Recall 指標從真實結(jié)果角度出發(fā),描述了測試集中的真實正例有多少被二分類器召回[4]。
本實驗為攝像機單類物體檢測,因此Classification 分類損失均值、val Classification 驗證集分類loss 均值都為0。實驗的其他評價指標結(jié)果數(shù)據(jù)如圖5 所示。圖5(a)~圖5(d)的縱坐標分別為Box loss 函數(shù)的均值、Objectness 目標檢測loss 函數(shù)均值、val Box 驗證集bounding box 的損失函數(shù)均值、val Objectness 驗證集目標檢測loss均值。這4 個函數(shù)值都是隨著訓練輪數(shù)的增加,取值越小越準確;圖5(e)中縱坐標Precision 為精確率,即找對的正類占所有找到的正類的比例,本實驗數(shù)據(jù)顯示精確率為0.95,說明誤檢的情況少;圖5(f)中縱坐標Recall 為召回率,即正樣本有多少被召回來了,數(shù)據(jù)顯示召回率為0.95,說明漏檢的情況少;圖5(g)、圖5(h)中,縱坐標表示平均精度(mean Average Precision,mAP),是用Precision和Recall 兩個指標作為兩軸作圖后圍成的面積,即每個Recall 區(qū)間內(nèi)只取這個區(qū)間內(nèi)Precision 的最大值與這個區(qū)間長度做乘積,體現(xiàn)出來就是一系列矩形的面積,@后面的數(shù)字0.5 表示閾值大于0.5 的平均值,@0.5:0.95 表示閾值取0.5:0.05:0.95(0.5、0.55、0.6、0.65、0.7、0.75、0.8、0.85、0.9、0.95)上的均值,閾值越大,精度越低。從圖5(g)、圖5(h)可以看出,mAP@0.5 和mAP@0.5:0.95 波形波動不是很大,且數(shù)值接近于1,說明模型訓練效果較好,結(jié)果檢測精準,基本不會出現(xiàn)錯檢漏檢的情況。
對視頻中某一幀圖片檢測的結(jié)果如圖6 所示。圖6 中兩臺攝像機被檢測出來且標注為camera,精度分別為0.95 和0.90。
圖6 結(jié)果分析
實驗結(jié)果表明,基于YOLOv7 的攝像機檢測系統(tǒng)可以準確地識別出視頻中攝像機的位置并標記出來,精確率和召回率都達到0.95,mAP@0.5 和mAP@0.5:0.95數(shù)值接近1,說明檢測能力強,效果好。多次實驗表明,如果想要實現(xiàn)更高精度的識別檢測,可以將閾值設(shè)定得高一些,略過與攝像機相似的物體。如果背景比較雜亂并且和攝像機沒有太大的區(qū)分度,可以將閾值調(diào)低些,這樣視頻中只要出現(xiàn)攝像機,基本都能將之識別并檢測出來。此外,如果檢測視頻里的環(huán)境復(fù)雜,攝像機與背景有時候會出現(xiàn)融合交匯的情況,會導致視頻中的攝像機檢測不出來,或者會出現(xiàn)斷斷續(xù)續(xù)的被檢測出的情況[5]。
本實驗將YOLOv7 模型應(yīng)用于攝像機檢測,通過Mosaic 數(shù)據(jù)增強后訓練出來的YOLOv7 模型的精確率和召回率達到0.95。系統(tǒng)適用于演播室或者錄影棚等場景下的攝像機檢測與管理,能更好地服務(wù)廣播電視制播系統(tǒng),提高了工作效率,還可以遷移到其他領(lǐng)域,如在視頻監(jiān)控、智能家居、自動駕駛等場景中使用,為各領(lǐng)域的目標檢測技術(shù)發(fā)展提供參考。