之前为了配置tensorflow-gpu的环境又是装cuda,又是装cudnn,还有tensoflow-gpu等等,,因为当时也是第一次搭建这个环境,所以完全是按照别人的搭建方法来一步一步的弄得,,后来我在给室友安装环境的时候,发现cuda,cudnn什么的完全不用自己安装,,,全部交给 anaconda3 (好东西)就行了
Anaconda3安装
几乎最后所有的东西都是用这个完成的,,所以先去安装这玩意,,
直接官网下载就行了,,安装的时候记得选择 PATH 配置,,不然之后还得自己去弄环境变量,,
然后在 powershell 里检查一下确实配置成功就行了 conda -V
配置一个环境
因为我的电脑是 win10x64+gtx1050,,所以选择安装 tensorflow-gpu-1.9.0版的,,gpu版的到时候训练模型的时候跑的很快,,(大概1s2-3张照片吧),如果用cpu跑的话有些慢,,1张照片可能要2s左右,,,
打开powsershell,,(千万不要换源,,千万不要换源,,千万不要换源,,
创建一个环境
conda create -n [name] python=3.5 tensorflow-gpu=1.9.0
可能这一步会很慢,,但是建议不要去换源,,因为会出现下的东西不全,最后可能不能使用gpu版的tensorflow,,,
输完这段命令后,,等一会会出现一些要安装的东西列表,,这时主要看一下有没有python, tensorflow-gpu, cudnn, cudatoolkit,,,都有的话就y确定等就行了,,,
环境的名字随便起,,
激活环境
因为这时是powershell下,,,激活环境会不成功,,所以直接切换到cmd模式就行了,,输 cmd,,,
activate [name]
这时会发现前面多了一个 ([name]) 的东西,表示激活环境成功,,,
然后再测试一下python下能不能调用 tensorflow-gpu 版,,测试的方法可以参考我的上一篇博客里后面那一部分内容 ,,,
运行简单的人脸识别的实例
前面的准备工作弄好之后就可以运行一个简单的实例看一下在这个环境下的运行情况,,,
下面的python程序是学长给我的,,然后我发现学长的程序是这个博主写的项目,,其中也有我的一些改动,,下面会提到,,
下面的操作都是在刚刚创建的环境下操作的,,,否则的话会是anaconda3默认的base环境下,,,
安装必备的库
因为这个人脸识别的实现用到了 opencv, dlib等等,,所以先安装这些,,
安装opencv
conda install opencv
安装dlib
这个玩意的安装有点坑,,有时貌似直接安装会安装不上,,会提示没有 cmake 这个包管理软件,,所以要先安装cmake,,建议是在anaconda3主程序(开始菜单里找 Anaconda Navigator)中找到你的那个环境,,然后再 uninstall 中找到 cmake 然后安装,,,
但是这样可能还是安装不了dlib,,无论是用conda还是pip安装,,
conda install dlib
pip install dlib
后来我找到一个解决方法,,去下载 dlib****.whl 然后本地安装,,
再 DownloadFiles 中找到一个这个东西,,
dlib-19.1.0-cp35-cp35m-win_amd64.whl
然后放到你现在的路径下,,pip install dlib-19.1.0-cp35-cp35m-win_amd64.whl
应该这样就可以安装上了dlib,,,当然你可以用其他的方法安装,,网上也有很多解决方法,,,也有可能直接用 pip 就能安装上(比如我的电脑就能,,室友的就会出现上面的错误,,得绕一个弯子)
安装sklearn
这个简单,,会在训练那一步用到
pip install sklearn
运行实例
get_my_faces.py: 获取人脸并识别出来裁剪出来作为元数据
set_other_faces.py: 获取14000张人脸的照片作为训练所要用的数据
train_faces.py: 训练模型
is_my_face.py: 实时获取人脸,并判断是否和第一步所录入的人脸相匹配
get_my_faces
这一步可以使用 dlib 的人脸识别裁剪,也可以使用opencv自带的来使用,,和室友试验了一下,发现opencv的虽然相对较快,但是识别不佳,而且同样大小的视频最后生成的照片个数也很少(也有可能是那里没写好),,
原博主的程序是拍一张照片然后识别一张裁剪一张,,这样很慢,,所以我把它改成了录一段视频,然后对于每一帧来识别裁剪,,这样贼快,,,(按q退出录制后自动进行后面的内容
注意复制代码后要适当的改一些参数,,比如说opencv中hear的参数等等
import cv2
import os
import dlib
import sys
import random
import shutil
def make_video():
# 录制视频
shutil.rmtree('./my_faces')
"""使用opencv录像"""
cap = cv2.VideoCapture(0) # 默认的摄像头
# 指定视频代码
fourcc = cv2.VideoWriter_fourcc(*"DIVX")
out = cv2.VideoWriter('233.avi', fourcc, 20.0, (640,480))
while(cap.isOpened()):
ret, frame = cap.read()
if ret:
out.write(frame)
#
cv2.imshow('frame',frame)
# 等待按键q操作关闭摄像头
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()
# 改变图片的亮度与对比度
def relight(img, light=1, bias=0):
w = img.shape[1]
h = img.shape[0]
#image = []
for i in range(0,w):
for j in range(0,h):