国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于視頻分析的高速公路違法行為識別系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

2022-02-21 01:56:30張慧辰孔晨晨楊卓敏

張慧辰 孔晨晨 楊卓敏

(公安部交通管理科學(xué)研究所,江蘇 無錫 214151)

當(dāng)前我國高速公路總里程數(shù)已超過16 萬公里,接入視頻監(jiān)控超過5 萬路,視頻監(jiān)控資源充足,但同時(shí),違反禁止標(biāo)線、倒車、逆行等違法行為對正常的高速公路交通秩序帶來巨大安全隱患。當(dāng)前通過安裝具備違法取證功能的智能監(jiān)控設(shè)備可以實(shí)現(xiàn)對部分違法行為的識別與取證,但對于更大范圍的常規(guī)視頻監(jiān)控設(shè)備,則只能通過人工視頻巡邏的方式發(fā)現(xiàn)違法,投入的人力資源大且效率低下。利用現(xiàn)有視頻監(jiān)控資源從中自動識別違法行為、異常事件是高速公路智能化管理的需求[1],在匝道口等特定高速公路場景下已經(jīng)有基于視頻監(jiān)控分析的應(yīng)用實(shí)踐[2]。本文研究基于視頻分析的高速公路違法行為識別系統(tǒng)架構(gòu)與具體實(shí)現(xiàn),利用高速公路已有的視頻監(jiān)控系統(tǒng),主動發(fā)現(xiàn)高速公路上的部分違法行為。

1 系統(tǒng)總體設(shè)計(jì)

1.1 系統(tǒng)架構(gòu)設(shè)計(jì)

系統(tǒng)總體分為視頻預(yù)處理、場景識別、目標(biāo)檢測跟蹤、違法分析、數(shù)據(jù)存儲、消息隊(duì)列以及視頻渲染等7 個(gè)模塊組成。消息隊(duì)列、數(shù)據(jù)存儲是保障系統(tǒng)高效穩(wěn)定運(yùn)行的支撐模塊。視頻預(yù)處理、場景識別、目標(biāo)檢測跟蹤、違法分析及視頻渲染是實(shí)現(xiàn)視頻分析的核心模塊,其中場景識別為獨(dú)立運(yùn)行模塊,負(fù)責(zé)場景要素的結(jié)構(gòu)化識別。單一視頻識別流程中,按照先視頻預(yù)處理、再目標(biāo)跟蹤、最后違法分析的順序進(jìn)行;在系統(tǒng)設(shè)計(jì)中,上述3 個(gè)模塊并行運(yùn)行,前一個(gè)模塊是后一個(gè)模塊的生產(chǎn)者,后一個(gè)模塊是前一個(gè)模塊的消費(fèi)者。視頻渲染負(fù)責(zé)視頻分析結(jié)果的可視化直觀展現(xiàn)??傮w架構(gòu)見圖1。

圖1 總體架構(gòu)圖

1.2 基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)

在視頻違法分析流程中,基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)共有6 種,分別是視頻流、幀、圖片、目標(biāo)信息、檢測結(jié)果和跟蹤結(jié)果。視頻流指待分析的實(shí)時(shí)視頻;幀指視頻分析過程中,按幀從實(shí)時(shí)視頻中提取的幀數(shù)據(jù);圖片指將幀數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換后形成的圖片;目標(biāo)信息是一個(gè)目標(biāo)在一張圖片上的位置(中心點(diǎn)坐標(biāo)及寬高)以及車型分類結(jié)果;檢測結(jié)果是一張圖片上多個(gè)目標(biāo)信息的集合;跟蹤結(jié)果是一個(gè)目標(biāo)在多幀圖片上的目標(biāo)信息集合?;A(chǔ)數(shù)據(jù)結(jié)構(gòu)定義見表1。

表1 基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)定義

2 支撐模塊設(shè)計(jì)與實(shí)現(xiàn)

2.1 消息隊(duì)列

為了提供系統(tǒng)的并發(fā)處理能力,采用消息隊(duì)列負(fù)責(zé)各個(gè)模塊間的數(shù)據(jù)交換,內(nèi)存隊(duì)列、Kafka 以及ActiveMQ 都是可選的消息隊(duì)列實(shí)現(xiàn)方案。本研究采用java 自帶阻塞隊(duì)列作為消息隊(duì)列的具體實(shí)現(xiàn)。對于每個(gè)攝像機(jī),分別創(chuàng)建幀隊(duì)列、場景識別隊(duì)列、檢測跟蹤隊(duì)列以及違法分析隊(duì)列。幀隊(duì)列中的對象是幀,場景識別隊(duì)列中的對象是圖片,檢測跟蹤隊(duì)列中的對象是檢測結(jié)果,違法分析隊(duì)列中的對象是跟蹤結(jié)果。

