自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

深度學(xué)習(xí) + OpenCV,Python實(shí)現(xiàn)實(shí)時(shí)視頻目標(biāo)檢測(cè)

開(kāi)發(fā) 開(kāi)發(fā)工具 深度學(xué)習(xí)
在本文中我們將學(xué)習(xí)如何擴(kuò)展原有的目標(biāo)檢測(cè)項(xiàng)目,使用深度學(xué)習(xí)和 OpenCV 將應(yīng)用范圍擴(kuò)展到實(shí)時(shí)視頻流和視頻文件中。

使用 OpenCV 和 Python 對(duì)實(shí)時(shí)視頻流進(jìn)行深度學(xué)習(xí)目標(biāo)檢測(cè)是非常簡(jiǎn)單的,我們只需要組合一些合適的代碼,接入實(shí)時(shí)視頻,隨后加入原有的目標(biāo)檢測(cè)功能。

在本文中我們將學(xué)習(xí)如何擴(kuò)展原有的目標(biāo)檢測(cè)項(xiàng)目,使用深度學(xué)習(xí)和 OpenCV 將應(yīng)用范圍擴(kuò)展到實(shí)時(shí)視頻流和視頻文件中。這個(gè)任務(wù)會(huì)通過(guò) VideoStream 類來(lái)完成。

  • 深度學(xué)習(xí)目標(biāo)檢測(cè)教程:http://www.pyimagesearch.com/2017/09/11/object-detection-with-deep-learning-and-opencv/
  • VideoStream 類教程:http://www.pyimagesearch.com/2016/01/04/unifying-picamera-and-cv2-videocapture-into-a-single-class-with-opencv/

現(xiàn)在,我們將開(kāi)始把深度學(xué)習(xí)+目標(biāo)檢測(cè)的代碼應(yīng)用于視頻流中,同時(shí)測(cè)量 FPS 處理速度。

使用深度學(xué)習(xí)和 OpenCV 進(jìn)行視頻目標(biāo)檢測(cè)

為了構(gòu)建基于 OpenCV 深度學(xué)習(xí)的實(shí)時(shí)目標(biāo)檢測(cè)器,我們需要有效地接入攝像頭/視頻流,并將目標(biāo)檢測(cè)應(yīng)用到每一幀里。

首先,我們打開(kāi)一個(gè)新文件,將其命名為 real_time_object_detection.py,隨后加入以下代碼:

使用深度學(xué)習(xí)和 OpenCV 進(jìn)行視頻目標(biāo)檢測(cè)

我們從第 2-8 行開(kāi)始導(dǎo)入封包。在此之前,你需要 imutils 和 OpenCV 3.3。在系統(tǒng)設(shè)置上,你只需要以默認(rèn)設(shè)置安裝 OpenCV 即可(同時(shí)確保你遵循了所有 Python 虛擬環(huán)境命令)。

Note:請(qǐng)確保自己下載和安裝的是 OpenCV 3.3(或更新版本)和 OpenCV-contrib 版本(適用于 OpenCV 3.3),以保證其中包含有深度神經(jīng)網(wǎng)絡(luò)模塊。

下面,我們將解析這些命令行參數(shù):

與此前的目標(biāo)檢測(cè)項(xiàng)目相比,我們不需要圖像參數(shù),因?yàn)樵谶@里我們處理的是視頻流和視頻——除了以下參數(shù)保持不變:

  • --prototxt:Caffe prototxt 文件路徑。
  • --model:預(yù)訓(xùn)練模型的路徑。
  • --confidence:過(guò)濾弱檢測(cè)的最小概率閾值,默認(rèn)值為 20%。

隨后,我們初始化類列表和顏色集:

在第 22-26 行,我們初始化 CLASS 標(biāo)簽,和相應(yīng)的隨機(jī) COLORS。有關(guān)這些類的詳細(xì)信息(以及網(wǎng)絡(luò)的訓(xùn)練方式),請(qǐng)參考:http://www.pyimagesearch.com/2017/09/11/object-detection-with-deep-learning-and-opencv/

現(xiàn)在,我們加載自己的模型,并設(shè)置自己的視頻流:

我們加載自己的序列化模型,提供對(duì)自己的 prototxt 和模型文件的引用(第 30 行),可以看到在 OpenCV 3.3 中,這非常簡(jiǎn)單。

