如何让AI帮你干活-娱乐(2)
2023-04-18 16:23:26 时间
背景:
好容易完成朋友的任务,帮忙给小朋友绘画比赛生成一些创意参考图片。他给我个挑战更高的问题,是否可以帮他用AI生成一些视频。这个乍一听以现在AI技术根本不太可能完成。奈何他各种坚持,无奈被迫营业。苦脸接受了这个不可能完成的任务。
要求:
1.视频人物相对稳定
2.视频祯之间不能跳跃太大(背景和画风不能跳变)
3.视频有一定连贯性(可以允许角色跳转不太连贯)
技术方案
思路:找一个视频,解析成图片,然后根据用户动作作为控制批量生成图,把生成的图合成视频输出
1.视频人物相对稳定,这部分我是用dreambooth锁定人物
2.视频不能太跳,这部分我尝试用image2image+control控制锁定
3.视频有一定连贯性,这部分我用video2video方式一定程度锁定角色动作
参考动作获取
视频转图片
#mp4转图片
import cv2
import os
def video2imgs(videoPath, imgPath):
if not os.path.exists(imgPath):
os.makedirs(imgPath) # 目标文件夹不存在,则创建
cap = cv2.VideoCapture(videoPath) # 获取视频
judge = cap.isOpened() # 判断是否能打开成功
print(judge)
fps = cap.get(cv2.CAP_PROP_FPS) # 帧率,视频每秒展示多少张图片
print('fps:',fps)
frames = 1 # 用于统计所有帧数
count = 1 # 用于统计保存的图片数量
while(judge):
flag, frame = cap.read() # 读取每一张图片 flag表示是否读取成功,frame是图片
if not flag:
print(flag)
print("Process finished!")
break
else:
if frames % 10 == 0: # 每隔10帧抽一张
imgname = 'jpgs_' + str(count).rjust(3,'0') + ".jpg"
newPath = imgPath + imgname
print(imgname)
cv2.imwrite(newPath, frame, [cv2.IMWRITE_JPEG_QUALITY, 100])
# cv2.imencode('.jpg', frame)[1].tofile(newPath)
count += 1
frames += 1
cap.release()
print("共有 %d 张图片"%(count-1))
video2imgs('./normal video.mp4','./jpgs1/')
视频裁剪,人像放中间,补抓更清晰pose
#图片裁剪,人像更清晰
import cv2
import os
import os.path
f = r'./jpgs'
o = r'./target'
for file in os.listdir(f):
f_img = f+"/"+file
o_img = o+"/"+file
img = cv2.imread(f_img)
print(img.shape) # (1080, 1920, 3)
cropped = img[30:250, 50:280] # 裁剪坐标为[y0:y1, x0:x1]
cv2.imwrite(o_img, cropped)
图片调整尺寸,把pose放在生成图合适位置,确保生成动作稳定性
#图片尺寸调整
import PIL
import os
import os.path
from PIL import Image
f = r'./target'
o = r'./targets'
for file in os.listdir(f):
f_img = f+"/"+file
o_img = o+"/"+file
img = Image.open(f_img)
img = img.resize((1024,640))
img.save(o_img)
视频生成
本次实验使用stablediffusion中img2img来批量生产
选择了batch,通过controlnet==》pose、segment方法来控制生成图
结果输出:
把生成的图合成视频
from moviepy.editor import ImageSequenceClip
image_path = "result_video03"
fps = 5
clip = ImageSequenceClip(image_path, fps=fps)
clip.write_videofile("output1.mp4", fps=fps)
合成视频效果
展望
现在效果还是不够稳定的
后续会尝试解决这个不稳定问题
相关文章
- 【技术种草】cdn+轻量服务器+hugo=让博客“云原生”一下
- CLB运维&运营最佳实践 ---访问日志大洞察
- vnc方式登陆服务器
- 轻松学排序算法:眼睛直观感受几种常用排序算法
- 十二个经典的大数据项目
- 为什么使用 CDN 内容分发网络?
- 大数据——大数据默认端口号列表
- Weld 1.1.5.Final,JSR-299 的框架
- JavaFX 2012:彻底开源
- 提升as3程序性能的十大要点
- 通过凸面几何学进行独立于边际的在线多类学习
- 利用行动影响的规律性和部分已知的模型进行离线强化学习
- ModelLight:基于模型的交通信号控制的元强化学习
- 浅谈Visual Source Safe项目分支
- 基于先验知识的递归卡尔曼滤波的代理人联合状态和输入估计
- 结合网络结构和非线性恢复来提高声誉评估的性能
- 最佳实践丨云开发CloudBase多环境管理实践
- TimeVAE:用于生成多变量时间序列的变异自动编码器
- 具有线性阈值激活的神经网络:结构和算法
- 内网渗透之横向移动 -- 从域外向域内进行密码喷洒攻击