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