硅谷“钢铁侠”,让马斯克真正体验一下当钢铁侠的感觉
AI换脸
上期视频,我们分享了一个让马斯克体验当钢铁侠的视频,其中使用到了AEI-Net SberSwap换脸技术,也许,你没有听说过SberSwap,但是大名鼎鼎的deepfake你肯定听说过。
——1——
什么是SberSwap
下图是一个名为AEI-Net的 SberSwap 模型图,由三部分组成。
第一个是身份编码器,它从图像Xs中找到向量Zid,与将Xs嵌入描述图像中人脸身份的空间有关的编码器。
第二种是Multi-level Attributes Encoderd,其结构与 U-Net 相同,从图像Xt中提取特征Zatt。与将X emb嵌入到空间中有关的编码器,该空间描述了交换面部时要保留的属性。
第三个是AAD 生成器,它根据这些信息生成所需的图像。
AEI-Net的体系结构
身份编码器
该子网将源图像Xs投影到低维特征空间。提取人脸的不同信息,例如眼睛的形状大小,眼睛与嘴巴之间的距离,嘴巴的弯曲度等等。
身份编码器
AADGenerator
AAD Generator是“ Adaptive Attentional Denormalization Generator”的缩写。它以提高的空间分辨率集成了前两个子网的输出,以生成AEI-Net的最终输出。
AAD Generator
AAD(Adaptive Attentional Denormalization)生成器用于将和中的信息结合起来生成,其主要结构是AAD层,见下图(c),其输入为
AAD
——2——
代码实现SberSwap
目标图片
在开始运行代码之前,需要找一张你需要转换人脸的图片以及源图片,或者源视频
代码支持图片转换以及视频转换,然后clone代码
第一步:clone代码,并安装下载预训练模型
!git clone https://github.com/cedro3/sber-swap.git %cd sber-swap 加载检测器 !wget -P ./insightface_func/models/antelope https://github.com/sberbank-ai/sber-swap/releases/download/antelope/glintr100.onnx !wget -P ./insightface_func/models/antelope https://github.com/sberbank-ai/sber-swap/releases/download/antelope/scrfd_10g_bnkps.onnx 安装第三方库 !pip install mxnet-cu101mkl !pip install onnxruntime-gpu==1.8 !pip install insightface==0.2.1 !pip install kornia==0.5.4 初始化模型,并加载模型 app = Face_detect_crop(name=&39;, root=&39;) app.prepare(ctx_id= 0, det_thresh=0.6, det_size=(640,640)) G = AEI_Net(backbone=&39;, num_blocks=2, c_id=512) G.eval() G.load_state_dict(torch.load(&39;, map_location=torch.device(&39;))) G = G.cuda() G = G.half() netArc = iresnet100(fp16=False) netArc.load_state_dict(torch.load(&39;)) netArc=netArc.cuda() netArc.eval() handler = Handler(&39;, 0, ctx_id=0, det_size=640) use_sr = True if use_sr: os.environ[&39;] = &39; torch.backends.cudnn.benchmark = True opt = TestOptions() model = Pix2PixModel(opt) model.netG.train()初始化模型,加载预训练模型,初始化完成后,我们就可以输入自己的图片或者视频进行AI人脸转换了
AI换脸
第三步:图片AI换脸
source = &39; 39;targer.jpg&输入目标需要转换的图片 source_full = cv2.imread(source) crop_size = 224 batch_size = 40 source = crop_face(source_full, app, crop_size)[0] source = [source[:, :, ::-1]] target_full = cv2.imread(target) full_frames = [target_full] target = get_target(full_frames, app, crop_size) final_frames_list, crop_frames_list, full_frames, tfm_array_list = model_inference(full_frames,source,target,netArc, G,app,set_target = False,crop_size=crop_size,BS=batch_size) result = get_final_image(final_frames_list, crop_frames_list, full_frames[0], tfm_array_list, handler) cv2.imshow(&39;, result) cv2.imwrite(&39;, result)这里加载2张图片,一张原始图片,一张需要AI换脸的图片,通过模型后,便可以得到AI换脸后的图片了
AI换脸
第四步:视频AI换脸
source = &39; 39;test.mp4&目标视频 source_full = cv2.imread(source) result = &34; crop_size = 224 batch_size = 40 source = crop_face(source_full, app, crop_size)[0] source = [source[:, :, ::-1]] full_frames, fps = read_video(video) target = get_target(full_frames, app, crop_size) final_frames_list, crop_frames_list, full_frames, tfm_array_list = model_inference(full_frames,source,target,netArc, G, app, set_target = False,crop_size=crop_size, BS=batch_size) if use_sr: final_frames_list = face_enhancement(final_frames_list, model) get_final_video(final_frames_list, crop_frames_list, full_frames, tfm_array_list,result,fps, handler) add_audio_from_another_video(video, result, &34;)代码源链接 https://github.com/ai-forever/sber-swapAI换脸
本站所发布的文字与图片素材为非商业目的改编或整理,版权归原作者所有,如侵权或涉及违法,请联系我们删除
热门信息
阅读 ()
1 注册微信号怎么注册第二个阅读 ()
2 怎么把照片变成卡通头像阅读 ()
3 手机越充越少电怎么解决