اكتمال الوجه باستخدام المُقدرات متعددة المخرجات#

يُظهر هذا المثال استخدام المُقدر متعدد المخرجات لإكمال الصور. الهدف هو التنبؤ بالنصف السفلي للوجه بناءً على النصف العلوي.

يُظهر العمود الأول من الصور الوجوه الحقيقية. توضح الأعمدة التالية كيف تقوم الأشجار العشوائية للغاية، وأقرب جيران، والانحدار الخطي، والانحدار الالتفافي بإكمال النصف السفلي من هذه الوجوه.

Face completion with multi-output estimators, true faces, Extra trees, K-nn, Linear regression, Ridge
downloading Olivetti faces from https://ndownloader.figshare.com/files/5976027 to /root/scikit_learn_data

# المؤلفون: مطوري سكايلرن
# معرف الترخيص: BSD-3-Clause

import matplotlib.pyplot as plt
import numpy as np

from sklearn.datasets import fetch_olivetti_faces
from sklearn.ensemble import ExtraTreesRegressor
from sklearn.linear_model import LinearRegression, RidgeCV
from sklearn.neighbors import KNeighborsRegressor
from sklearn.utils.validation import check_random_state

# تحميل مجموعات بيانات الوجوه
data, targets = fetch_olivetti_faces(return_X_y=True)

train = data[targets < 30]
test = data[targets >= 30] # الاختبار على أشخاص مستقلين

# الاختبار على مجموعة فرعية من الأشخاص
n_faces = 5
rng = check_random_state(4)
face_ids = rng.randint(test.shape[0], size=(n_faces,))
test = test[face_ids, :]

n_pixels = data.shape[1]
# النصف العلوي من الوجوه
X_train = train[:, : (n_pixels + 1) // 2]
# النصف السفلي من الوجوه
y_train = train[:, n_pixels // 2 :]
X_test = test[:, : (n_pixels + 1) // 2]
y_test = test[:, n_pixels // 2 :]

# ملاءمة المُقدرات
ESTIMATORS = {
    "Extra trees": ExtraTreesRegressor(
        n_estimators=10, max_features=32, random_state=0
    ),
    "K-nn": KNeighborsRegressor(),
    "Linear regression": LinearRegression(),
    "Ridge": RidgeCV(),
}

y_test_predict = dict()
for name, estimator in ESTIMATORS.items():
    estimator.fit(X_train, y_train)
    y_test_predict[name] = estimator.predict(X_test)

# رسم الوجوه المكتملة
image_shape = (64, 64)

n_cols = 1 + len(ESTIMATORS)
plt.figure(figsize=(2.0 * n_cols, 2.26 * n_faces))
plt.suptitle("Face completion with multi-output estimators", size=16)

for i in range(n_faces):
    true_face = np.hstack((X_test[i], y_test[i]))

    if i:
        sub = plt.subplot(n_faces, n_cols, i * n_cols + 1)
    else:
        sub = plt.subplot(n_faces, n_cols, i * n_cols + 1, title="true faces")

    sub.axis("off")
    sub.imshow(
        true_face.reshape(image_shape), cmap=plt.cm.gray, interpolation="nearest"
    )

    for j, est in enumerate(sorted(ESTIMATORS)):
        completed_face = np.hstack((X_test[i], y_test_predict[est][i]))

        if i:
            sub = plt.subplot(n_faces, n_cols, i * n_cols + 2 + j)

        else:
            sub = plt.subplot(n_faces, n_cols, i * n_cols + 2 + j, title=est)

        sub.axis("off")
        sub.imshow(
            completed_face.reshape(image_shape),
            cmap=plt.cm.gray,
            interpolation="nearest",
        )

plt.show()

Total running time of the script: (0 minutes 3.242 seconds)

Related examples

تعلم القاموس عبر الإنترنت لأجزاء الوجوه

تعلم القاموس عبر الإنترنت لأجزاء الوجوه

مثال على التعرف على الوجوه باستخدام الوجوه المميزة وآلات المتجهات الداعمة

مثال على التعرف على الوجوه باستخدام الوجوه المميزة وآلات المتجهات الداعمة

نشر التسمية للأرقام باستخدام التعلم النشط

نشر التسمية للأرقام باستخدام التعلم النشط

تجميع الميزات

تجميع الميزات

Gallery generated by Sphinx-Gallery