[深度學習]人臉檢測-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#原始碼
- 3分鐘內實現人臉檢測
- 基於opencv實現簡單人臉檢測OpenCV
- 【蜂口 | AI人工智慧】人臉檢測(上)——龍鵬 深度學習與人臉影像應用連載(一)AI人工智慧深度學習
- 「每週CV論文推薦」 深度學習人臉檢測入門必讀文章深度學習
- COVID-19:利用Opencv, Keras/Tensorflow和深度學習進行口罩檢測OpenCVKeras深度學習
- 如何用OpenCV在Python中實現人臉檢測OpenCVPython
- OpenCv人臉檢測技術-(實現抖音特效-給人臉戴上墨鏡)OpenCV特效
- 人臉檢測 二
- 深度學習keras筆記深度學習Keras筆記
- [計算機視覺]人臉應用:人臉檢測、人臉對比、五官檢測、眨眼檢測、活體檢測、疲勞檢測計算機視覺
- 使用Keras和遷移學習從人臉影像中預測體重指數BMIKeras遷移學習
- 深度學習:乳腺x檢測深度學習
- 前端人臉檢測指南前端
- 人臉活體檢測
- canvas+face-api人臉實時檢測CanvasAPI
- 人臉識別檢測專案實戰
- 使用深度學習檢測瘧疾深度學習
- 深度學習之瑕疵缺陷檢測深度學習
- 深度學習之目標檢測深度學習
- 資料 + 程式碼,基於 Keras 的煙火檢測Keras
- opencv視訊人臉檢測OpenCV
- 機器學習實戰-SVM模型實現人臉識別機器學習模型
- 手把手教你運用深度學習構建影片人臉識別模型(Python實現)深度學習模型Python
- 人臉活體檢測人臉識別:眨眼+張口
- 人臉檢測背景介紹和發展現狀
- 64行程式碼實現簡單人臉識別行程
- 基於深度學習的車輛檢測系統(MATLAB程式碼,含GUI介面)深度學習MatlabGUI
- Python深度學習(使用 Keras 回撥函式和 TensorBoard 來檢查並監控深度學習模型)--學習筆記(十六)Python深度學習Keras函式ORB模型筆記
- 手把手教你運用深度學習構建視訊人臉識別模型(Python實現)深度學習模型Python
- TF專案實戰(基於SSD目標檢測)——人臉檢測1
- iOS 人臉關鍵點檢測iOS
- FaceDetector 人臉檢測追蹤demo
- Python人臉識別微笑檢測Python
- (Keras)基於深度學習SketchCode將線框原型圖轉換成HTML程式碼Keras深度學習原型HTML
- 【蜂口 | AI人工智慧】關鍵點檢測——龍鵬 深度學習與人臉影像應用連載(三)AI人工智慧深度學習
- 5步實現深度學習OpenCV物件檢測:Faster-RCNN圖片識別深度學習OpenCV物件ASTCNN