[深度學習]人臉檢測-Tensorflow2.x keras程式碼實現
1. 所需Python環境
pip install opencv-python
pip install mtcnn
import cv2
import mtcnn
print(mtcnn.__version__)
print(cv2.__version__)
0.1.0
4.4.0
2. 資料準備
下載下面圖片並且儲存為test1.jpg放在你的專案目錄裡
下載下面圖片並且儲存為test2.jpg放在你的專案目錄裡
3. 程式碼實現
3.1 用OpenCV實現
OpenCV提供了許多預訓練的模型。 我們就用其中一個,在OpenCV GitHub專案上也可用。
從OpenCV GitHub專案下載用於正面人臉檢測的預訓練模型,並將其放在檔名“ haarcascade_frontalface_default.xml”的當前工作目錄中。
下載haarcascade_frontalface_default.xml
執行下面程式碼
# plot photo with detected faces using opencv cascade classifier
from cv2 import imread
from cv2 import imshow
from cv2 import waitKey
from cv2 import destroyAllWindows
from cv2 import CascadeClassifier
from cv2 import rectangle
# load the photograph
pixels = imread('test1.jpg')
# load the pre-trained model
classifier = CascadeClassifier('haarcascade_frontalface_default.xml')
# perform face detection
bboxes = classifier.detectMultiScale(pixels)
# print bounding box for each detected face
for box in bboxes:
# extract
x, y, width, height = box
x2, y2 = x + width, y + height
# draw a rectangle over the pixels
rectangle(pixels, (x, y), (x2, y2), (0,0,255), 1)
# show the image
imshow('face detection', pixels)
# keep the window open until we press a key
waitKey(0)
# close the window
destroyAllWindows()
修改為下面程式碼,載入test2.jpg,
pixels = imread('test2.jpg')
大部分都檢測到了,但是仔細看發現第二排第一個沒有檢測到,還有的是雙框。
detectMultiScale()函式提供了一些引數來幫助調整分類器的用法。
bboxes = classifier.detectMultiScale(pixels, 1.05, 8)
經過微調,結果如下,其實還是不好,你們可以試一試。
3.2 用深度學習實現目標檢測
# face detection with mtcnn on a photograph
from matplotlib import pyplot
from matplotlib.patches import Rectangle
from mtcnn.mtcnn import MTCNN
# draw an image with detected objects
def draw_image_with_boxes(filename, result_list):
# load the image
data = pyplot.imread(filename)
# plot the image
pyplot.imshow(data)
# get the context for drawing boxes
ax = pyplot.gca()
# plot each box
for result in result_list:
# get coordinates
x, y, width, height = result['box']
# create the shape
rect = Rectangle((x, y), width, height, fill=False, color='red')
# draw the box
ax.add_patch(rect)
# show the plot
pyplot.show()
filename = 'test1.jpg'
# load image from file
pixels = pyplot.imread(filename)
# create the detector, using default weights
detector = MTCNN()
# detect faces in the image
faces = detector.detect_faces(pixels)
# display faces on the original image
draw_image_with_boxes(filename, faces)
換成test2.jpg, 執行結果如下: 可以看出效果不錯哦。
filename = 'test2.jpg'
我們可以通過Circle類為眼睛,鼻子和嘴巴畫一個圓。 例如
# draw the dots
for key, value in result['keypoints'].items():
# create and draw dot
dot = Circle(value, radius=2, color='red')
ax.add_patch(dot)
執行下面程式碼
# face detection with mtcnn on a photograph
from matplotlib import pyplot
from matplotlib.patches import Rectangle
from matplotlib.patches import Circle
from mtcnn.mtcnn import MTCNN
# draw an image with detected objects
def draw_image_with_boxes(filename, result_list):
# load the image
data = pyplot.imread(filename)
# plot the image
pyplot.imshow(data)
# get the context for drawing boxes
ax = pyplot.gca()
# plot each box
for result in result_list:
# get coordinates
x, y, width, height = result['box']
# create the shape
rect = Rectangle((x, y), width, height, fill=False, color='red')
# draw the box
ax.add_patch(rect)
# draw the dots
for key, value in result['keypoints'].items():
# create and draw dot
dot = Circle(value, radius=2, color='red')
ax.add_patch(dot)
# show the plot
pyplot.show()
filename = 'test1.jpg'
# load image from file
pixels = pyplot.imread(filename)
# create the detector, using default weights
detector = MTCNN()
# detect faces in the image
faces = detector.detect_faces(pixels)
# display faces on the original image
draw_image_with_boxes(filename, faces)
換成test2.jpg, 執行結果如下: 可以看出效果不錯哦。
相關文章
- faced:基於深度學習的CPU實時人臉檢測深度學習
- 人臉檢測識別,人臉檢測,人臉識別,離線檢測,C#原始碼C#原始碼
- JavaScript人臉檢測的實現方法JavaScript
- 3分鐘內實現人臉檢測
- 從傳統方法到深度學習,人臉關鍵點檢測方法綜述深度學習
- 基於opencv實現簡單人臉檢測OpenCV
- 【蜂口 | AI人工智慧】人臉檢測(上)——龍鵬 深度學習與人臉影像應用連載(一)AI人工智慧深度學習
- OpenCv人臉檢測技術-(實現抖音特效-給人臉戴上墨鏡)OpenCV特效
- 「每週CV論文推薦」 深度學習人臉檢測入門必讀文章深度學習
- OpenCV&Qt學習之四——OpenCV 實現人臉檢測與相關知識整理OpenCVQT
- 人臉檢測 二
- 使用Keras和遷移學習從人臉影像中預測體重指數BMIKeras遷移學習
- 深度學習keras筆記深度學習Keras筆記
- 深度學習 + OpenCV,Python實現實時影片目標檢測深度學習OpenCVPython
- 如何用OpenCV在Python中實現人臉檢測OpenCVPython
- [計算機視覺]人臉應用:人臉檢測、人臉對比、五官檢測、眨眼檢測、活體檢測、疲勞檢測計算機視覺
- 人臉活體檢測
- 前端人臉檢測指南前端
- 深度學習 + OpenCV,Python實現實時視訊目標檢測深度學習OpenCVPython
- 深度學習:乳腺x檢測深度學習
- COVID-19:利用Opencv, Keras/Tensorflow和深度學習進行口罩檢測OpenCVKeras深度學習
- canvas+face-api人臉實時檢測CanvasAPI
- 人臉識別檢測專案實戰
- 人臉檢測的harr檢測函式函式
- 人臉檢測(detection)與人臉校準(alignment)
- 十分鐘搞定Keras序列到序列學習(附程式碼實現)Keras
- opencv視訊人臉檢測OpenCV
- OpenCV 人臉檢測自學(3)OpenCV
- 人臉活體檢測人臉識別:眨眼+張口
- 深度學習之目標檢測深度學習
- 使用深度學習檢測瘧疾深度學習
- 深度學習之瑕疵缺陷檢測深度學習
- 人臉檢測背景介紹和發展現狀
- 手把手教你運用深度學習構建影片人臉識別模型(Python實現)深度學習模型Python
- iOS 人臉關鍵點檢測iOS
- Android人臉檢測介紹Android
- FaceDetector 人臉檢測追蹤demo
- 資料 + 程式碼,基於 Keras 的煙火檢測Keras