当前位置: 首页 > news >正文

谁做网站做的比较可信wordpress英文字体样式

谁做网站做的比较可信,wordpress英文字体样式,ideas wordpress theme 2.0,网站建设产品目录 前言总体设计系统整体结构图系统流程图模型流程 运行环境Python 环境TensorFlow环境界面编程环境 模块实现1. 数据预处理2. 模型构建1#xff09;定义模型结构2#xff09;交叉验证模型优化 3. 模型训练及保存4. 模型测试1#xff09;摄像头调用2#xff09;模型导入及… 目录 前言总体设计系统整体结构图系统流程图模型流程 运行环境Python 环境TensorFlow环境界面编程环境 模块实现1. 数据预处理2. 模型构建1定义模型结构2交叉验证模型优化 3. 模型训练及保存4. 模型测试1摄像头调用2模型导入及调用3前端代码UI设计训练函数自定义工具函数主活动类 系统测试1训练准确率2测试效果3模型应用 工程源代码下载其它资料下载 前言 本项目利用了Dlib库的训练模型以获取精确的面部特征。在人脸检测的过程中它不仅能够准确地定位人脸还能够确定出面部的68个关键点的准确坐标。借助这些关键点我们可以提取丰富的面部特征。 通过将这些面部特征应用于基于支持向量机SVM的分类方法我们可以对不同的面相进行有效的分类。SVM是一种强大的机器学习算法可以根据已知的面部特征和对应的面相进行训练然后用于对未知面部进行分类。 这个项目的目标是实现面相分析通过对面部特征的分类来判断面相类型。面部特征包括了眼睛、鼻子、嘴巴等各个部位的关键点位置和形态这些信息可以帮助我们理解一个人的面相特征以及可能的性格特点。 通过这个项目我们能够更深入地了解面相分析的原理和应用从而为面部特征的分类和性格分析提供一种可靠的方法。这对于心理学研究、人脸识别技术以及个性化服务等领域都有着重要的意义。 总体设计 本部分主要包括系统整体结构、系统流程和模型流程。 系统整体结构图 系统整体结构如图所示。 系统流程图 系统流程如图所示。 模型流程 模型流程如图所示。 运行环境 本部分包括Python环境、TensorFlow 环境和界面编程环境。 Python 环境 需要Python 3.7及以上配置在Windows环境下推荐下载Anaconda完成对Python环境的配置下载地址为https://www.anaconda.com/对项目的代码编写并未使用Anaconda中自带的Spyder而是另行安装PyCharm作为编程的IDE实现智能代码完成、动态错误检查与快速修复项目导航。 PyCharm下载地址为https://www.jetbrains.com/pycharm/download/。 TensorFlow环境 打开Anaconda Prompt,输入清华仓库镜像。 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config -set show_channel_urls yes创建Python 3.7的环境名称为TensorFlow此时Python版本和后面TensorFlow的版本有匹配问题此步选择Python 3.x。 conda create -n tensorflow python3.7有需要确认的地方都输入y。在Anaconda Prompt中激活TensorFlow环境: conda activate tensorflow安装CPU版本的TensorFlow pip install -upgrade --ignore -installed tensorflow界面编程环境 使用PyQt5工具包进行GUI应用的开发、便捷的QtDesigner直接进行界面绘制分离UI与逻辑避免手写界面简化工作流程。 准备配置PyCharm、 Anaconda、 Python 3.7打开Anaconda在environment中选择安装PyQt 5。安装完成后在Anaconda→Libra→bin中找到designer.exe。 打开PyCharm选择File→Settings→External Tools单击加号添加自己的工具如图所示。 单击OK按钮完成对QtDesigner的配置在PyCharm中进行界面绘制如需将界面的.ui文件转为py文件还需对PyUIC进行配置。 在External Tools中单击加号进行配置如图所示。 在PyCharm中的Tools→External Tools中找到并打开designer进行图形界面绘制得到.ui文件通过External Tools中的PyUIC工具将.ui文件转化为.py文件以供完善逻辑使用。 模块实现 本项目包括4个模块数据预处理、模型构建、模型训练及保存、模型测试下面分别给出各模块的功能介绍及相关代码。 1. 数据预处理 使用批量下载工具Google-image download, pip安装后即可使用。下载数据集analysis的相关代码如下 from __future__ import with_statement from google_images_download import google_images_download import json, osTRAIN_DATA_DIR_PATH train_imgs#下载analysis用于区域分类 with open(data/analysis.json,encodingutf-8) as f:analysis json.load(f)global_args {limit:75,output_directory:TRAIN_DATA_DIR_PATH,prefix:,keywords:,prefix_keywords:面相 }#从google_images_download中下载使用数据 for region in analysis[face_regions]: region_name region[name]for feature in region[features]:download_args global_argsdownload_args[output_directory] os.path.join(TRAIN_DATA_DIR_PATH, region_name)download_args[keywords] feature[name]response google_images_download.googleimagesdownload()response.download(download_args)default_fking_ugly_dirname os.path.join(TRAIN_DATA_DIR_PATH, region_name, download_args[prefix_keywords] feature[name])os.rename(default_fking_ugly_dirname,default_fking_ugly_dirname.replace( download_args[prefix_keywords] , ))自动从数据源下载相应包如图所示。 除此之外还用到人脸识别检测器数据库shape_predictor_68_face_landmarks.dat。dlib官方下载地址为http://dlib.net/files/下载文件shape_predictor_68_face_landmarks.dat.bz2。 2. 模型构建 数据加载进模型之后需要定义模型结构交叉验证模型优化。 1定义模型结构 从LIBSVM库中直接使用SVM (支持向量机)的方法进行数据运算调用代码如下 svm.SVC(kernellinear, probabilityTrue)2交叉验证模型优化 支持向量机的优势其一高维空间非常高效即使在数据维度比样本数量大的情况下仍然有效。其二决策函数(称为支持向量)中使用训练集的子集高效利用内存。 通用性不同的核函数与特定的决策函数一一对应常见的函数已经提供也可以定制内核。交叉验证代码如下: scores cross_val_score(svms[region_name.encode()], X, y, cv5)3. 模型训练及保存 在定义模型架构和编译之后通过训练集训练模型使模型识别人脸面部特征。这里将使用训练集和测试集拟合并保存模型。 #SVM分类 import sys path E:\Anaconda\envs\\tensorflow36\Lib\site-packages\libsvm\python sys.path.append(path) from svmutil import * from utils import * from sklearn import svm from sklearn.externals import joblib from sklearn.model_selection import train_test_split from sklearn.model_selection import cross_val_score import numpy as np #设置数据模型存储路径 SAVE_PATHdata/trained_svms.pkl SAVE_TRAIN_DATA_PATH data/train_data.pkl LIBSVM_SVMS_PATH data/%s.svm LIBSVM_LABELS_PATH data/labels.txt GET_CROSS_VAL False #是否进行交叉验证 IS_BUILD_LIBSVM_MODEL False #判断是否是LIBSVM模型 #加载模型数据 if os.path.isfile(SAVE_TRAIN_DATA_PATH):data joblib.load(SAVE_TRAIN_DATA_PATH) else:data loadData()joblib.dump(data, SAVE_TRAIN_DATA_PATH) #将模型保存至本地 svms {} if IS_BUILD_LIBSVM_MODEL:labels_file open(LIBSVM_LABELS_PATH, w) for region_name, features in data.items(): #训练数据集print(training svm for %s% (region_name))#将数据分为训练集合和测试集if not IS_BUILD_LIBSVM_MODEL:X [] y []for feature_name, feature_shapes in features.items(): #脸部特征提取for shape in feature_shapes:X.append(shape.flatten()) #记录向量特征y.append(feature_name) #记录向量名称X np.squeeze(np.array(X)) #改变向量维数y np.array(y,dtypeS128) #128位字符串#分割数据#X_train, X_test, y_train, y_test train_test_split(X,y)svms[region_name.encode()] svm.SVC(kernellinear, probabilityTrue) #设置支持向量机参数if GET_CROSS_VAL:#交叉验证scores cross_val_score(svms[region_name.encode()], X, y, cv5) #cv表示选择折数print(Cross val score: , scores)print(Accuracy:%0.2f(/- %0.2f)%(scores.mean(),scores.std()* 2))#训练部署svms[region_name.encode()].fit(X, y)#用训练数据拟合分类器模型else:#对于LIBSVM的模型处理#为方便程序重复使用模型运算效率更高将模型保存为.svm格式X [] y []for i, (feature_name, feature_shapes) in enumerate(features.items()): #遍历脸部特征以下同上for shape in feature_shapes:X.append(shape.flatten())y.append(i)X np.squeeze(np.array(X))y np.array(y,dtypeuint8)#这里改为使用int8存储#将LIBSVM模型写入文件labels_file.write(%s\n % region_name)labels_file.write(LIBSVM_SVMS_PATH % region_name)labels_file.write( )labels_file.write( .join([k.decode() for k in features.keys()]))labels_file.write(\n)#将数据训练并保存prob svm_problem(y.tolist(), X.tolist()) #tolist使数据列表化param svm_parameter(-h 0 -s 0 -t 1 -b 1)msvm_train(prob, param)svm_save_model(LIBSVM_SVMS_PATH % region_name, m) if IS_BUILD_LIBSVM_MODEL:labels_file.close() print(training svm... Done) joblib.dump(svms, SAVE_PATH) #保存模型 print(svm saved!)模型被保存后可以被重用也可以移植到其他环境中使用。 4. 模型测试 该应用实现调用计算机摄像头对人进行拍照拍照后依照面部区域特征进行判断分析最终给出面相分析结果即人工智能算命。 1摄像头调用 相关代码如下 def getImgFromCam():vs VideoStream(usePiCameraFalse).start() #调用计算机摄像头time.sleep(2.0)while True:frame vs.read()frame imutils.resize(frame, width400)gray cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)#在灰度框中检测人脸rects detector(gray, 0)if rects is not None and len(rects) 0: #当检测到有人脸存在时结束return frame2模型导入及调用 将训练好的.svm文件放入data目录下并声明模型存放路径。 SAVE_PATHdata/trained_svms.pkl SAVE_TRAIN_DATA_PATH data/train_data.pkl LIBSVM_SVMS_PATH data/%s.svm LIBSVM_LABELS_PATH data/labels.txt #将LIBSVM模型写入文件 labels_file.write(%s\n % region_name) labels_file.write(LIBSVM_SVMS_PATH % region_name) labels_file.write( ) labels_file.write( .join([k.decode() for k in features.keys()])) labels_file.write(\n)3前端代码 本部分包括UI设计、训练函数、自定义工具函数和主活动类。 UI设计 相关代码如下 import sys from PyQt5 import QtWidgets from untitled import * from PyQt5.QtWidgets import QFileDialog from try_svm import * from facereading import * import dlib #人脸处理库Dlib import numpy as np #数据处理库Numpy import cv2 #图像处理库OpenCV import os #读写文件 import shutil #读写文件 from QCandyUi.CandyWindow import colorful global imgName imgname 00000 from utils import * class MyPyQT_Form(QtWidgets.QMainWindow,Ui_MainWindow):def __init__(self):super(MyPyQT_Form,self).__init__()self.setupUi(self)#实现pushButton_click()函数textEdit是文本框的IDdef slot1(self):detector dlib.get_frontal_face_detector()#OpenCV调用摄像头cap cv2.VideoCapture(0)#人脸截图的计数器cnt_ss 0#存储人脸的文件夹current_face_dir #保存人脸图像的路径path_photos_from_camera data/data_faces_from_camera/#新建保存人脸图像文件和数据CSV文件夹def pre_work_mkdir():#新建文件夹if os.path.isdir(path_photos_from_camera):passelse:os.mkdir(path_photos_from_camera)pre_work_mkdir()#可选, 默认关闭#删除之前存的人脸数据文件夹 def pre_work_del_old_face_folders():folders_rd os.listdir(path_photos_from_camera)for i in range(len(folders_rd)):shutil.rmtree(path_photos_from_camera folders_rd[i])if os.path.isfile(data/features_all.csv):os.remove(data/features_all.csv)#每次程序录入时删掉之前存的人脸数据#如果打开每次进行人脸录入时都会删掉之前的人脸图像文件夹 person_1/,person_2/,person_3/...#如果启用此功能将删除目录中所有旧数据person_1/,person_2/,/person_3/...#pre_work_del_old_face_folders()#Check people order: person_cnt#如果有之前录入的人脸#在之前person_x的序号按照person_x1开始录入if os.listdir(data/data_faces_from_camera/):#获取已录入的最后一个人脸序号person_list os.listdir(data/data_faces_from_camera/)person_num_list []for person in person_list:person_num_list.append(int(person.split(_)[-1]))person_cnt max(person_num_list)#如果第一次存储或者没有之前录入的人脸,按照person_1开始录入else:person_cnt 0#flag用来控制是否保存图像save_flag 1#flag用来检查是否先按n再按spress_n_flag 0while cap.isOpened():flag, img_rd cap.read()#print(img_rd.shape)调试代码#默认Windows和Ubuntu为480*640macOS为1280*720kk cv2.waitKey(1)img_gray cv2.cvtColor(img_rd, cv2.COLOR_RGB2GRAY)#人脸faces detector(img_gray, 0)#要写的字体font cv2.FONT_ITALIC#按下n新建存储人脸的文件夹if kk ord(n):person_cnt 1current_face_dir path_photos_from_camera person_ str(person_cnt)os.makedirs(current_face_dir)print(\n)print(新建的人脸文件夹 / Create folders: , current_face_dir)cnt_ss 0 #将人脸计数器清零press_n_flag 1 #已经按下n#检测到人脸if len(faces) ! 0:#矩形框for k, d in enumerate(faces):#(x,y), (宽度width, 高度height)pos_start tuple([d.left(), d.top()])pos_end tuple([d.right(), d.bottom()])#计算矩形框大小height (d.bottom() - d.top())width (d.right() - d.left())hh int(height / 2)ww int(width / 2)#设置颜色color_rectangle (255, 255, 255)#判断人脸矩形框是否超出640*480if (d.right() ww) 640 or (d.bottom() hh 480) or (d.left() - ww 0) or (d.top() - hh 0):cv2.putText(img_rd, OUT OF RANGE, (20, 300), font, 0.8, (0, 0, 255), 1, cv2.LINE_AA)color_rectangle (0, 0, 255)save_flag 0if kk ord(s):print(请调整位置/Please adjust your position)else:color_rectangle (255, 255, 255)save_flag 1cv2.rectangle(img_rd,tuple([d.left() - ww, d.top() - hh]),tuple([d.right() ww, d.bottom() hh]),color_rectangle, 2)#根据人脸大小生成空的图像im_blank np.zeros((int(height * 2), width * 2, 3), np.uint8)if save_flag:#按下s保存摄像头中的人脸到本地if kk ord(s):#检查是否先按n新建文件夹if press_n_flag:cnt_ss 1for ii in range(height * 2):for jj in range(width * 2):im_blank[ii][jj] img_rd[d.top() - hh ii][d.left() - ww jj]cv2.imwrite(current_face_dir /img_face_ str(cnt_ss) .jpg, im_blank)print(写入本地 / Save into, str(current_face_dir) /img_face_ str(cnt_ss) .jpg)else:print(请在按 S 之前先按 N 来建文件夹 / Please press N before S)#显示人脸数cv2.putText(img_rd, Faces: str(len(faces)), (20, 100), font, 0.8, (0, 255, 0), 1, cv2.LINE_AA)#添加说明cv2.putText(img_rd, Face Register, (20, 40), font, 1, (0, 0, 0), 1, cv2.LINE_AA)cv2.putText(img_rd, N: Create face folder, (20, 350), font, 0.8, (0, 0, 0), 1, cv2.LINE_AA)cv2.putText(img_rd, S: Save current face, (20, 400), font, 0.8, (0, 0, 0), 1, cv2.LINE_AA)cv2.putText(img_rd, Q: Quit, (20, 450), font, 0.8, (0, 0, 0), 1, cv2.LINE_AA)#按下q键退出located str(D:\\pylearn\\Face-Reading\\)str(str(current_face_dir) \\img_face_ str(cnt_ss) .jpg)load_face cv2.imread(located)if kk ord(q):print(located)png QtGui.QPixmap(located).scaled(self.label.width(), self.label.height()) #适应设计标签时的大小self.label.setPixmap(png)wenben apply(load_face)while not wenben.empty():temp wenben.get()#print(temp)调试代码self.textEdit.append(temp)break#如果需要摄像头窗口大小可调#cv2.namedWindow(camera, 0)调试代码cv2.imshow(camera, img_rd)#释放摄像头cap.release()cv2.destroyAllWindows()def duqu(self):global imgNameprint(笑一笑就好)imgName, imgType QFileDialog.getOpenFileName(self,打开图片,, *.jpg;;*.png;;*.jpeg;;*.bmp;;All Files (*))#显示图片#print(str(imgName))调试代码png QtGui.QPixmap(imgName).scaled(self.label.width(), self.label.height()) #适应设计标签时的大小self.label.setPixmap(png)def suanming(self):self.textEdit.setReadOnly(True)img2 cv2.imread(imgName)wenben apply(img2)while not wenben.empty():temp wenben.get()#print(temp)self.textEdit.append(temp) if __name__ __main__:app QtWidgets.QApplication(sys.argv)my_pyqt_form MyPyQT_Form()my_pyqt_form.show()sys.exit(app.exec_())训练函数 相关代码如下 #SVM分类 import sys path E:\Anaconda\envs\\tensorflow36\Lib\site-packages\libsvm\python sys.path.append(path) from svmutil import * from utils import * from sklearn import svm from sklearn.externals import joblib from sklearn.model_selection import train_test_split from sklearn.model_selection import cross_val_score import numpy as np #设置数据模型存储路径 SAVE_PATHdata/trained_svms.pkl SAVE_TRAIN_DATA_PATH data/train_data.pkl LIBSVM_SVMS_PATH data/%s.svm LIBSVM_LABELS_PATH data/labels.txt GET_CROSS_VAL False #是否进行交叉验证 IS_BUILD_LIBSVM_MODEL False #判断是否是LIBSVM模型 #加载模型数据 if os.path.isfile(SAVE_TRAIN_DATA_PATH):data joblib.load(SAVE_TRAIN_DATA_PATH) else:data loadData()joblib.dump(data, SAVE_TRAIN_DATA_PATH) #将模型保存至本地 svms {} if IS_BUILD_LIBSVM_MODEL:labels_file open(LIBSVM_LABELS_PATH, w) for region_name, features in data.items(): #训练数据集print(training svm for %s% (region_name))#分割数据为训练集和测试集if not IS_BUILD_LIBSVM_MODEL: X [] y []for feature_name, feature_shapes in features.items(): #脸部特征提取for shape in feature_shapes:X.append(shape.flatten()) #记录向量特征y.append(feature_name) #记录向量名称 X np.squeeze(np.array(X)) #改变向量维数y np.array(y,dtypeS128) #128位字符串#分割数据#X_train, X_test, y_train, y_test train_test_split(X,y)svms[region_name.encode()] svm.SVC(kernellinear, probabilityTrue) #设置支持向量机参数if GET_CROSS_VAL: #交叉验证scores cross_val_score(svms[region_name.encode()], X, y, cv5) #cv表示选择折数print(Cross val score: , scores)print(Accuracy: %0.2f (/-%0.2f)%(scores.mean(),scores.std()* 2))svms[region_name.encode()].fit(X, y) #用训练数据拟合分类器模型print(svms[region_name.encode()].score(X,y))else: #对于LIBSVM模型的处理X [] y []for i, (feature_name, feature_shapes) in enumerate(features.items()): #遍历脸部特征以下同上for shape in feature_shapes:X.append(shape.flatten())y.append(i) X np.squeeze(np.array(X))y np.array(y,dtypeuint8) #这里使用int8存储#将LIBSVM模型写入文件labels_file.write(%s\n % region_name)labels_file.write(LIBSVM_SVMS_PATH % region_name)labels_file.write( )labels_file.write( .join([k.decode() for k in features.keys()]))labels_file.write(\n)#将数据训练并保存prob svm_problem(y.tolist(), X.tolist()) #tolist使数据列表化param svm_parameter(-h 0 -s 0 -t 1 -b 1)msvm_train(prob, param)svm_save_model(LIBSVM_SVMS_PATH % region_name, m) if IS_BUILD_LIBSVM_MODEL:labels_file.close() print(training svm... Done) joblib.dump(svms, SAVE_PATH) #保存模型 print(svm saved!)自定义工具函数 相关代码如下 from __future__ import print_function import os, sys import cv2 import dlib import imutils from imutils.video import VideoStream from imutils import face_utils from imutils.face_utils import FaceAligner from glob import glob import numpy as np #配置 USE_REGION True # use part of the feature to train the svm, e.g. only use mouth feature points LANDMARK_PATH data/shape_predictor_68_face_landmarks.dat #数据集Dlib人脸68个关键点 #Dlib初始化配置 detector dlib.get_frontal_face_detector() predictor dlib.shape_predictor(LANDMARK_PATH) fa FaceAligner(predictor, desiredFaceWidth400) faceRegions { #判断区域分类eye_left: list(range(36,411)),eye_right: list(range(42, 471)),nose: list(range(27, 351)),mouth: list(range(48, 601)),face: list(range(0, 161)),eyebrow_left: list(range(17,211)),eyebrow_right: list(range(22,261)) } faceRegions[eyes] faceRegions[eye_left] faceRegions[eye_right] faceRegions[eyebrows] faceRegions[eyebrow_left] faceRegions[eyebrow_right] def loadData(dirtrain_imgs):data {face:{}, eyebrows:{}, eyes:{}, nose:{}, mouth:{}}tc 0for region_name, v in data.items():paths os.path.join(dir, region_name, */*.*) #路径设置rc 0for path in glob(paths): #对于训练数据下的所有目录文件提取并进行训练_, feature_name os.path.split(os.path.dirname(path))feature_name feature_name.encode()if feature_name not in v: #若区域未设置该向量为空v[feature_name] []img cv2.imread(path)if img is None: #若图像为空则跳过continuepoints getNormalizedFeature(region_name, feature_name, img)#若没有检测到人脸则跳过if points is not None:v[feature_name].append(points)rc1tc1sys.stdout.write(\033[K)print(loading...%s%d/%d%(region_name,rc, tc), end\r)print() print(loading... Done)return data #从图像中获取面部区域名称面部区域特征的函数将图像进行标准化处理 def getNormalizedFeature(region_name, feature_name, img):img imutils.resize(img, width800)gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)rects detector(gray, 0)if len(rects) 0: #没有检测到人脸#sys.exit(No face is detected in %s of %s % (feature_name, region_name))return Noneelse: #面部特征处理并提取faceImg fa.align(img, gray, rects[0])full_rect dlib.rectangle(0, 0, faceImg.shape[1], faceImg.shape[0])shape predictor(faceImg, full_rect)if USE_REGION:shape face_utils.shape_to_np(shape)[faceRegions[region_name]]else:shape face_utils.shape_to_np(shape)return shape #函数的重载对仅提供图片参数的情况处理 def getNormalizedFeatures(img, displayFalse):img imutils.resize(img, width800)gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)data {face:[], eyebrows:[], eyes:[], nose:[], mouth:[]}rects detector(gray, 0)if len(rects) 0: #没有检测到人脸sys.exit(No face is detected)return Noneelse: #图像特征提取faceImg fa.align(img, gray, rects[0])full_rect dlib.rectangle(0, 0, faceImg.shape[1], faceImg.shape[0])points predictor(faceImg, full_rect)points face_utils.shape_to_np(points)if display: #显示图像cv2.imshow(face, faceImg)cv2.waitKey()for key in data: #关键特征提取if USE_REGION:data[key] points[faceRegions[key]]else:data[key] pointsreturn faceImg, data主活动类 相关代码如下 #测试训练数据 import argparse import json import time import queue from textwrap import fill import cv2 import matplotlib.pyplot as plt import numpy as np from imutils.convenience import url_to_image from sklearn.externals import joblib from utils import * #路径设置图片保存和测试路径 TEST_IMAGE_PATHtest_imgs\\test1.png SAVE_PATHdata/trained_svms.pkl #初始化选择系统用于测试各项功能 ap argparse.ArgumentParser() ap.add_argument(-c, --camera, defaultFalse, actionstore_true,helpget input from camera) ap.add_argument(-i, --image, typestr, defaultNone,helpinput image) ap.add_argument(-u, --url, typestr, defaultNone,helpinput image url) args vars(ap.parse_args()) #加载分析数据 with open(data/analysis.json,rb) as f:analysis json.load(f) #核心算法 def apply(img):wenben queue.Queue()faceImg, data getNormalizedFeatures(img, False) #调用utils工具中的函数获取面部特征眼、鼻、口、眉svms joblib.load(SAVE_PATH)#调用训练好的模型#显示图像的测试函数#plt.imshow(imutils.opencv2matplotlib(faceImg))调试代码#plt.show()调试代码for region_name, points in data.items(): #图像data参数中的面部区域和特征点X [points.flatten()] #转变为向量形式处理y svms[region_name.encode()].predict(X)[0].decode() #cv2当中的预测函数prob svms[region_name.encode()].predict_proba(X) #支撑向量机预测输出max_prob np.amax(prob)*100wenben1 【 %s 】\t %s %f%% % (region_name, y, max_prob)for region in analysis[face_regions]: #文本存储判断的结果if region[name] region_name:for feature in region[features]:if feature[name] y:wenben2 fill(feature[analysis], width18)temp str(wenben1) \n str(wenben2)wenben.put(str(temp))#print(wenben.get())return wenben def getImgFromCam():vs VideoStream(usePiCameraFalse).start() #调用摄像头time.sleep(2.0)while True:frame vs.read()frame imutils.resize(frame, width400)gray cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)rects detector(gray, 0)if rects is not None and len(rects) 0: #当检测到有人脸存在时结束return frame if __name__ __main__:if args[camera]:img getImgFromCam()elif args[image] is not None:img cv2.imread(args[image])elif args[url] is not None:img url_to_image(args[url])else:img cv2.imread(TEST_IMAGE_PATH)apply(img)系统测试 本部分包括训练准确率、测试效果和模型应用。 1训练准确率 由于获取的数据存在差异所以不同SVM模型训练效果不同但是从总体来看训练准确率最低83%最高99%均值接近90%如图所示。 2测试效果 将图片送入模型进行测试分类的标签与图片的已知类型进行对比测试得到面部特征的类型一致 可以实现对面部特征的分类。 3模型应用 打开应用初始界面如图所示。 界面右侧从上至下分别是三个按钮“开始”是通过计算机摄像头对人脸拍照并进行面相分析“读取” 是读取计算机本地的图像在左侧图像显示区域进行分析“算命”是对已读取的图像进行面相分析。界面左侧下方文本框作为分析结果的输出区域。 工程源代码下载 详见本人博客资源下载页 其它资料下载 如果大家想继续了解人工智能相关学习路线和知识体系欢迎大家翻阅我的另外一篇博客《重磅 | 完备的人工智能AI 学习——基础知识学习路线所有资料免关注免套路直接网盘下载》 这篇博客参考了Github知名开源平台AI技术平台以及相关领域专家DatawhaleApacheCNAI有道和黄海广博士等约有近100G相关资料希望能帮助到所有小伙伴们。
http://www.zqtcl.cn/news/240962/