2.2 數(shù)據(jù)存儲

數(shù)據(jù)存儲模塊邏輯上分為臨時(shí)存儲區(qū)和永久存儲區(qū),物理上分為關(guān)系型數(shù)據(jù)庫和文件存儲數(shù)據(jù)庫,關(guān)系型數(shù)據(jù)庫選用oracle,文件存儲數(shù)據(jù)庫選用seaweedfs。臨時(shí)存儲區(qū)負(fù)責(zé)存儲視頻分析過程中所需的結(jié)構(gòu)化信息及圖片數(shù)據(jù),永久存儲區(qū)負(fù)責(zé)存儲違法車輛的結(jié)構(gòu)化信息和通行視頻,臨時(shí)存儲區(qū)中的數(shù)據(jù)由數(shù)據(jù)清理任務(wù)負(fù)責(zé)定期清理;關(guān)系型數(shù)據(jù)庫負(fù)責(zé)存儲攝像機(jī)信息、違法信息等結(jié)構(gòu)化文本信息,文件存儲負(fù)責(zé)存儲圖片及視頻文件。接口上通過jdbc 讀寫關(guān)系型數(shù)據(jù)庫中的結(jié)構(gòu)化信息,通過文件存取接口讀寫圖片及視頻數(shù)據(jù)。數(shù)據(jù)存儲模塊設(shè)計(jì)見圖2。

圖2 數(shù)據(jù)存儲模塊設(shè)計(jì)

3 核心模塊設(shè)計(jì)與實(shí)現(xiàn)

3.1 視頻預(yù)處理

當(dāng)前流媒體服務(wù)器及主流品牌監(jiān)控設(shè)備均支持rtsp 實(shí)時(shí)視頻流輸出。因此在本研究中,視頻預(yù)處理的對象為rtsp實(shí)時(shí)視頻流。視頻預(yù)處理模塊負(fù)責(zé)接收視頻流,并將視頻流轉(zhuǎn)換為圖片集。由于視頻預(yù)處理是所有后續(xù)模塊的基礎(chǔ),為確保高效的視頻預(yù)處理,將視頻預(yù)處理進(jìn)一步劃分為視頻抽幀以及幀圖片存儲兩個(gè)步驟,兩個(gè)步驟并行執(zhí)行,通過消息隊(duì)列進(jìn)行數(shù)據(jù)交互,確保預(yù)處理過程的高效穩(wěn)定。視頻預(yù)處理流程示意見圖3。

圖3 視頻預(yù)處理流程示意

本研究中,視頻預(yù)處理基于JavaCV 的ffmpeg 模塊實(shí)現(xiàn)。視頻抽幀不斷從rtsp 實(shí)時(shí)視頻流中獲取視頻幀,并將視頻幀暫存到幀隊(duì)列中。圖片存儲負(fù)責(zé)從幀隊(duì)列中讀取幀,并將幀轉(zhuǎn)換為圖片,存入數(shù)據(jù)存儲。

(1)視頻抽幀實(shí)現(xiàn)步驟:

步驟1:利用rtsp 實(shí)時(shí)視頻地址初始化視頻抽幀器FFmpegFrameGrabber。

步驟2:從FFmpegFrameGrabber 獲取下一幀,并將幀存入幀隊(duì)列。

步驟3:循環(huán)執(zhí)行步驟2。(2)圖片存儲實(shí)現(xiàn)步驟:

步驟1:從幀隊(duì)列中獲取一幀。

步驟2:利用FrameConverter 將幀轉(zhuǎn)換為圖片數(shù)據(jù)。

步驟3:調(diào)用數(shù)據(jù)存儲模塊的圖片寫入接口存儲圖片,返回圖片鏈接。

步驟4:將攝像機(jī)編號、幀序號、圖片地址組合為圖片數(shù)據(jù),寫入檢測跟蹤隊(duì)列;每隔固定時(shí)間,將圖片數(shù)據(jù)同時(shí)寫入場景識別隊(duì)列。

步驟5:循環(huán)執(zhí)行步驟1-4。

3.2 場景識別

