基于MTCNN/TensorFlow實(shí)現(xiàn)人臉檢測
人臉檢測方法有許多,比如opencv自帶的人臉Haar特征分類器和dlib人臉檢測方法等。對(duì)于opencv的人臉檢測方法,有點(diǎn)是簡單,快速;存在的問題是人臉檢測效果不好。正面/垂直/光線較好的人臉,該方法可以檢測出來,而側(cè)面/歪斜/光線不好的人臉,無法檢測。因此,該方法不適合現(xiàn)場應(yīng)用。對(duì)于dlib人臉檢測方法 ,效果好于opencv的方法,但是檢測力度也難以達(dá)到現(xiàn)場應(yīng)用標(biāo)準(zhǔn)。
MTCNN是基于深度學(xué)習(xí)的人臉檢測方法,對(duì)自然環(huán)境中光線,角度和人臉表情變化更具有魯棒性,人臉檢測效果更好;同時(shí),內(nèi)存消耗不大,可以實(shí)現(xiàn)實(shí)時(shí)人臉檢測。
代碼如下:
from scipy import misc import tensorflow as tf import detect_face import cv2 import matplotlib.pyplot as plt %pylab inline minsize = 20 # minimum size of face threshold = [ 0.6, 0.7, 0.7 ] # three steps's threshold factor = 0.709 # scale factor gpu_memory_fraction=1.0 print('Creating networks and loading parameters') with tf.Graph().as_default(): gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=gpu_memory_fraction) sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options, log_device_placement=False)) with sess.as_default(): pnet, rnet, onet = detect_face.create_mtcnn(sess, None) image_path = '/home/cqh/faceData/multi_face/multi_face3.jpg' img = misc.imread(image_path) bounding_boxes, _ = detect_face.detect_face(img, minsize, pnet, rnet, onet, threshold, factor) nrof_faces = bounding_boxes.shape[0]#人臉數(shù)目 print('找到人臉數(shù)目為:{}'.format(nrof_faces)) print(bounding_boxes) crop_faces=[] for face_position in bounding_boxes: face_position=face_position.astype(int) print(face_position[0:4]) cv2.rectangle(img, (face_position[0], face_position[1]), (face_position[2], face_position[3]), (0, 255, 0), 2) crop=img[face_position[1]:face_position[3], face_position[0]:face_position[2],] crop = cv2.resize(crop, (96, 96), interpolation=cv2.INTER_CUBIC ) print(crop.shape) crop_faces.append(crop) plt.imshow(crop) plt.show() plt.imshow(img) plt.show()
實(shí)驗(yàn)效果如下:
再上一組效果圖:
關(guān)于MTCNN,更多資料可以點(diǎn)擊鏈接
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 解決Tensorflow安裝成功,但在導(dǎo)入時(shí)報(bào)錯(cuò)的問題
- 完美解決安裝完tensorflow后pip無法使用的問題
- Python(TensorFlow框架)實(shí)現(xiàn)手寫數(shù)字識(shí)別系統(tǒng)的方法
- Tensorflow實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)的詳細(xì)代碼
- Tensorflow實(shí)現(xiàn)AlexNet卷積神經(jīng)網(wǎng)絡(luò)及運(yùn)算時(shí)間評(píng)測
- Tensorflow卷積神經(jīng)網(wǎng)絡(luò)實(shí)例進(jìn)階
- 解決安裝tensorflow遇到無法卸載numpy 1.8.0rc1的問題
相關(guān)文章
完美解決python遍歷刪除字典里值為空的元素報(bào)錯(cuò)問題
下面小編就為大家?guī)硪黄昝澜鉀Qpython遍歷刪除字典里值為空的元素報(bào)錯(cuò)問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-09-09python中綁定方法與非綁定方法的實(shí)現(xiàn)示例
本文主要介紹了python中綁定方法與非綁定方法的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09利用python實(shí)現(xiàn)簡單的情感分析實(shí)例教程
商品評(píng)論挖掘、電影推薦、股市預(yù)測……情感分析大有用武之地,下面這篇文章主要給大家介紹了關(guān)于利用python實(shí)現(xiàn)簡單的情感分析的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06Python實(shí)現(xiàn)繪制3D地球旋轉(zhuǎn)效果
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)繪制出3D地球旋轉(zhuǎn)的效果,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下2023-02-02python base64 decode incorrect padding錯(cuò)誤解決方法
這篇文章主要介紹了python base64 decode incorrect padding錯(cuò)誤解決方法,本文使用把string補(bǔ)齊等號(hào)的方法解決了這個(gè)錯(cuò)誤,需要的朋友可以參考下2015-01-01