目录
深度学习的任务定义
深度学习是机器学习的一个子集,它使用类似于人脑的神经网络结构,特别是深层神经网络,来模拟人类学习过程。深度学习模型通过模拟人脑处理信息的方式来识别数据中的复杂模式和特征。
-
深度学习算法通常更复杂,依赖于多层的神经网络结构,能够处理和学习高维度和复杂的数据模式。
AIGC和deepfake的关联
Deepfake是一种使用人工智能技术生成的伪造媒体,特别是视频和音频,它们看起来或听起来非常真实,但实际上是由计算机生成的。这种技术通常涉及到深度学习算法,特别是生成对抗网络(GANs),它们能够学习真实数据的特征,并生成新的、逼真的数据。
Deepfake技术虽然在多个领域展现出其创新潜力,但其滥用也带来了一系列严重的危害。在政治领域,Deepfake可能被用来制造假新闻或操纵舆论,影响选举结果和政治稳定。经济上,它可能破坏企业形象,引发市场恐慌,甚至操纵股市。法律体系也面临挑战,因为伪造的证据可能误导司法判断。此外,深度伪造技术还可能加剧身份盗窃的风险,成为恐怖分子的新工具,煽动暴力和社会动荡,威胁国家安全。
为了训练有效的Deepfake检测模型,需要构建包含各种Deepfake和真实样本的数据集。深度学习模型通过这些数据集学习区分真假内容。
数据集的理解
-
数据准备:使用Pandas库读取训练集和验证集的标签,并将图片路径与标签结合,以便于后续处理。
-
定义生成MEL频谱图的函数:
generate_mel_spectrogram
函数用于从视频文件中提取音频,并生成MEL频谱图,然后将其转换为图像格式
MEL频谱图(Mel-spectrogram)是一种在音频信号处理领域常用的可视化工具,它基于人耳的听觉特性来表示音频信号的频率内容。梅尔刻度是一种对频率进行非线性缩放的方法,它将线性频率映射到梅尔频率上,使得梅尔刻度上的间隔更接近人耳感知的间隔。梅尔刻度是以物理学家H. Fletcher和W. A. Munson的名字命名的。def generate_mel_spectrogram(video_path, n_mels=128, fmax=8000, target_size=(256, 256)): # 提取音频 audio_path = 'extracted_audio.wav' video = mp.VideoFileClip(video_path) video.audio.write_audiofile(audio_path, verbose=False, logger=None) # 加载音频文件 y, sr = librosa.load(audio_path) # 生成MEL频谱图 S = librosa.feature.melspectrogram(y=y, sr=sr, n_mels=n_mels) # 将频谱图转换为dB单位 S_dB = librosa.power_to_db(S, ref=np.max) # 归一化到0-255之间 S_dB_normalized = cv2.normalize(S_dB, None, 0, 255, cv2.NORM_MINMAX) # 将浮点数转换为无符号8位整型 S_dB_normalized = S_dB_normalized.astype(np.uint8) # 缩放到目标大小 img_resized = cv2.resize(S_dB_normalized, target_size, interpolation=cv2.INTER_LINEAR) return img_resized
先把音视频数据通过generate_mel_spectrogram函数生成MEL频谱图后,后面把这个图像作为输入,在进行数据增强操作,然后进行训练,把音视频转换成这个MEL频谱图后感觉就是cv任务了。
train_loader = torch.utils.data.DataLoader( FFDIDataset(train_label['path'], train_label['target'], transforms.Compose([ transforms.Resize((256, 256)), transforms.RandomHorizontalFlip(), transforms.RandomVerticalFlip(), transforms.ToTensor(), transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) ]) ), batch_size=40, shuffle=True, num_workers=4, pin_memory=True )
transforms.Compose: 这是一个转换操作的组合,它将多个图像预处理步骤串联起来:
transforms.Resize((256, 256))
:将所有图像调整为256x256像素的大小。transforms.RandomHorizontalFlip()
:随机水平翻转图像。transforms.RandomVerticalFlip()
:随机垂直翻转图像。transforms.ToTensor()
:将PIL图像或Numpy数组转换为torch.FloatTensor
类型,并除以255以将像素值范围从[0, 255]缩放到[0, 1]。transforms.Normalize([0.485, 0.45
增加数据多样性是数据增强的核心目的。通过对原始图像进行如旋转、缩放、翻转等操作,可以生成新的训练样本,使模型学习到更丰富的特征表示。