当前位置: 首页 > 科技观察

使用Python进行人脸识别「包括源代码」

时间:2023-03-21 20:55:41 科技观察

Python可以从图像或视频中检测和识别您的脸。人脸检测与识别是计算机视觉领域的研究热点之一。人脸识别的应用包括人脸解锁、安全防护等,医生和医务人员通过人脸识别获取病历和病史,从而更好地诊断疾病。关于Python人脸识别在这个Python项目中,我们将构建一个从图像中识别人物的机器学习模型。我们在项目中使用了人脸识别API和OpenCV。加入Telegram上的DataFlair,随时了解最新的技术趋势!工具和库Python-3.xCV2-4.5.2Chunky-1.20.3FaceRecognition-1.3.0要安装上述包,请使用以下命令。pipinstallnumpyopencv-python要安装FaceRecognition,首先要安装dlib包。pipinstalldlib现在,使用以下命令安装人脸识别模块pipinstallface_recognition下载人脸识别Python代码请下载python人脸识别项目的源代码:人脸识别工程代码项目数据集我们可以使用自己的数据集来执行此操作人脸识别项目。对于这个项目,让我们使用流行的美国网络连续剧“老友记”作为数据集。此数据集包含在您在上一节中下载的面部识别项目代码中。建立人脸识别模型的步骤在继续之前,让我们知道什么是人脸识别和检测。面部识别是从照片和视频帧中识别或验证人脸的过程。人脸检测是指在图像中定位和提取人脸(位置和大小)以供人脸检测算法使用的过程。面部识别方法用于定位图像中唯一指定的特征。在大多数情况下,面部图像已被删除、裁剪、缩放并转换为灰度。人脸识别包括三个步骤:人脸检测、特征提取和人脸识别。OpenCV是一个用C++编写的开源库。它包含用于计算机视觉任务的各种算法和深度神经网络的实现。1.准备数据集创建2个目录,训练和测试。从互联网上为每个演员选择一张图片,并将其下载到我们的“火车”目录中。确保您选择的图像能够很好地显示面部特征,以便分类器进行分类。为了测试模型,让我们拍摄一张包含所有演员表的图像并将其放入我们的“测试”目录中。为了您的舒适,我们添加了带有项目代码的训练和测试数据。2.模型的训练首先导入必要的模块。importface_recognitionasfrimportcv2importnumpyasnpiportos人脸识别库包含各种实用程序的实现,以帮助进行人脸识别过程。现在,创建2个列表来存储图像(人)的名称及其各自的面部编码。path="./train/"known_names=[]known_name_encodings=[]images=os.listdir(path)人脸编码是一个值的向量,表示面部特征之间的重要指标,例如眼睛之间的距离,额头宽度等.我们循环遍历traincatalog中的每张图片,提取图片中的人名,计算他们的人脸编码向量,并将信息存储在对应的列表中。for_inimages:image=fr.load_image_file(path+_)image_path=path+_encoding=fr.face_encodings(image)[0]known_name_encodings.append(encoding)known_names.append(os.path.splitext(os.path.basename(image_path))[0].capitalize())3.在测试数据集中测试模型如前所述,我们的测试数据集只包含一张包含所有人的图像。使用CV2imread()方法读取测试图像。test_image="./test/test.jpg"image=cv2.imread(test_image)人脸识别库提供了一个有用的方法,称为Face_Locations(),它定位图像中检测到的每个人脸的坐标(左、下、右、上)).使用这些位置值,我们可以轻松找到人脸编码。face_locations=fr.face_locations(image)face_encodings=fr.face_encodings(image,face_locations)我们遍历每个面部位置及其在图像中的编码。然后我们将此编码与“训练”数据集中的面部编码进行比较。然后计算人脸距离,即计算测试图像编码和训练图像编码的相似度。现在,我们选择与它的最小距离,表明测试图像中的这张脸是训练数据集中的人之一。现在,使用CV2模块中的方法绘制一个带有面部位置坐标的矩形。对于(顶部、右侧、底部、左侧),zip中的面部编码(面部位置、面部编码):匹配=fr。compare_faces(known_name_encodings,face_encoding)name=""face_distances=fr.face_distance(known_name_encodings,face_encoding)best_match=np.argface_distances)如果匹配[best_match]:name=known_names[best_match]cv2.rectangle(image,(left,top),(right,bottom),(0,0,255),2)cv2.rectangle(image,(left,bottom-15),(right,bottom),(0,0,255),cv2.FILLED)font=cv2.FONT_HERSHEY_DUPLEXcv2.putText(image,name,(左+6,bottom-6),font,1.0,(255,255,255),1)使用CV2模块的imShow()方法显示图像。cv2.imshow("Result",image)使用imwrite()方法将图像保存到当前工作目录。cv2.imwrite("./output.jpg",image)释放未释放的资源(如果有的话)。cv2.waitKey(0)cv2.destroyAllWindows()Python人脸识别输出让我们看看模型的输出。