下一步,我們初始化視頻流(來(lái)源可以是視頻文件或攝像頭)。首先,我們啟動(dòng) VideoStream(第 35 行),隨后等待相機(jī)啟動(dòng)(第 36 行),***開(kāi)始每秒幀數(shù)計(jì)算(第 37 行)。VideoStream 和 FPS 類是 imutils 包的一部分。

現(xiàn)在,讓我們遍歷每一幀(如果你對(duì)速度要求很高,也可以跳過(guò)一些幀):

首先,我們從視頻流中讀取一幀(第 43 行),隨后調(diào)整它的大小(第 44 行)。由于我們隨后會(huì)需要寬度和高度,所以我們?cè)诘?47 行上進(jìn)行抓取。隨后將 frame 轉(zhuǎn)換為一個(gè)有 dnn 模塊的 blob(第 48 行)。

現(xiàn)在,我們?cè)O(shè)置 blob 為神經(jīng)網(wǎng)絡(luò)的輸入(第 52 行),通過(guò) net 傳遞輸入(第 53 行),這給我們提供了 detections。

這時(shí),我們已經(jīng)在輸入幀中檢測(cè)到了目標(biāo),現(xiàn)在是時(shí)候看看置信度的值,以判斷我們能否在目標(biāo)周圍繪制邊界框和標(biāo)簽了:

我們首先在 detections 內(nèi)循環(huán),記住一個(gè)圖像中可以檢測(cè)到多個(gè)目標(biāo)。我們還需要檢查每次檢測(cè)的置信度(即概率)。如果置信度足夠高(高于閾值),那么我們將在終端展示預(yù)測(cè),并以文本和彩色邊界框的形式對(duì)圖像作出預(yù)測(cè)。讓我們逐行來(lái)看一下:

  • 在 detections 內(nèi)循環(huán),首先我們提取 confidence 值(第 59 行)。
  • 如果 confidence 高于***閾值(第 63 行),那么我們提取類標(biāo)簽索引(第 67 行),并計(jì)算檢測(cè)到的目標(biāo)的坐標(biāo)(第 68 行)。
  • 然后,我們提取邊界框的 (x, y) 坐標(biāo)(第 69 行),之后將用于繪制矩形和文本。
  • 我們構(gòu)建一個(gè)文本 label,包含 CLASS 名稱和 confidence(第 72、73 行)。
  • 我們還要使用類顏色和之前提取的 (x, y) 坐標(biāo)在物體周圍繪制彩色矩形(第 74、75 行)。
  • 通常,我們希望標(biāo)簽出現(xiàn)在矩形上方,但是如果沒(méi)有空間,我們將在矩形頂部稍下的位置展示標(biāo)簽(第 76 行)。
  • ***,我們使用剛才計(jì)算出的 y 值將彩色文本置于幀上(第 77、78 行)。

幀捕捉循環(huán)剩余的步驟還包括:(1)展示幀;(2)檢查 quit 鍵;(3)更新 fps 計(jì)數(shù)器:

上述代碼塊簡(jiǎn)單明了,首先我們展示幀(第 81 行),然后找到特定按鍵(第 82 行),同時(shí)檢查「q」鍵(代表「quit」)是否按下。如果已經(jīng)按下,則我們退出幀捕捉循環(huán)(第 85、86 行)。***更新 fps 計(jì)數(shù)器(第 89 行)。

如果我們退出了循環(huán)(「q」鍵或視頻流結(jié)束),我們還要處理這些:

當(dāng)我們跳出(exit)循環(huán),fps 計(jì)數(shù)器 停止(第 92 行),每秒幀數(shù)的信息向終端輸出(第 93、94 行)。

我們關(guān)閉窗口(第 97 行),然后停止視頻流(第 98 行)。

如果你到了這一步,那就可以做好準(zhǔn)備用自己的網(wǎng)絡(luò)攝像頭試試看它是如何工作的了。我們來(lái)看下一部分。

實(shí)時(shí)深度學(xué)習(xí)目標(biāo)檢測(cè)的結(jié)果

