文生视频基础1:sora技术报告学习
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 torchimage_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.shapefigure = 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学习
相关文章:
文生视频基础1:sora技术报告学习
sora技术报告学习 背景学后理解训练流程技术拆解编码解码扩散模型训练用数据 28号直播交流会后的一些想法自身的一点点想法 参考 原文地址:Video generation models as world simulators 背景 此项目的背景是基于Datawhale的关于sora技术文档的拆解和相关技术讲解…...
Linux第68步_旧字符设备驱动的一般模板
file_operations结构体中的函数就是我们要实现的具体操作函数。 注意: register_chrdev()和 unregister_chrdev()这两个函数是老版本驱动使用的。现在新字符设备驱动已经不再使用这两个函数,而是使用Linux内核推荐的新字符设备驱动API函数。 1、创建C…...
23种设计模式——工厂方法模式
定义: 一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其他子类。 工厂方法通用类图: 这个图更好理解 在工厂方法模式中,抽象产品类Product负责定义产品的共性,实现对事物最抽象的…...
水豚鼠标助手 强大的鼠标美化工具
水豚鼠标助手 水豚鼠标助手是一款 鼠标换肤、屏幕画笔、放大镜、聚光灯、屏幕放大、倒计时功能的强大屏幕演示工具。 软件助手获取 水豚鼠标助手1.0.0 安装教程 第一步:下载后,双击软件安装包 第二步:Windows可能会出现提示弹窗ÿ…...
ArrayList集合源码分析
ArrayList集合源码分析 文章目录 ArrayList集合源码分析一、字段分析二、构造方法分析三、方法分析四、总结 内容如有错误或者其他需要注意的知识点,欢迎指正或者探讨补充,共同进步。 一、字段分析 //默认初始化容量。这里和Vector一样,只是…...
循环队列与循环双端队列
文章目录 前言循环队列循环双端队列 前言 1、学习循环队列和循环双端队列能加深我们对队列的理解,提高我们的编程能力。 2、本文循环队列使用的是数组,循环双端队列用的是双向链表 3、题目连接:设计循环队列 ,设计循环双端队列。 …...
https【详解】与http的区别,对称加密,非对称加密,证书,解析流程图
http 和 https 的区别 http 是明文传输,敏感信息容易在传输过程中被劫持https http加密,劫持了也无法解密 https 用到的加密方式 https 同时使用了对称加密和非对称加密,之所以没有全部使用非对称加密,是因为非对称加密的运算更加…...
(C语言)qsort函数模拟实现
前言 我们需先了解qsort函数 qsort函数详解:http://t.csdnimg.cn/rTNv9 qsort函数可以排序多种数据类型,很是神奇,这是为什么,我们在里模拟实现这样的功能 目录 1. qsort函数模拟实现 2. 我们使用bubble_sort函数排序整形数…...
WordPress建站入门教程:如何在本地电脑搭建WordPress网站?
前面跟大家分享了『WordPress建站入门教程:如何安装本地WordPress网站运行环境?』,接下来boke112百科就继续跟大家分享本地电脑如何搭建WordPress网站。 小皮面板(phpstudy)的“软件管理 – 网站程序”虽然可以一键部…...
Vue3教程
1.1 配置环境 vue官网: Vue.js - The Progressive JavaScript Framework | Vue.js 终端 Linux和Mac上可以用自带的终端。 Windows上推荐用powershell或者cmd。Git Bash有些指令不兼容。 安装Nodejs 安装地址: Node.js 安装vue/cli 打开Git Bash&#x…...
Linux系统Docker部署RStudio Server
文章目录 前言1. 安装RStudio Server2. 本地访问3. Linux 安装cpolar4. 配置RStudio server公网访问地址5. 公网远程访问RStudio6. 固定RStudio公网地址 前言 RStudio Server 使你能够在 Linux 服务器上运行你所熟悉和喜爱的 RStudio IDE,并通过 Web 浏览器进行访问…...
【C++】每周一题——2024.3.3(手滑再再写一篇)
题目 Cpp 【问题描述】 求N个字符串的最长公共子串,2 < N<=20,字符串长度不超过255。 例如:N=3,由键盘依次输入三个字符串为 What is local bus? Name some local buses. local bus is a h…...
TabLayout与ToolBar、ViewPager的使用
目录 1. 在ToolBar中添加TabLayout 2. 将工具栏设为活动栏 3. 初始化TabLayout 4. TabLayout监听器 可以在ToolBar工具栏中添加TabLayout配合,效果如下图。 1. 在ToolBar中添加TabLayout TabLayout的常用属性有: tabBackground 指定标签的背景 t…...
链表基础知识详解(非常详细简单易懂)
概述: 链表作为 C 语言中一种基础的数据结构,在平时写程序的时候用的并不多,但在操作系统里面使用的非常多。不管是RTOS还是Linux等使用非常广泛,所以必须要搞懂链表,链表分为单向链表和双向链表,单向链表很…...
SAP PP学习笔记05 - BOM配置(Customize)1 - 修正参数
上次学习了BOM相关的内容。 SAP PP学习笔记04 - BOM1 - BOM创建,用途,形式,默认值,群组BOM等_sap销售bom与生产bom-CSDN博客 SAP PP学习笔记04 - BOM2 -通过Serial来做简单的BOM变式配置,副明细,BOM状态&…...
前端从普通登录到单点登录(SSO)
随着前端登录场景的日益复杂化和技术思想的不断演进,前端在登录方面的知识结构变得越来越复杂。对于前端开发者来说,在日常工作中根据不同的登录场景提供合适的解决方案是我们的职责所在,本文将梳理前端登录的演变过程。 1、无状态的HTTP H…...
考研总计划(基础篇)
分为数学,专业课,英语三个部分 数学规划表 高数基础:3月初到4月15号 具体实行计划:分为看课日和写题日 看课日:早上10点到12点半看课,19:30到21:30继续看课。 写题日:早上10点到12点半复习前一天的题目࿰…...
力扣周赛387
第一题 代码 package Competition.The387Competitioin;public class Demo1 {public static void main(String[] args) {}public int[] resultArray(int[] nums) {int ans[]new int[nums.length];int arr1[]new int[nums.length];int arr2[]new int[nums.length];if(nums.leng…...
部署PhotoMaker通过堆叠 ID 嵌入自定义逼真的人物照片
PhotoMaker只需要一张人脸照片就可以生成不同风格的人物照片,可以快速出图,无需额外的LoRA培训。 安装环境 python 3.10gitVisual Studio 2022 安装依赖库 git clone https://github.com/bmaltais/PhotoMaker.git cd PhotoMaker python -m venv venv…...
挑战杯 基于深度学习的中文情感分类 - 卷积神经网络 情感分类 情感分析 情感识别 评论情感分类
文章目录 1 前言2 情感文本分类2.1 参考论文2.2 输入层2.3 第一层卷积层:2.4 池化层:2.5 全连接softmax层:2.6 训练方案 3 实现3.1 sentence部分3.2 filters部分3.3 featuremaps部分3.4 1max部分3.5 concat1max部分3.6 关键代码 4 实现效果4.…...
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
