المزيد من مشاريع التعلم العميق......مشاريع التعلم العميق

مشروع 7: كشف التزييف العميق باستخدام التعلم العميق

في هذه المقالة، سوف آخذك إلى كشف التزييف العميق Deepfake Detection باستخدام بايثون والتعلم الآلي. لقد كتبت مؤخرًا مقالًا حول ما هو التزييف العميق Deepfake وكيف أنه خطير. إذا كنت لا تعرف ما هو Deepfake، فسأقترح عليك إلقاء نظرة سريعة على مقالتي السابقة هنا، قبل أن تتسخ يديك بمهمة اكتشاف التزييف العميق Deepfake باستخدام بايثون والتعلم الآلي.

كشف التزييف العميق باستخدام بايثون

كانت هناك العديد من التقارير عن مقاطع فيديو مزيفة لمشاهير أو سياسيين مشهورين. يصعب اكتشاف مقاطع الفيديو المزيفة هذه بالعين المجردة وأصبحت مشكلة رئيسية في المجتمع.

لقد تمت تجربة حتى الآن أن مقاطع فيديو Deepfake تنتشر بسهولة على منصات مثل Facebook وtwitter وyoutube وما إلى ذلك. نظرًا لأن هذه المنصات تعمل على حل هذه المشكلة، فإن Facebook يقوم باستثمار كبير (10 ملايين دولار) لإصلاح هذه المشكلة، وتعمل منصات أخرى مثل Twitter وGoogle أيضًا على حل هذه المشكلة.

وبالتالي، فإن اكتشاف التزييف العميق ليس بالمهمة السهلة. في هذه المقالة، سنرى كيفية التعرف على المنتجات المقلدة من الحقيقية. يتضمن تحليل مقاطع الفيديو في إطار، واكتشاف الوجوه من مقاطع الفيديو الحقيقية والمزيفة، واقتصاص الوجوه وتحليلها.

كشف التزييف العميق أثناء العمل

دعنا الآن نرى كيف يمكننا كشف محتوى التزييف العميق Deepfake باستخدام بايثون والتعلم الآلي. سأبدأ بهذه المهمة عن طريق استيراد المكتبات الضرورية:

import numpy as np
import matplotlib.pyplot as plt
import cv2
import pandas as pd
import glob2
import os, fnmatch
from pathlib import Path
# import mtcnn
from mtcnn.mtcnn import MTCNN

الآن، لنفترض أن لدينا نوعين من مقاطع الفيديو، أحدهما حقيقي والآخر مزيف نريد اكتشافه أيهما مزيف من بين الاثنين، ربما هذا هو ما نحتاج إلى القيام به في مهمة اكتشاف التزييف العميق Deepfake.

الآن، سوف أقوم بإنشاء دالة لمعالجة كلا مقاطع الفيديو:

def extract_multiple_videos(intput_filenames, image_path_infile):
    """Extract video files into sequence of images."""
i = 1  # Counter of first video
# Iterate file names:
    cap = cv2.VideoCapture('your_video_file_path.avi' or intput_filenames)
if (cap.isOpened()== False):
        print("Error opening file")
# Keep iterating break
    while True:
        ret, frame = cap.read()  # Read frame from first video
            
        if ret:
            cv2.imwrite(os.path.join(image_path_infile , str(i) + '.jpg'), frame)  # Write frame to JPEG file (1.jpg, 2.jpg, ...)
# you can uncomment this line if you want to view them.
#           cv2.imshow('frame', frame)  # Display frame for testing
            i += 1 # Advance file counter
        else:
            # Break the interal loop when res status is False.
            break
cv2.waitKey(50) #Wait 50msec
cap.release()

استدعاء الدالة

extract_multiple_videos(fake_video_name, fake_image_path_for_frame)
extract_multiple_videos(real_video_name, real_image_path_for_frame)

الآن بعد تشغيل الدالة، سنتمكن من قراءة مقاطع الفيديو ومعالجتها لمهمة اكتشاف التزييف العميق Deepfake. دعنا الآن نرى كيف يمكننا تحديد التزييف العميق من خلال مقارنة كل من مقاطع الفيديو:

from skimage import measure
def mse(imageA, imageB):
    # the 'Mean Squared Error' between the two images is the
    # sum of the squared difference between the two images;
    # NOTE: the two images must have the same dimension
    err = np.sum((imageA.astype("float") - imageB.astype("float")) ** 2)
    err /= float(imageA.shape[0] * imageA.shape[1])
# return the MSE, the lower the error, the more "similar"
    # the two images are
    return err
def compare_images(imageA, imageB, title):
    # compute the mean squared error and structural similarity
    # index for the images
    m = mse(imageA, imageB)
    s = measure.compare_ssim(imageA, imageB)
    # setup the figure
    fig = plt.figure(title)
    plt.suptitle("MSE: %.2f, SSIM: %.2f" % (m, s))
    # show first image
    ax = fig.add_subplot(1, 2, 1)
    plt.imshow(imageA, cmap = plt.cm.gray)
    plt.axis("off")
    # show the second image
    ax = fig.add_subplot(1, 2, 2)
    plt.imshow(imageB, cmap = plt.cm.gray)
    plt.axis("off")
    # show the images
    plt.show()

في الكود أعلاه، نقارن الصور المستخرجة من الفيديو الأصلي والصورة المقابلة من مقاطع الفيديو المزيفة. في القسم الأخير من الكود، تحققت من وجود أي اختلافات بين الصورتين.

المخرجات:

هذه هي الطريقة التي يمكننا بها الكشف عن ملفات التزييف العميق من خلال مقارنة الملفات الأصلية والمزيفة. أتمنى أن تكون قد أحببت هذه المقالة حول التزييف العميق Deepfake باستخدام بايثون والتعلم العميق.

بواسطة
thecleverprogrammer
المصدر
Deep Learning Projects with Python

د. علاء طعيمة

كلية علوم الحاسوب وتكنولوجيا المعلومات / جامعة القادسية / العراق

مقالات ذات صلة

تعليق واحد

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى