基于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)文章
pytorch下的unsqueeze和squeeze的用法說明
這篇文章主要介紹了pytorch下的unsqueeze和squeeze的用法說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-02-02
pytorch對(duì)梯度進(jìn)行可視化進(jìn)行梯度檢查教程
今天小編就為大家分享一篇pytorch對(duì)梯度進(jìn)行可視化進(jìn)行梯度檢查教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02
pytorch 實(shí)現(xiàn)在一個(gè)優(yōu)化器中設(shè)置多個(gè)網(wǎng)絡(luò)參數(shù)的例子
今天小編就為大家分享一篇pytorch 實(shí)現(xiàn)在一個(gè)優(yōu)化器中設(shè)置多個(gè)網(wǎng)絡(luò)參數(shù)的例子,具有很好參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02
Python操作SQLite/MySQL/LMDB數(shù)據(jù)庫的方法
這篇文章主要介紹了Python操作SQLite/MySQL/LMDB數(shù)據(jù)庫的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-11-11
如何基于python3和Vue實(shí)現(xiàn)AES數(shù)據(jù)加密
這篇文章主要介紹了如何基于python3和Vue實(shí)現(xiàn)AES數(shù)據(jù)加密,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
django-allauth入門學(xué)習(xí)和使用詳解
這篇文章主要介紹了django-allauth入門學(xué)習(xí)和使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
Python for循環(huán)通過序列索引迭代過程解析
這篇文章主要介紹了Python for循環(huán)通過序列索引迭代過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02
python 爬蟲基本使用——統(tǒng)計(jì)杭電oj題目正確率并排序
這篇文章主要介紹了python 爬蟲基本的基本使用,主要利用了Urllib和BeautifulSoup4這兩個(gè)庫,配以簡單的實(shí)例幫助大家理解,感興趣的朋友可以了解下2020-10-10

