入門實踐 | 使用OpenCV進行對象檢測

2021-03-02 深度學習衝鴨

關注「深度學習衝鴨」,一起學習一起衝鴨!

設為星標,第一時間獲取更多乾貨

著作權歸作者所有,本文僅作學術分享,若侵權,請聯繫後臺刪文處理

!!文末附每日小知識點哦!!


目標檢測是圖像處理的重要組成部分。自動駕駛汽車必須檢測車道,路面,其他車輛,人,標誌和信號等。我們生活在一個動態的世界中,一切都在不斷變化。對象檢測的應用無處不在。

我們正在研究自動駕駛汽車的深度學習和計算機視覺。特徵檢測是對象檢測的任務之一。那麼,什麼是特徵檢測?對於人類,我們了解圖案,形狀,大小,顏色,長度以及其他可識別物體的物體。它也有點類似於計算機。

特徵可以是形狀,邊緣,長度等任何形式,也可以是所有特徵的組合。在我們之前有DeepFake檢測的項目,我們使用MSE(均方誤差),PSNR(峰值信噪比),SSIM(結構相似性指數)和直方圖作為特徵從真實圖像中識別DeepFake圖像。

一個好的算法必須是可重複的和可擴展的。例如,假設目標是從大量圖像中檢測狗,其中還包含貓和其他動物的圖像。

關於特徵的表述,它必須是獨特的,並且需要在大多數數據中顯示。如果我們有大部分與上述兩張圖片相似的圖片,那麼這裡的不好的特徵是什麼?

在這種情況下,一個不好的特徵就是耳朵的大小。我們的理解是狗耳朵的大小通常較大。但這不是示例圖像中的原因。在第一個圖像中,狗的耳朵與貓相似,甚至更小。如果我們僅使用耳廓大小作為特徵來僅使用這兩個圖像來訓練模型,則我們將有50%的真陰性或假陽性。這帶來了另一個重要的觀點。如果您想在模型中獲得更高的成功,則應謹慎選擇該功能。大小尺寸也不是一個好的特徵。

我們的目標是識別其他物體,例如道路上的卡車。我們可以使用哈裡斯角點檢測或精巧邊緣檢測之類的技術來檢測邊緣。我們需要將汽車,行人,標誌與圖像分開。我們可以使用OpenCV專門識別卡車。

import cv2cv2.matchTemplate()

模板匹配只是一種將輸入圖像複製到模板圖像上,並在模板圖像下比較模板圖像和輸入圖像的技術。它返回一個灰度圖像,表示該模板與多少個像素匹配。OpenCV提供了許多模板匹配方法。這是相關係數的數學公式。

一旦在兩個圖像中都找到匹配項,它將選出相似點。OpenCV官方文檔在此處提供了帶有代碼示例的詳細信息。讓我們找到路上的卡車。

import cv2import numpy as npimport matplotlib.image as mpimgfrom matplotlib import pyplot as plt%matplotlib inlineimage_color =cv2.imread('actual_truck.jpg')plt.imshow(image_color)

我們從文件中讀取圖像。我們將在此圖像中找到卡車。

使用灰度的原因是使圖像儘可能簡單。不需要彩色圖像。顏色增加了圖像的複雜度,並增加了信噪比。

image_gray = cv2.cvtColor(image_color,cv2.COLOR_BGR2GRAY)plt.imshow(image_gray,cmap ='gray')


這是我們的模板圖像。OpenCV使用此圖像收集了特徵並找到了卡車。

import cv2import numpy as npimport matplotlib.image as mpimgfrom matplotlib import pyplot as plt%matplotlib inlineimage_color =cv2.imread('sample_truck.jpg')x= 235y = 350h = 200w = 150cropped=image_color[y:y+h, x:x+w]plt.imshow(cropped)status = cv2.imwrite('t.jpg', cropped)print("Image written to file-system :",status)

# Perform template matching using OpneCVresult = cv2.matchTemplate(image_gray,template, cv2.TM_CCOEFF_NORMED)print(result.shape)plt.imshow(result)

min_val, max_val, min_loc, max_loc =cv2.minMaxLoc(result)top_left = max_locbottom_right = (top_left[0] + w,top_left[1] + h)cv2.rectangle(image_color, top_left,bottom_right, (10,10,255), 5)plt.imshow(image_color)

我們介紹了什麼是圖像處理及其應用。然後我們討論有關cv2.matchTemplate()。最後,我們使用模板匹配來識別道路上的卡車。