高速公路相比城市道路,特點(diǎn)是場景相對簡單、固定。場景識別目的是識別出監(jiān)控區(qū)域內(nèi)的固定標(biāo)志、標(biāo)線,為違法分析提供數(shù)據(jù)基礎(chǔ)?;谏疃葘W(xué)習(xí)的語義分割可以實(shí)現(xiàn)像素級的場景要素識別,為確保識別結(jié)果的有效性,對識別結(jié)果進(jìn)行人工核實(shí)與修正。在本研究中,對每個(gè)攝像機(jī)間隔固定時(shí)間取一張圖片進(jìn)行場景識別。場景識別示意見圖4。場景識別輸出每個(gè)攝像機(jī)編號對應(yīng)的場景識別結(jié)果,場景識別結(jié)果由若干車道與標(biāo)線組成。車道是若干點(diǎn)連成的封閉區(qū)域;標(biāo)線是若干點(diǎn)連成的線段或封閉區(qū)域。

圖4 場景識別流程示意

3.3 目標(biāo)檢測跟蹤

目標(biāo)檢測跟蹤是視頻分析中最基礎(chǔ)也是最核心的模塊,具體包括目標(biāo)檢測和運(yùn)動目標(biāo)跟蹤。目標(biāo)檢測的任務(wù)是找出圖像中所有感興趣的目標(biāo)(物體),確定它們的類別和位置;通過目標(biāo)檢測,可以實(shí)現(xiàn)輸入一張圖片,輸出圖片中每個(gè)機(jī)動車的位置及車型分類。運(yùn)動目標(biāo)跟蹤利用連續(xù)多幀圖片中的目標(biāo)位置信息,計(jì)算目標(biāo)的運(yùn)動軌跡;通過運(yùn)動目標(biāo)跟蹤,可以實(shí)現(xiàn)輸入多幀目標(biāo)檢測結(jié)果,輸出每一個(gè)目標(biāo)的位置運(yùn)動軌跡,將視頻中運(yùn)動目標(biāo)的軌跡結(jié)構(gòu)化。

相比RCNN 等傳統(tǒng)目標(biāo)檢測算法,YOLO 模型運(yùn)行速度可以達(dá)到45fps[3],大于高速公路上主流相機(jī)的每秒幀數(shù)25fps。同時(shí)由于高速公路視頻分析對時(shí)效性要求高,因此在本研究中選用基于YOLO 模型訓(xùn)練的目標(biāo)檢測算法進(jìn)行機(jī)動車目標(biāo)檢測。在目標(biāo)檢測的同時(shí),進(jìn)行運(yùn)動目標(biāo)跟蹤,每完成一次目標(biāo)檢測,根據(jù)檢測結(jié)果對跟蹤目標(biāo)清單中的目標(biāo)軌跡進(jìn)行更新,對于跟蹤完成的目標(biāo),從跟蹤目標(biāo)清單中移除,并加入違法分析隊(duì)列。目標(biāo)檢測跟蹤流程示意見圖5。

圖5 目標(biāo)檢測與跟蹤示意

本研究開發(fā)了目標(biāo)檢測跟蹤算法,具體步驟如下:

假設(shè):目標(biāo)信息為v;單張圖片檢測后可形成圖片中多個(gè)目標(biāo)信息的集合,定義為檢測結(jié)果V,V 是同一張圖片中若干v 的集合;某一車輛在多幀圖片中的目標(biāo)信息集合記為跟蹤結(jié)果r,r 是同一輛車,在不同圖片中的若干v 的集合;正在進(jìn)行跟蹤的目標(biāo)集合定義為跟蹤目標(biāo)清單R,R 是r 的集合;跟蹤完畢的目標(biāo)集合定義為跟蹤完成結(jié)果Y,Y 也是r 的集合。R 與Y 初始化均為空。

步驟1:從檢測跟蹤隊(duì)列中取出圖片信息,根據(jù)圖片鏈接,獲取實(shí)際圖片。

步驟2:對圖片進(jìn)行目標(biāo)檢測,得到Vj。

步驟3:判斷R 是否為空,若R 為空,則將Vj中每一個(gè)vj 作為一個(gè)跟蹤結(jié)果r,寫入R,進(jìn)入步驟1;若R 不為空,進(jìn)入步驟4。

步驟4:從集合R 中取出一個(gè)車輛信息集合r,r 中最后一個(gè)目標(biāo)信息為vr,為r 構(gòu)建一個(gè)候選列表集合L,初始化L為空。