相关文章:

  • 品牌推广的步骤和技巧专业seo培训学校
  • 新网站上线怎么做seo网站建设语言什么语言
  • 山东省住房城乡和建设厅网站黄页网站推广下载免费
  • 网站建设与运营的论文的范本百度秒收录蜘蛛池
  • asp.net做音乐网站wordpress伪静态规则iis
  • seo 网站优化2021给个最新网站
  • 做废铝的关注哪个网站好seo推广优化的方法
  • 广州活动网站设计电影网站建设策划书
  • 4a景区网站建设标准网站建设排名优化公司
  • 闲置服务器做网站简单做图网站
  • 网站建设制作软件叫啥网盟推广是什么
  • 常州市住房建设局网站大连设计网站的公司
  • 通用wap网站生成系统wordpress 安装旧版本
  • 做网站用的产品展示横幅手机app开发技术
  • 学校网站模板 中文版沈阳seo博客
  • seo策划方案整站优化服务
  • 灵芝产品网站建设方案wordpress登录开发
  • 企业网站软件开发部署php网站
  • 云服务器怎么搭建网站网站制作软件是什么
  • 网站建设的结尾官网网站设计
  • 网站开发网页超链接路径如何用dw修改wordpress的首页
  • 龙岗开发公司网站建设简述网站的制作流程
  • 杭州手机建站模板尤溪建设局网站
  • 北京手机网站设计报价网站建设计划表
  • php做的网站如何该样式如何卸载安装wordpress
  • 建设网站公司哪家性价比高最新推广注册app拿佣金
  • 丽水网站建设公司排名wordpress 去掉图片链接
  • 以下属于网站页面设计的原则有2345网址下载
  • 为网站的特色功能设计各种模板温州网页模板建站
  • 广州微网站建设企业网站建设网站优化推广