该内容介绍了利用PaddleGAN等工具将视频转为动漫风格的方法。先安装依赖并建立相关目录,配置动漫化和超分辨率模型,再切割视频帧,经排序、逐帧风格转换后合成视频,还可添加音轨和插帧。此方法能处理大视频,但操作复杂,视频合成帧率设置较棘手。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜
由于视频不便展示,均放到项目根目录下,以便于查看
需要自行建立piece目录和piece_pr目录,分别放置切割的原视频帧,以及原视频帧动漫化后的图片
In [9]!python3 -m pip install --upgrade ppgan !git clone https://gitee.com/paddlepaddle/PaddleGAN.git %cd PaddleGAN/ !pip install -v -e . !pip install paddlehub==1.8.0 -U -i https://pypi.tuna.tsinghua.edu.cn/simplefrom ppgan.apps import RealSRPredictorimport cv2import paddlehub as hubfrom PIL import Image import numpy as np %env CUDA_VISIBLE_DEVICES=0%matplotlib inline
现在就有可以将现实的照片转化为动漫风格的模型可以一键应用——>{随手拍,生成日系风}。PaddleHub已将定制打造的街景动漫化模型animegan_v1_hayao_60、animegan_v2_shinkai_33、animegan_v2_paprika_74等多个优质模型开源, 并且支持一键街景照片动漫化,适用于美食、风景、人物等场景。
PaddleHub建议采用1.8,因为官方给的运行实例就是1.8,且原项目评论中有因为版本更新后无法运行的
利用AnimeGAN v2来对景物图像进行动漫风格化。
论文是 AnimeGAN: A Novel Lightweight GAN for Photo Animation, 论文链接: https://link.springer.com/chapter/10.1007/978-981-15-5577-0_18.
输出宫崎骏风格动漫照片 model = hub.Module('animegan_v1_hayao_60', use_gpu=True)
输出新海诚风格动漫照片 model = hub.Module('animegan_v2_shinkai_33', use_gpu=True)
输出今敏风格动漫照片 model = hub.Module('animegan_v2_paprika_74', use_gpu=True)
In [10]sr = RealSRPredictor() model = hub.Module(name='animegan_v2_shinkai_33', use_gpu=True)
[04/26 22:52:31] ppgan INFO: Found /home/aistudio/.cache/ppgan/DF2K_JPEG.pdparams
[2025-04-26 22:52:31,770] [ INFO] - Installing animegan_v2_shinkai_33 module [2025-04-26 22:52:31,773] [ INFO] - Module animegan_v2_shinkai_33 already installed in /home/aistudio/.paddlehub/modules/animegan_v2_shinkai_33
构建RealSR实例。RealSR: Real-World Super-Resolution via Kernel Estimation and Noise Injection发表于CVPR 2025 Workshops的基于真实世界图像训练的超分辨率模型。此接口对输入图片或视频做4倍的超分辨率。建议视频使用mp4格式。
注意:RealSR的输入图片尺寸需小于1000x1000pix。
其实sr.run是可以直接处理视频的,但是由于对帧数处理的太多,以至于运行速度太慢,无法处理大型的视频
四倍超分效果
当然官方还提供了直接对视频进行超分的方式,本人尝试后发现需要很大的显存,如即使是500*500,1min这种很低的分辨率的视频使用16GB显存都会不足
EDVR模型提出了一个新颖的视频具有增强可变形卷积的还原框架:第一,为了处理大动作而设计的一个金字塔,级联和可变形(PCD)对齐模块,使用可变形卷积以从粗到精的方式在特征级别完成对齐;第二,提出时空注意力机制(TSA)融合模块,在时间和空间上都融合了注意机制,用以增强复原的功能。
ppgan.apps.EDVRPredictor(output='output', weight_path=None) 参数 output_path (str,可选的): 输出的文件夹路径,默认值:output. weight_path (None,可选的): 载入的权重路径,如果没有设置,则从云端下载默认的权重到本地。默认值:None。
In [2]image_sr=sr.run_image("/home/aistudio/butterfly.png")
image_sr.save('/home/aistudio/butterfly_SR.png')
def style_transfer(ori_image_path,target_image_path,w,h):
images_ori_batch=[] for p in ori_image_path:
ima=cv2.imread(p)
images_ori_batch.append(ima)
np_array=model.style_transfer(images=images_ori_batch) for i in range(len(np_array)):
t_image = cv2.cvtColor(np_array[i], cv2.COLOR_BGR2RGB)
pil_image=Image.fromarray(t_image)
pil_image.save(target_image_path[i])
timeF = 1 #视频帧计数间隔次数videoFile = '/home/aistudio/test_short.mp4'outputFile = '/home/aistudio/piece/'vc = cv2.VideoCapture(videoFile)
c = 1fps = vc.get(cv2.CAP_PROP_FPS)print(f'fps={fps}')if vc.isOpened():
rval, frame = vc.read()else: print('openerror!')
rval = Falsewhile rval:
rval, frame = vc.read() if c==1: print(frame.shape) # shape[0]是宽度
# shape[1]是高度
w=frame.shape[0]
h=frame.shape[1] if c % timeF == 0: print(f'\r{c}',end="") # 垂直翻转
# frame = cv2.flip(frame, 0)
cv2.imwrite(outputFile + str(int(c // timeF)).zfill(7) + '.jpg', frame)
c += 1
cv2.waitKey(1)
vc.release()print()print(h,w)fps=25.135135135135137 (960, 720, 3) 341 720 960
这里如果不排序结果会是混乱的,因为默认不是从1,2,3,4,5的顺序排列的
In [11]import os
ori_image_path=[]
images_files = os.listdir("/home/aistudio/piece")for file in images_files: if file.endswith('.jpg'):
t=cv2.imread("/home/aistudio/piece/"+file) if t is not None:
ori_image_path.append(file)
ori_image_path.sort()
n=len(ori_image_path)print(n)print(ori_image_path)
import timefrom time import strftimefrom time import gmtime
batch_size=1batch_ori=[]
batch_tar=[]
time_start = time.time()for i,name in enumerate(ori_image_path):
ori_p="/home/aistudio/piece/"+name
tar_p="/home/aistudio/piece_pr/"+name
batch_ori.append(ori_p)
batch_tar.append(tar_p) if i%batch_size==0 or i+1==n: # print(batch_ori)
# print(batch_tar)
style_transfer(batch_ori,batch_tar,w,h)
batch_ori=[]
batch_tar=[]
epoch_used_time=(time.time()-time_start) # 加了个比较简陋的计时方式,显示训练剩余时间,以便估计摸鱼时间
used_t=strftime("%H:%M:%S", gmtime(epoch_used_time))
total_t=strftime("%H:%M:%S", gmtime((epoch_used_time/(i+1))*n)) print(f'\r{i+1}/{n} {used_t}/{total_t}',end="")340/340 00:00:45/00:00:45
存在偶尔下载后无法播放的情况,需要手工调一下fps的大小,这个感觉有点玄学的意思在
In [15]# encoding: UTF-8import glob as gbimport cv2
img_path=[]for i in range(len(ori_image_path)):
img_path.append("/home/aistudio/piece_pr/"+ori_image_path[i])# print(img_path)# 如果下载后无法播放,调一下那个帧率,这个感觉有点玄学的意思在,我没明白啥原理videoWriter = cv2.VideoWriter('/home/aistudio/test_result.mp4', cv2.VideoWriter_fourcc(*'mp4v'), round(fps,3), (h,w))for path in img_path:
img = cv2.imread(path)
# 这东西第一维是高度
img = cv2.resize(img,(h,w))
videoWriter.write(img)
根据图片合成的视频是没有声音的,需要从原视频移动来
In [16]!pip install moviepyIn [17]
import osimport moviepy.video.io.ImageSequenceClipfrom moviepy.editor import VideoFileClipdef add_mp3(video_src1, video_src2, video_dst):
' 将video_src1的音频嵌入video_src2视频中'
video_src1 = VideoFileClip(video_src1)
video_src2 = VideoFileClip(video_src2)
audio = video_src1.audio
videoclip2 = video_src2.set_audio(audio)
videoclip2.write_videofile(video_dst, codec='libx264')
video_src1 = '/home/aistudio/test_short.mp4'video_src2 = '/home/aistudio/test_result.mp4'video_dst = '/home/aistudio/test_result_yinpin.mp4'add_mp3(video_src1, video_src2, video_dst)Moviepy - Building video /home/aistudio/test_result_yinpin.mp4. MoviePy - Writing audio in test_result_yinpinTEMP_MPY_wvf_snd.mp3
MoviePy - Done. Moviepy - Writing video /home/aistudio/test_result_yinpin.mp4
Moviepy - Done ! Moviepy - video ready /home/aistudio/test_result_yinpin.mp4
这个耗时较长,可以选用,大约10s视频需要10min用时
注意结果在output中
DAIN 模型通过探索深度的信息来显式检测遮挡。并且开发了一个深度感知的流投影层来合成中间流。在视频补帧方面有较好的效果。
ppgan.apps.DAINPredictor( output_path='output', weight_path=None, time_step=None, use_gpu=True, remove_duplicates=False)
参数 output_path (str,可选的): 输出的文件夹路径,默认值:output.
weight_path (None,可选的): 载入的权重路径,如果没有设置,则从云端下载默认的权重到本地。默认值:None。
time_step (int): 补帧的时间系数,如果设置为0.5,则原先为每秒30帧的视频,补帧后变为每秒60帧。
remove_duplicates (bool,可选的): 是否删除重复帧,默认值:False.
In [18]在本程序中需要需要修改默认配置,可以修改tools/video-enhance.py文件
from ppgan.apps import DAINPredictorimport paddle# 使用插帧(DAIN)# input参数表示输入的视频路径# output表示处理后的视频的存放文件夹# proccess_order 表示使用的模型和顺序(目前支持)%cd /home/aistudio/PaddleGAN/applications/
!python tools/video-enhance.py --input /home/aistudio/test_result_yinpin.mp4 \
--process_order DAIN \
--output /home/aistudio/output/home/aistudio/PaddleGAN/applications /home/aistudio/PaddleGAN/PaddleGAN/ppgan/modules/init.py:58: DeprecationWarning: invalid escape sequence \s """ /home/aistudio/PaddleGAN/PaddleGAN/ppgan/modules/init.py:122: DeprecationWarning: invalid escape sequence \m """ /home/aistudio/PaddleGAN/PaddleGAN/ppgan/modules/init.py:147: DeprecationWarning: invalid escape sequence \m """ /home/aistudio/PaddleGAN/PaddleGAN/ppgan/modules/init.py:178: DeprecationWarning: invalid escape sequence \m """ /home/aistudio/PaddleGAN/PaddleGAN/ppgan/modules/init.py:215: DeprecationWarning: invalid escape sequence \m """ /home/aistudio/PaddleGAN/PaddleGAN/ppgan/modules/dense_motion.py:156: DeprecationWarning: invalid escape sequence \h """ Model DAIN process start.. [04/26 22:58:44] ppgan INFO: Downloading DAIN_weight.tar from https://paddlegan.bj.bcebos.com/applications/DAIN_weight.tar to /home/aistudio/.cache/ppgan/DAIN_weight.tar 100%|██████████████████████████████████| 78680/78680 [00:01<00:00, 47540.63it/s] [04/26 22:58:46] ppgan INFO: Decompressing /home/aistudio/.cache/ppgan/DAIN_weight.tar... Tue Apr 26 22:58:46-WARNING: The old way to load inference model is deprecated. model path: /home/aistudio/.cache/ppgan/DAIN_weight/model, params path: /home/aistudio/.cache/ppgan/DAIN_weight/params W0426 22:58:46.768800 1381 device_context.cc:447] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 10.1, Runtime API Version: 10.1 W0426 22:58:46.773906 1381 device_context.cc:465] device: 0, cuDNN Version: 7.6. Old fps (frame rate): 25.14 New fps (frame rate): 50 100%|█████████████████████████████████████████| 341/341 [12:47<00:00, 2.25s/it] Model DAIN output frames path: /home/aistudio/output/DAIN/frames-combined/test_result_yinpin/%08d.png Model DAIN output video path: /home/aistudio/output/DAIN/videos-output/test_result_yinpin.mp4 Model DAIN process done!
# https
# 直接调用
# 视频处理
# 无法播放
# 音轨
# 一键
# 可以直接
# 如果没有
# 默认值
# 显存
# 可选
# python
# animation
# 接口
# int
# bool
# for
# red
# 排列
# ai
# 工具
# git
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化91478 】
【
技术知识72672 】
【
云计算0 】
【
GEO优化84317 】
【
优选文章0 】
【
营销推广36048 】
【
网络运营41350 】
【
案例网站102563 】
【
AI智能45237 】
相关推荐:
MetaGPT:AI驱动的软件开发团队,颠覆传统编码模式
智谱清言分析数据怎么用_智谱清言分析数据使用方法详细指南【教程】
百度输入法总是弹出ai 百度输入法ai自动弹出关闭
feelin聊天官方网站入口 feelinAl官方网站
千问怎么用提示词生成演讲稿_千问演讲稿提示词框架与开场【教程】
AI赋能抵押贷款:Total Expert AI 销售助理深度解析
趣味 Phonics:轻松掌握 CVC 单词拼读技巧
人工智能时代:你需要知道的真相和未来趋势
AI内容审查:谷歌搜索结果是否受到人为干预?
豆包AI帮你写代码注释 豆包AI编程辅助教程
打造迷人外表:AI技术揭秘面部美学比例与颜值提升
ROBLOX Brookhaven:惊悚友谊与校园秘密(2025版)
AI在建筑行业的革命:提升效率与优化流程
面试必胜:五大面试技巧助你斩获Offer
eBookWriter AI:无需写作也能创作专业电子书
扣子AI如何绑定自有域名_扣子AI域名绑定与SSL配置【步骤】
今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】
DeepSeek解释机器学习模型 DeepSeek数据科学学习指南
利用AI快速生成数组和枚举:详细指南与实用技巧
解读诗歌中的女性视角:Shelley Puhak 的作品解析
豆包Ai官网在线入口_豆包Ai网页版访问方式
AI如何革新心理健康诊断:从症状检查到大脑分析
深度解析Coldplay酷玩乐队《Viva la Vida》的音乐内涵
探索孟加拉音乐魅力:高尔德普林特莎丽,节日欢歌
稿定AI智能设计怎样自动生成电商Banner_稿定AI智能设计Banner生成流程【步骤】
Amazon Rekognition: 图像与视频分析的强大AI工具
怎么用ai写产品说明书 AI功能介绍与使用步骤详解【实操】
服务合同模板:起草、签署和管理指南,提升业务效率
豆包 AI 在英语单词高效背诵中的趣味应用
AI辅助儿童圣经课程创作:轻松制作教育视频
百度ai助手工具栏怎么关 百度ai助手状态栏隐藏
Power BI: 如何在 Power Query 中更改数据类型
DeepSeek编程怎么用_DeepSeek编程使用方法详细指南【教程】
AISIA O1皮肤检测仪操作指南:安装、使用、疑难解答
AMD Ryzen 5 2600: 游戏玩家高性价比之选
Vizeo AI视频生成器:无需技术,轻松打造营销利器
AI人像摄影新纪元:Gemini AI助力照片编辑
PixianAI抠图怎么修复瑕疵_PixianAI瑕疵修复与手动涂抹工具【步骤】
AI图像生成偏见:克服与优化,打造更真实的数字形象
Speerise亮面体操服测评:舒适与时尚的完美结合
AI简历优化指南:如何让你的简历轻松通过ATS筛选系统
夸克AI能否查快递物流_夸克AI快递查询入口与单号输入【步骤】
雷小兔ai智能写作怎么设置写作风格_雷小兔ai智能写作风格选择方法【指南】
批改网AI检测工具怎样开启实时检测_批改网AI检测工具实时检测开启与延迟设置【指南】
如何在 Google Sheets 中利用 Gemini 自动填充数据
通义千问网页版怎么用模板_通义千问模板使用方法【方法】
ChatGPT官方网页端入口 ChatGPT官网快速登录方法
AI数字人教程:轻松打造专属YouTube虚拟形象
Kling AI 2.5 Turbo:视频生成领域的颠覆者,深度评测与对比
AI网页生成工具有哪些_一键生成企业官网的AI工具推荐
2025-07-22
南京市珐之弘网络技术有限公司专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。