為了實(shí)時(shí)深度學(xué)習(xí)目標(biāo)檢測(cè)器正常運(yùn)行,確保你使用本指南「Downloads」部分中的示例代碼和預(yù)訓(xùn)練的卷積神經(jīng)網(wǎng)絡(luò)。(請(qǐng)打開(kāi)原文鏈接,進(jìn)入「Downloads」部分,輸入自己的郵箱地址,獲取所需代碼和其他資料。)

打開(kāi)終端,執(zhí)行下列命令:

如果 OpenCV 能夠訪問(wèn)你的攝像頭,你可以看到帶有檢測(cè)到的目標(biāo)的輸出視頻幀。

注意深度學(xué)習(xí)目標(biāo)檢測(cè)器不僅能夠檢測(cè)到人,還能檢測(cè)到人坐著的沙發(fā)和旁邊的椅子——所有都是實(shí)時(shí)檢測(cè)到的!

總結(jié)

今天的博客中,我們學(xué)習(xí)了如何使用深度學(xué)習(xí) + OpenCV + 視頻流來(lái)執(zhí)行實(shí)時(shí)目標(biāo)檢測(cè)。我們通過(guò)下列兩個(gè)教程完成了這一目標(biāo):

  • 使用深度學(xué)習(xí)和 OpenCV 進(jìn)行目標(biāo)檢測(cè)(http://www.pyimagesearch.com/2017/09/11/object-detection-with-deep-learning-and-opencv/)
  • 在 OpenCV 上進(jìn)行高效、線程化的視頻流(http://www.pyimagesearch.com/2016/01/04/unifying-picamera-and-cv2-videocapture-into-a-single-class-with-opencv/)

最終結(jié)果是基于深度學(xué)習(xí)的目標(biāo)檢測(cè)器可以處理 6-8 個(gè) FPS 的視頻(當(dāng)然,這也取決于你的系統(tǒng)速度)。

你還可以通過(guò)以下途徑進(jìn)一步提升速度:

  • 跳過(guò)幀。
  • 使用 MobileNet 的不同變體(速度更快,但是準(zhǔn)確率下降)。
  • 使用 SqueezeNet 的量子化變體(我還未對(duì)此進(jìn)行測(cè)試,但是我想應(yīng)該會(huì)更快,因?yàn)樗木W(wǎng)絡(luò)足跡更小)。

原文:

http://www.pyimagesearch.com/2017/09/18/real-time-object-detection-with-deep-learning-and-opencv/

【本文是51CTO專欄機(jī)構(gòu)“機(jī)器之心”的原創(chuàng)譯文,微信公眾號(hào)“機(jī)器之心( id: almosthuman2014)”】

 

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來(lái)源: 51CTO專欄
相關(guān)推薦

2020-03-09 14:08:25

Python目標(biāo)檢測(cè)視覺(jué)識(shí)別

2021-10-08 09:46:42

深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)人工智能

2013-04-12 10:05:49

HTML5WebSocket

2019-05-22 14:28:08

AI人工智能深度學(xué)習(xí)

2017-09-20 16:25:00

深度學(xué)習(xí)視覺(jué)領(lǐng)域計(jì)算機(jī)

2023-12-19 16:01:40

深度學(xué)習(xí)人工智能目標(biāo)檢測(cè)

2017-10-02 16:13:47

深度學(xué)習(xí)目標(biāo)檢測(cè)計(jì)算機(jī)視覺(jué)

2018-12-29 09:38:16

Python人臉檢測(cè)

2024-05-17 13:17:39

2024-09-04 15:42:38

OpenCV開(kāi)發(fā)Python

2024-06-21 10:40:00

計(jì)算機(jī)視覺(jué)

2020-05-28 07:15:00

機(jī)器學(xué)習(xí)TensorFlow人工智能

2020-09-21 05:58:40

深度學(xué)習(xí)算法目標(biāo)檢測(cè)

2019-05-24 10:30:38

2010-03-26 11:13:11

2023-10-15 10:10:12

模型數(shù)據(jù)

2021-04-15 09:50:41

深度學(xué)習(xí)編程人工智能

2022-04-05 20:54:21

OpenCVPython人臉檢測(cè)

2020-06-10 21:56:53

醫(yī)療物聯(lián)網(wǎng)IOT

2012-12-25 09:36:11

Storm大數(shù)據(jù)分析
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)