做废钢推广网站,站酷网站的比赛网页谁做的,网站首页的psd怎么做,网上做论文的网站有哪些1.摘要 本文主要研究内容是开发一种发型推荐系统#xff0c;旨在识别用户的面部形状#xff0c;并根据此形状推荐最适合的发型。首先#xff0c;收集具有各种面部形状的用户照片#xff0c;并标记它们的脸型#xff0c;如长形、圆形、椭圆形、心形或方形。接着构建一个面部…
1.摘要 本文主要研究内容是开发一种发型推荐系统旨在识别用户的面部形状并根据此形状推荐最适合的发型。首先收集具有各种面部形状的用户照片并标记它们的脸型如长形、圆形、椭圆形、心形或方形。接着构建一个面部分类器以确定用户的脸型如长形、圆形、椭圆形、心形或方形。然后使用机器学习或深度学习技术构建一个面部分类器模型。该模型接受用户照片作为输入并输出对应的面部形状分类结果。基于分类结果根据面部分类器的输出结果为每种面部形状设计一组适合的发型。最终实现的系统将推荐适合用户面部形状的发型。该系统将利用用户对不同发型的偏好和不喜欢程度进行持续更新以提供个性化的推荐。
2. 算法研究
2.1 数据分析及数据集收集过程 通过查阅22个网站和234位名人的信息来收集具有正确面部形状标签的图像。其中有33位名人的面部形状在3个或更多网站中得到了一致的分类65位在2个或更多网站中一致。还有49位名人虽然在某些网站上的分类存在冲突但有强烈的共识可以用于分类。最终利用74位名人的数据进行了分析。 面部形状特征描述
心形脸形heart-shaped face具有宽阔的颧骨逐渐变窄至下巴。长形脸形long face长而非常狭窄。椭圆形脸形oval face类似于长形脸但比长形脸更丰满。圆形脸形round face短而宽的形状与其他脸形明显不同。方形脸形square-shaped face具有强烈的下颌线。 最终数据集包含了约 74 名名人的约 1500 张图像存储到DATA 文件夹中。 基于上述收集的data数据创建了一个包含各种特征的数据框这些特征包括面部关键点的坐标、计算出的长度和比率以及图像名称和分类形状。该数据框的列包括了大量的特征如面部关键点坐标、长度、比率以及图像名称和分类形状等。接着通过调用主要函数和第二个用于推荐目的的函数对上述目录中的所有照片运行主要函数从而生成了一个整洁的数据集。
data pd.DataFrame()
data.reset_index
shape_df pd.DataFrame(columns [filenum,filename,classified_shape])
shape_array []
def store_features_and_classification():filenum -1sub_dir [q for q in pathlib.Path(image_dir).iterdir() if q.is_dir()]start_j 0end_j len(sub_dir)for j in range(start_j, end_j):images_dir [p for p in pathlib.Path(sub_dir[j]).iterdir() if p.is_file()]for p in pathlib.Path(sub_dir[j]).iterdir():print(p)shape_array []if 1 1:face_file_name os.path.basename(p)classified_face_shape os.path.basename(os.path.dirname(p)) filenum 1make_face_df(p,filenum)shape_array.append(filenum)shape_array.append(face_file_name) shape_array.append(classified_face_shape)shape_df.loc[filenum] np.array(shape_array)store_features_and_classification()
data pd.concat([df, shape_df], axis1)
# Add all the faces features with shape to a DATA CSV file for model purpose.
data.to_csv(all_features.csv) 这段代码的主要目的是创建一个数据集其中包含了面部特征和分类形状的信息并将其保存到一个CSV文件中以供模型使用。
2.2 模型训练过程
import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler, normalize
from sklearn.model_selection import train_test_split
from sklearn.decomposition import PCA
from sklearn.neural_network import MLPClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
import matplotlib.pyplot as plt# 导入数据
data pd.read_csv(all_features.csv, index_colNone).drop(Unnamed: 0, axis1).dropna()# 准备数据
X normalize(data.drop([filenum, filename, classified_shape], axis1))
Y data[classified_shape]# 标准化特征
scaler StandardScaler()
X scaler.fit_transform(X)# PCA降维
pca PCA(n_components18, svd_solverrandomized, whitenTrue).fit(X)
X pca.transform(X)# 划分训练集和测试集
X_train, X_test, Y_train, Y_test train_test_split(X, Y, test_size0.25, random_state1200)# MLP模型
mlp_best MLPClassifier(activationrelu, alpha0.0001, batch_sizeauto, hidden_layer_sizes(60, 100, 30, 100),learning_rateconstant, learning_rate_init0.01, max_iter100, random_state525)
mlp_best.fit(X_train, Y_train)# KNN模型
neigh KNeighborsClassifier(n_neighbors5)
neigh.fit(X_train, Y_train)# 随机森林模型
clf RandomForestClassifier(n_estimators100, max_depthNone, random_state5)
clf.fit(X_train, Y_train)# 梯度提升模型
gb_best GradientBoostingClassifier(n_estimators300, max_depth5, learning_rate0.1)
gb_best.fit(X_train, Y_train)# LDA模型
lda LinearDiscriminantAnalysis()
lda.fit(X_train, Y_train)# 可视化模型比较结果
def model_graph():models [mlp_best, neigh, clf, gb_best, lda]model_names [MLP, KNN, Random Forest, Gradient Boosting, LDA]accuracies [model.score(X_test, Y_test) for model in models]plt.figure(figsize(10, 6))plt.bar(model_names, accuracies, color[blue, green, pink, orange, purple])plt.xlabel(Model)plt.ylabel(Accuracy)plt.title(Comparison of Models)plt.show()model_graph()该代码的主要目的为比较不同机器学习模型在识别面部形状方面的性能以帮助选择最佳的模型用于面部形状分类任务。功能如下 数据预处理首先导入必要的库并加载以前处理过的数据。然后将数据进行清理去除任何包含NaN值的行并准备好用于模型训练的特征矩阵 X 和目标向量 Y。 标准化使用 StandardScaler 对特征矩阵 X 进行标准化即移除平均值并缩放到单位方差以确保每个特征对模型的贡献大致相等。 PCA降维对标准化后的特征矩阵 X 进行主成分分析PCA降维以减少特征的数量。作者选择了包含 18 个主成分的 PCA 模型通过 fit 方法拟合 PCA 模型并使用 transform 方法将数据转换为新的主成分空间。 模型选择与训练作者尝试了多种监督学习模型包括多层感知机MLP、K最近邻分类器KNN、随机森林分类器Random Forest、梯度提升分类器Gradient Boosting和线性判别分析LDA。对于每个模型作者通过调整超参数和使用交叉验证选择最佳模型并使用最佳模型在测试集上进行评估。 模型评估评估了每个模型在测试集上的性能并将结果可视化为条形图展示了不同模型在识别不同面部形状上的准确率。最后生成一个结果表格汇总了每个模型对不同面部形状的识别准确率。实验结果如下 3. 应用实现 基于flask技术实现一个用于面部特征识别和发型推荐的应用程序。 该系统包含 上传照片功能用户可以在页面中上传自己的照片。上传后会显示用户的照片并提供预测和推荐功能。 预测功能用户可以点击“预测”按钮对上传的照片进行预测以推荐适合用户脸型和其他特征的发型。 点击开始预测 输出结果为 4. 结语 该研究主要关注开发一种发型推荐系统其目标是根据用户的面部形状识别最适合的发型。主要研究内容包括 1.数据收集和分析收集具有各种面部形状的用户照片并标记其脸型如长形、圆形、椭圆形、心形或方形。构建面部分类器以确定用户的脸型使用机器学习技术构建模型。数据集包含约74位名人的约1500张图像并存储到CSV文件中以供模型使用。 2.模型训练过程导入数据准备数据并对特征进行标准化和降维。使用多种机器学习模型进行训练包括MLP、KNN、随机森林、梯度提升和LDA模型。比较不同模型在面部形状分类任务上的性能并选择最佳模型。 3.应用实现基于Flask技术实现一个用于面部特征识别和发型推荐的应用程序。应用程序包括一个点击开始预测的功能输出用户的面部形状分类结果和推荐的发型。 总的来说该研究旨在帮助用户了解适合其脸型的最佳发型并提供个性化的发型推荐服务。 上述代码的运行环境为基于python3.7.0配置pandas1.1.5 Flask1.0.2 sklearn0.0 scikit-learn0.23.1 Werkzeug0.16.0 opencv-python4.1.0.25 numpy1.19.5 matplotlib3.3.4 Pillow8.4.0 requests2.18.4 bs40.0.1 beautifulsoup44.7.1 seaborn0.11.0 scipy1.5.4。
完整代码
https://download.csdn.net/download/weixin_40651515/89136480