每天進步一丟丟

用隨機值初始化權重和偏差——把輸入傳入網絡,得到輸出值——計算預測值和真實值之間的誤差——對每一個產生誤差的神經元,調整相應的(權重)值以減小誤差——重複迭代,直至得到網絡權重的最佳值



!重磅!【深度學習衝鴨技術交流二群】微信交流群已成立

投稿或交流學習,備註:暱稱-學校(公司)-方向,申請進入深度學習衝鴨技術交流群。
方向有很多:機器學習,深度學習,python,目標檢測、目標跟蹤、圖像分割、OCR、姿態估計、去噪、人臉檢測&識別等。

相關焦點

  • 使用OpenCv和Dlib進行打哈欠檢測
    打哈欠檢測與應用打哈欠檢測就是使用OpenCV和Dlib來檢測打哈欠(由於疲勞或無聊而張大嘴巴深吸氣)。可廣泛應用於自駕車、駕駛員疲勞檢測、駕駛員睡意檢測、駕駛員意識檢測等領域。安裝OpenCv和Dlib庫OpenCv的安裝如下:pip install opencv-pythonDlib的安裝如下:pip install cmakepip install dlib導入Opencv,Dlib和Numpy庫設置dat文件我們將.dat文件放置到工作目錄中,它是一個可以識別面部特徵並提供信息的模型
  • 給OpenCV初學者的禮物——OpenCV人臉檢測入門教程
    這個例子,需要引用3個OpenCV的頭文件:#include "opencv2/objdetect.hpp"#include "opencv2/highgui.hpp"#include "opencv2/imgproc.hpp"當然,也可以一步到位,把所有的OpenCv庫都引了#include "opencv2/opencv.hpp
  • 使用Python+OpenCV進行圖像處理之入門教程
    OpenCV可以與其他庫一起使用,比如Numpy,這使得Python能夠處理OpenCV數組結構。實現我們的第一個濾波器檢測邏輯計算機不能像人類一樣識別物體,為了能讓計算機達到這個目的,我們可以使用各種技術來讓計算機理解圖像,我們會將顏色作為檢測物體的主要依據。什麼是HSVHSV是Hue, Saturation 和Value(色調、飽和度和值)。
  • 【計算機視覺處理一】OpenCV入門
    本次課程使用的Python語言。詳細內容可以查看OpenCV的官網:https://opencv.org/。2、OpenCV能做什麼?OpenCV中實現了了很多計算機視覺算法,包括基本的圖片運算、閾值處理、圖像濾波、形態學操作等。除此之外,OpenCV還提供了級聯分類器可以用於人臉檢測。
  • 使用OpenCV深度學習模塊在圖像分類下的應用實踐
    在計算機視覺領域,圖像分類、目標檢測、語義分割和視覺風格變換等基礎任務的性能也因為採用了深度學習的方法而有了飛躍性的提升。本章將為讀者梳理深度學習方法在這些基本應用場景的應用情況,並結合OpenCV深度學習模塊的示例程序,從原始碼和實際運行兩個層面進行講解。
  • OpenCV入門及應用案例:手把手教你做DNN圖像分類
    、背景減除和對象追蹤等算法calib3d:包含基礎的多視角幾何算法、單個和立體相機標定算法、對象姿勢預測算法、立體一致性算法,以及3D元素重建Features2d:圖像顯著特徵檢測、特徵點描述和匹配Objdetect:對象檢測和預先定義的類別檢測(如臉、眼、杯子、人、車等)Video
  • 基於opencv 的圖像處理入門教程
    檢測和修正歪曲的文字在本例中,使用的圖片如下:首先還是先讀取圖片,並轉換為灰度圖:接著採用 bitwise_not 方法將背景和文字顏色進行交換,變成白字黑底:接著分別找到 x,顏色檢測在本次例子中實現檢測圖片中的綠色區域,使用的圖片:首先是讀取圖片後,轉換到 HSV 空間:接著需要通過 Numpy 設置綠色像素值的上下範圍區間:lower_green = np.array([34, 177,
  • 【走進OpenCV】霍夫變換檢測直線和圓
    學習計算機視覺最重要的能力應該就是編程了,為了幫助小夥伴儘快入門計算機視覺,小白準備了【走進OpenCV】系列,主要幫助小夥伴了解如何調用OpenCV
  • 【OpenCV入門十七講】形態學操作
    學習計算機視覺最重要的能力應該就是編程了,為了幫助小夥伴儘快入門計算機視覺
  • 基於OpenCV的條形碼檢測
    打開一個新文件,將其命名為 detect_barcode.py,如何開始寫代碼:# 導入必要的包/庫import numpy as npimport argparseimport imutilsimport cv2# 構造參數解析並分析參數ap = argparse.ArgumentParser()ap.add_argument("-i"
  • 【OpenCV入門之十三】如何在ROI中添加Logo
    學習計算機視覺最重要的能力應該就是編程了,為了幫助小夥伴儘快入門計算機視覺,小白準備了【OpenCV入門】系列。
  • 基於 opencv 的圖像處理入門教程
    形心檢測檢測一張圖片的形心位置,實現步驟如下所示:通過moments() 方法計算圖片的 moments;本例使用的圖片如下:首先是讀取圖片後,轉換到 HSV 空間:檢測圖片的輪廓輪廓是圖片中將連續的點連接在一起的曲線,通常檢測輪廓的目的是為了檢測物體。本例中使用的圖片如下:
  • 利用OpenCV和深度學習實現人臉檢測
    為了避免折騰,還是建議使用OpenCV3.3.1及以上(如OpenCV3.4)。., the layers themselves)The .caffemodel file which contains the weights for the actual layersface_detector文件分析:本教程直接使用訓練好的.caffemodel來進行人臉檢測,即只需要.caffemodel和deploy.prototxt兩個文件。
  • 手把手教你使用圖像處理利器OpenCV
    首先,應該具備一定的程式語言技能,本文使用的是Python語言,如果尚未掌握此語言,推薦閱讀《跟老齊學Python:輕鬆入門》或《Python大學實用教程》。2:使用Canny算子進行邊緣檢測到目前為止,我們使用的玫瑰圖像的背景是不變的,也就是黑色的,因此,我們將把這個應用用於不同的圖像,以更好地展示算法的功效。原因是,如果背景是恆定的,邊緣檢測任務就變得相當簡單,這不是我們所希望的。在本文開始部分,我們提到了一個關於貓的分類器。
  • 世界上最好的語言PHP:OpenCV與計算機視覺已在我掌控之下
    本文從實踐的角度介紹了如何使用 PHP 與 OpenCV 構建人臉檢測、人臉識別、超解析度與目標檢測等系統,因此 PHP 的各位擁躉們,可以盡情使用 OpenCV 探索計算機視覺了。本文首發於公眾號機器之心(ID:almosthuman2014),部分代碼格式有誤可參閱原文章。
  • 【走進OpenCV】學習Opencv不得不掌握的操作
    學習計算機視覺最重要的能力應該就是編程了,為了幫助小夥伴儘快入門計算機視覺,小白準備了【走進OpenCV】系列,主要幫助小夥伴了解如何調用OpenCV
  • opencv-python獲取圖像:面向對象與面向過程
    這裡需要注意以下,opencv讀取圖片默認通道為BGR的格式,當在其他UI用戶界面顯示圖像時注意轉換一下通道順序,例如BGR轉換成RGB:Image1=cv2.cvtColor(image, cv2.COLOR_BGR2RGB)下面讀取一張圖片並顯示
  • Python 圖像處理 OpenCV (1):入門
    新系列第一件事兒當然是資源推薦,下面是一些有關 OpenCV 的資源連結:資源連結:官方網站:https://opencv.org/GitHub:https://github.com/opencv/opencv官方文檔:https://docs.opencv.org/中文文檔(非官方):http://www.woshicver.com
  • 基於TensorFlow 、OpenCV 和 Docker 的實時視頻目標檢測
    使用Youtube視頻進行視頻處理測試動機我們從 Dat Tran 這篇文章開始挑戰實時目標檢測。此外,在次項目我還添加了一個視頻後處理功能,同樣使用 multiprocessing 庫來減少處理時間(使用 Tensorflow 原始目標檢測 API 處理時間會非常長)。實時和視頻目標識別都可以在我的個人筆記本電腦上以高性能運行,僅使用 8GB CPU。
  • TechRepo | OpenCV-Python簡單入門
    這些算法可以被用來檢測和識別人臉,跟蹤移動的物體,提取物體的三維模型,從立體相機中產生3D point clouds,將圖片拼接來生成一張高解析度的全景圖像,從圖像資料庫中找到相似性的圖像等等。OpenCV 還提供了機器學習模塊,可以使用正態貝葉斯、K最近鄰、支持向量機、決策樹、隨機森林、人工神經網絡等機器學習算法。