步驟5:從Vj中取出一個(gè)車輛信息vk,設(shè)Vj中包括N 個(gè)目標(biāo)信息,k 為目標(biāo)信息v 在Vj中的序號,k≤N;k 初始化為0。

步驟6:比較vk和vr的目標(biāo)分類是否相同,如果二者相同,進(jìn)入步驟c7;否則進(jìn)入步驟8。

步驟7:計(jì)算vr的中心點(diǎn)坐標(biāo)與vk的中心點(diǎn)坐標(biāo)的距離D,比較D 和預(yù)設(shè)的軌跡距離閾值:若DH < 軌跡距離閾值,則將對應(yīng)的vk放入到L 中;否則,進(jìn)入步驟8。

步驟8:循環(huán)實(shí)施步驟c5~c7,直至集合Vj中所有vk都與vr進(jìn)行過比較后,執(zhí)行步驟9。

步驟9:確認(rèn)r 對應(yīng)的候選表集合L 是否為空:如果L 為空,r 跟蹤結(jié)束,將r 從R 中移除,加入Y,進(jìn)入步驟11;否則,進(jìn)入步驟c10。

步驟10:從L 中取出與r 中心點(diǎn)坐標(biāo)距離最小的車輛信息vk,放到車輛跟蹤結(jié)果r 中,作為車輛跟蹤結(jié)果r 的最后一輛車,并從Vj中刪除vk。

步驟11:循環(huán)執(zhí)行步驟c4~c10;直至R 中每一個(gè)r 都參與過計(jì)算。

步驟12:若Vj中仍然存在vk,則將每一個(gè)vk作為一個(gè)新的跟蹤結(jié)果r,寫入R。

步驟13:循環(huán)執(zhí)行步驟1~12。

3.4 違法分析與視頻渲染

違法分析模塊負(fù)責(zé)對每一個(gè)完成檢測跟蹤的目標(biāo)進(jìn)行分析,結(jié)合場景識別結(jié)果,判斷有無違法行為。根據(jù)目標(biāo)軌跡與禁止標(biāo)線的位置關(guān)系可以實(shí)現(xiàn)違反禁止標(biāo)線違法識別;根據(jù)目標(biāo)軌跡與場景應(yīng)急車道的位置關(guān)系可以實(shí)現(xiàn)占用應(yīng)急車道違法識別;根據(jù)目標(biāo)軌跡運(yùn)動方向與場景車道通行方向的比較,可以實(shí)現(xiàn)倒車、逆行違法識別等。視頻渲染模塊負(fù)責(zé)根據(jù)需要,從存儲模塊讀取違法信息及圖片集,并將目標(biāo)軌跡信息、違法信息疊加到圖片集上,再轉(zhuǎn)換為視頻文件,以更加直觀的方式展現(xiàn)。違法分析與視頻渲染流程見圖6。

圖6 違法分析與視頻渲染

3.5 效果驗(yàn)證

選擇某地高速公路視頻片段進(jìn)行分析,渲染后的視頻分析結(jié)果及軌跡重現(xiàn)示例見圖7,其中軌跡重現(xiàn)使用目標(biāo)區(qū)域底部中點(diǎn)的軌跡。

圖7 視頻分析結(jié)果及軌跡重現(xiàn)

4 結(jié)論

本文根據(jù)高速公路視頻監(jiān)控建設(shè)現(xiàn)狀及違法智能分析需求,研究了基于視頻分析的違法行為分析實(shí)現(xiàn)方法,提出了系統(tǒng)總體架構(gòu)設(shè)計(jì)以及各個(gè)功能模塊的設(shè)計(jì)思路,基于JAVACV 開發(fā)了違法行為分析系統(tǒng)軟件,并在真實(shí)場景的視頻資源下進(jìn)行了測試、驗(yàn)證。

淳化县| 五华县| 咸宁市| 南川市| 托克逊县| 阿尔山市| 休宁县| 沈阳市| 秀山| 南漳县| 黄大仙区| 梁平县| 固始县| 综艺| 菏泽市| 河源市| 个旧市| 孟村| 新巴尔虎左旗| 科技| 滨海县| 山阴县| 通榆县| 泗阳县| 长葛市| 济源市| 定南县| 南汇区| 开远市| 北票市| 盐边县| 福鼎市| 河津市| 呼图壁县| 夏津县| 林西县| 宁南县| 丰台区| 台中市| 中宁县| 石泉县|