sora技术报告学习
- 背景
- 学后理解
- 训练流程
- 技术拆解
- 编码解码
- 扩散模型
- 训练用数据
- 28号直播交流会后的一些想法
- 自身的一点点想法
- 参考
原文地址:Video generation models as world simulators
背景
此项目的背景是基于Datawhale的关于sora技术文档的拆解和相关技术讲解课程。重点在于对于文生视频的技术框架讲解,和项目的实践来帮助理解sora及sora诞生的原因。
学后理解
训练流程
自身对于该流程的理解是:
- 视频是很多帧的具备时间次序的图片组成, 数据来源是不同的,有多种规格,为了数据的统一,在前将原视频数据切分为Patches(一个一个规格相同的视频块),后利用编码器压缩成低维空间表示(降低计算消耗)。
- 中间部分常用DIT完成文本语义和图像语义的映射
- 最后通过解码器恢复成各种规格的视频数据
技术拆解
编码解码
patches操作
- 什么是pathces操作
patches 操作是将图像分割成一系列重叠或非重叠的固定大小的子图像块,这些子图像块通常被用作局部特征的表示。 - einops库
eniops是一个用于操作张量的库,它支持numpy、pytoch、tensorflow等
import einops
import matplotlib.pyplot as plt
from einops import rearrange
import numpy as np
import pandas as pd
import os
from torchvision import transforms
from PIL import Image
import torch
image_path = r".\9.png"
preprocess = transforms.Compose([transforms.Resize((224,224)),
transforms.ToTensor()])
image = Image.open(image_path).convert("RGB")
tensor_image = preprocess(image)
display(tensor_image)
patches = rearrange(tensor_image,'c (h p1) (w p2) -> (h w) c p1 p2',p1=16,p2=16)
patches.shape
figure = plt.figure(figsize=(5,5))
for i in range(patches.size(0)):
img = patches[i].permute(1,2,0)
figure.add_subplot(14,14,i+1)
plt.axis('off')
plt.imshow(img)
plt.show
理解时空编码(spacetime latent patches)
- 摊大饼法:
从输入视频剪辑中均匀采样n_t个帧,使用与ViT相同的方法独立地嵌入每个2D帧 并将这些token连接在一起 - 立体切割:
将输入的视频划分为若干tuplet,每个tuplet会变成一个token
通过spatial temperal attention进行空间/时间建模获得有效的视频表征token,即上图灰色block。
扩散模型
训练用数据
待补充
28号直播交流会后的一些想法
听了三位大佬的一些关于sora的讨论,认为主要可以归纳为以下几点
- 三位大佬的一个共同点都是对sora使用的训练模型其实并不怎么关注,侧面也说明其实对于数据科学来说,不管是做大模型也好,还是做一些CV、NLP的小项目也好,最关键的,或者说要实现落地,首要考虑的往往不是模型,而是输入
- 数据的来源,训练数据质量的高低怎么保证
- 怎么保证对原数据进行压缩、编码后,其中需求的信息没有、或者较少的丢失
- sora的出现会对现在的一些现有行业造成冲击(如动画、自媒体等),但也谈不上能够摧毁一些行业,大可不必担心工作会丢,它并不算是一个能够取代人类的智能体,只是一个工具,工具要创造价值需要握在人的手上,所以与其焦虑,不如期待怎么使用它来和自己的工作结合
- sora为啥使用DIT 而不是UNET,大佬的意见是结合自己的实际经验来看,transformer比较适合极大的数据集,而基于CNN的模型在小数量集上的表现反而会更好。
- 就基于sora的诞生,对于自己的工作的启发:
- 赵老师认为其实中国对于数据的基础建设这一块当前是欠缺的,不能说能够像水、电这些当做一种资源去利用(感觉蛮有道理,当前中国是有一些专门做数据标注的公司,但并没有体系化,只是从其它公司接外包,然后招一群人做兼职。现在越来越多的AI产品落地,国内对高质量数据集的需求肯定会越来越大的)
- 沈老师认为,当前实现是不要浮躁,其次是现在其实相对于学术成就,会更加认可你自己实现过的项目,我们想要人生过的好,想要选择好方向(不要选择一些明知道以后可能被取代的方向),然后坚持
自身的一点点想法
- 个人比较认同沈老师的观点,当前的这些AI产品,远算不上真正的通用智能体,这些AI工具的最大意义是使一些原本工作量巨大,繁杂的工作变得效率更高,没法想人一样去思考,也没有人的想象力。
- 同时感觉赵老师说的结合自身体会,感觉好像是个可以试试的创业赛道,不过还是得谨慎思考才行。
参考
- Datawhale 202402学习