当前位置: 首页 > news >正文

基于EasyAnimate模型的视频生成最佳实践

EasyAnimate是阿里云PAI平台自主研发的DiT的视频生成框架,它提供了完整的高清长视频生成解决方案,包括视频数据预处理、VAE训练、DiT训练、模型推理和模型评测等。本文为您介绍如何在PAI平台集成EasyAnimate并一键完成模型推理、微调及部署的实践流程。

背景信息

本文为您介绍以下两种视频生成的方式:

  • 方式一:使用DSW

DSW是为算法开发者量身打造的一站式AI开发平台,集成了JupyterLab、WebIDE、Terminal多种云端开发环境,其中,Gallery提供了丰富的案例和解决方案,帮助您快速熟悉研发流程。您可以打开DSW Gallery中的案例教程,实现一键式运行Notebook,完成基于EasyAnimate的视频生成模型的推理和训练任务,也可以进行模型推理和微调等二次开发操作。

  • 方式二:使用快速开始

快速开始集成了众多AI开源社区中优质的预训练模型,并且基于开源模型支持零代码实现从训练到部署再到推理的全部过程,您可以通过快速开始一键部署EasyAnimate模型并生成视频,享受更快、更高效、更便捷的AI应用体验。

费用说明

  • 如果您的账号为DSW或EAS的新用户,可以免费试用相应产品。关于免费试用的额度、领取方式及注意事项等详细信息,请参见新用户免费试用。

说明:在本教程中,仅支持使用DSW免费资源类型ecs.gn7i-c8g1.2xlarge。

  • 如果您的账号非新用户,使用DSW和EAS会产生相应费用。更多计费详情,请参见交互式建模(DSW)计费说明、模型在线服务(EAS)计费说明、快速开始(QuickStart)计费说明。

前提条件

  • 创建PAI工作空间。具体操作,请参见开通PAI并创建默认工作空间。
  • (可选)开通OSS或NAS。具体操作,请参见开始使用OSS、NAS入门概述。

方式一:使用DSW

步骤一:创建DSW实例

  1. 进入DSW页面。
    1. 登录PAI控制台。
    2. 概览页面选择目标地域。
    3. 在左侧导航栏单击工作空间列表,在工作空间列表页面中单击目标工作空间名称,进入对应工作空间内。
    4. 在工作空间页面的左侧导航栏选择模型开发与训练>交互式建模(DSW),进入DSW页面。
  2. 单击创建实例
  3. 配置实例向导页面,配置以下关键参数,其他参数保持默认即可。
参数说明
实例名称本教程使用的示例值为:AIGC_test_01
资源规格选择GPU规格下的ecs.gn7i-c8g1.2xlarge,或其他A10、GU100规格。
镜像选择官方镜像easyanimate:1.1.4-pytorch2.2.0-gpu-py310-cu118-ubuntu22.04
挂载配置(可选)单击添加,单击创建数据集,创建OSS或NAS数据集。
  1. 单击确定

步骤二:安装EasyAnimate模型

  1. 打开DSW实例。
    1. 登录PAI控制台。
    2. 在左侧导航栏单击工作空间列表,在工作空间列表页面中单击目标工作空间,进入对应工作空间。
    3. 在页面左上方,选择使用服务的地域。
    4. 在左侧导航栏,选择模型开发与训练>交互式建模(DSW)
    5. 单击目标DSW实例操作列下的打开,进入DSW实例的开发环境。
  2. Notebook页签的Launcher页面,单击快速开始区域Tool下的DSW Gallery,打开DSW Gallery页面。
  3. 在DSW Gallery页面中,搜索EasyPhoto: 基于EasyAnimate的AI视频生成示例,单击在DSW中打开,即可自动将本教程所需的资源和教程文件下载至DSW实例中,并在下载完成后自动打开教程文件。

image.png

  1. 下载EasyAnimate相关代码和模型并进行安装。

在教程文件easyanimate.ipynb中,单击image.png运行环境安装节点命令,包括定义函数下载代码下载模型。当成功运行一个步骤命令后,再顺次运行下个步骤的命令。

步骤三:推理模型

方式一:使用代码进行推理

单击image.png运行模型推理>使用代码进行推理节点的命令进行模型推理。您可在**/mnt/workspace/demos/easyanimate/EasyAnimate/samples/easyanimate-videos**目录中查看生成结果。
您可以修改不同的参数来达到不同的效果,参数说明:

参数名说明类型
prompt用户输入的正向提示词。string
negative_prompt用户输入的负向提示词。string
num_inference_steps用户输入的步数。int
guidance_scale引导系数。int
sampler_name采样器类型。在生成风景类animation时,采样器 (sampler_name) 推荐使用DPM++和Euler A。在生成人像类animation时,采样器推荐使用Euler A和Euler。string
width生成视频宽度。int
height生成视频高度。int
video_length生成视频帧数。int
fps保存的视频帧率。int
save_dir保存视频文件夹 (相对路径)。string
seed随机种子。int
lora_weightLoRA模型参数的权重。float
lora_path额外的LoRA模型路径。用于生成人物视频可以修改为预置的模型路径:models/Personalized_Model/easyanimate_portrait_lora.safetensorsstring
transformer_pathtransformer模型路径。用于生成人物视频可以修改为预置的模型路径:models/Personalized_Model/easyanimate_portrait.safetensorsstring
motion_module_pathmotion_module模型路径。string
方式二:使用WebUI进行推理
  1. 单击image.png运行模型推理>UI启动节点的命令,进行模型推理。
  2. 单击生成的链接,进入WebUI界面。

image.png

  1. 在WebUI界面选择预训练的模型路径、微调后的基模型和LoRA模型,设置LoRA权重,其它参数按需配置即可。

image.png

  1. 单击Generate(生成),等待一段时间后,即可在右侧查看或下载生成的视频。

image.png

步骤四:微调LoRA

EasyAnimate提供了丰富的模型训练方式,包括DiT模型的训练(LoRA微调和基模型的全量微调)和VAE的训练。关于Gallery中内置的LoRA微调部分,更多信息,请参见EasyAnimate。

准备数据

单击image.png执行模型训练>数据准备节点的命令,即可下载示例数据,用于模型训练。您也可以按照如下格式要求自行准备数据文件。
文件数据格式如下。

project/
├── datasets/
│   ├── internal_datasets/
│       ├── videos/
│       │   ├── 00000001.mp4
│       │   ├── 00000002.mp4
│       │   └── .....
│       └── json_of_internal_datasets.json

其中,JSON文件数据格式和参数说明如下。

[{"file_path": "videos/00000001.mp4","text": "A group of young men in suits and sunglasses are walking down a city street.","type": "video"},{"file_path": "videos/00000002.mp4","text": "A notepad with a drawing of a woman on it.","type": "video"}.....
]
参数说明
file_path视频/图片数据的存放位置(相对路径)。
text数据的文本描述。
type视频为video,图片为image。
训练模型
  1. 将对应的训练脚本中的DATASET_NAME及DATASET_META_NAME设置为训练数据所在目录及训练文件地址。
export DATASET_NAME=“” # 训练数据所在目录
export DATASET_META_NAME=“datasets/Minimalism/metadata_add_width_height.json” # 训练文件地址
  1. 单击image.png执行启动训练>LoRA训练节点的命令。
  2. 训练完成后,将生成的模型移动至models/Personalized_model文件夹,即可在UI界面中选择,或单击image.png执行LoRA模型推理节点的命令,指定lora_path进行视频生成。

方式二:使用快速开始

步骤一:部署模型

  1. 进入快速开始页面。
    1. 登录PAI控制台。
    2. 在左侧导航栏单击工作空间列表,在工作空间列表页面单击目标工作空间名称,进入对应工作空间内。
    3. 在左侧导航栏单击快速开始,进入快速开始页面。
  2. 在快速开始页面,搜索EasyAnimate 高清长视频生成,然后单击部署,配置相关参数。

EasyAnimate目前仅支持使用bf16进行推理,请选择A10及其以上的显卡。
image.png

  1. 单击部署,在弹出的计费提醒对话框中,单击确定,页面将自动跳转到服务详情页面。

状态变为运行中时,即表示模型部署成功。

步骤二:使用模型

模型部署完成后,您可以使用WebUI及API两种方式调用服务来生成视频。

WebUI方式
  1. 服务详情页面,单击查看WEB应用

image.png

  1. 在WebUI界面选择预训练的模型路径,其它参数按需配置即可。

image.png

  1. 单击Generate(生成),等待一段时间后,即可在右侧查看或下载生成的视频。

image.png

API方式
  1. 服务详情页面的资源详情区域,单击查看调用信息,获取调用服务所需的信息。

image.png

  1. 通过接口更新Transformer模型,可在DSW实例或本地Python环境中执行。

如果已经在WebUI中选择模型,则无需发送请求重复调用。如遇请求超时,请在EAS日志中确认模型已加载完毕。加载完成,日志中将提示Update diffusion transformer done。
Python请求示例如下。

import json
import requestsdef post_diffusion_transformer(diffusion_transformer_path, url='http://127.0.0.1:7860', token=None):datas = json.dumps({"diffusion_transformer_path": diffusion_transformer_path})head = {'Authorization': token}r = requests.post(f'{url}/easyanimate/update_diffusion_transformer', data=datas, headers=head, timeout=15000)data = r.content.decode('utf-8')return datadef post_update_edition(edition, url='http://0.0.0.0:7860',token=None):head = {'Authorization': token}datas = json.dumps({"edition": edition})r = requests.post(f'{url}/easyanimate/update_edition', data=datas, headers=head)data = r.content.decode('utf-8')return dataif __name__ == '__main__':url = '<eas-service-url>'token = '<eas-service-token>'# -------------------------- ##  Step 1: update edition# -------------------------- #edition = "v2"outputs = post_update_edition(edition,url = url,token=token)print('Output update edition: ', outputs)# -------------------------- ##  Step 2: update edition# -------------------------- ## 默认路径不可修改diffusion_transformer_path = "/mnt/models/Diffusion_Transformer/EasyAnimateV2-XL-2-512x512"outputs = post_diffusion_transformer(diffusion_transformer_path, url = url, token=token)print('Output update edition: ', outputs)

其中:

  • :替换为步骤1中查询到的服务访问地址。
  • :替换为步骤1中查询到的服务Token。
  1. 调用服务,生成视频或图片。
  • 服务输入参数说明
参数名说明类型默认值
prompt_textbox用户输入的正向提示词。string必填。无默认值
negative_prompt_textbox用户输入的负向提示词。string“The video is not of a high quality, it has a low resolution, and the audio quality is not clear. Strange motion trajectory, a poor composition and deformed video, low resolution, duplicate and ugly, strange body structure, long and strange neck, bad teeth, bad eyes, bad limbs, bad hands, rotating camera, blurry camera, shaking camera. Deformation, low-resolution, blurry, ugly, distortion.”
sample_step_slider用户输入的步数。int30
cfg_scale_slider引导系数。int6
sampler_dropdown采样器类型。stringEluer
在 [Eluer, EluerA, DPM++, PNDM, DDIM] 中选择
width_slider生成视频宽度。int672
height_slider生成视频高度。int384
length_slider生成视频帧数。int144
is_image是否是图片。boolFALSE
lora_alpha_sliderLoRA模型参数的权重。float0.55
seed_textbox随机种子。int43
lora_model_path额外的LoRA 模型路径。stringnone
若有,则会在请求时带上lora。在当次请求后移除。
base_model_path需要更新的transformer模型路径。stringnone
motion_module_path需要更新的motion_module模型路径。stringnone
  • Python请求示例

服务返回base64_encoding,为base64结果。
您可以在**/mnt/workspace/demos/easyanimate/**目录中查看生成结果。

import base64
import json
import sys
import time
from datetime import datetime
from io import BytesIOimport cv2
import requests
import base64def post_infer(is_image, length_slider, url='http://127.0.0.1:7860',token=None):head = {'Authorization': token}datas = json.dumps({"base_model_path": "none","motion_module_path": "none","lora_model_path": "none", "lora_alpha_slider": 0.55, "prompt_textbox": "This video shows Mount saint helens, washington - the stunning scenery of a rocky mountains during golden hours - wide shot. A soaring drone footage captures the majestic beauty of a coastal cliff, its red and yellow stratified rock faces rich in color and against the vibrant turquoise of the sea.", "negative_prompt_textbox": "Strange motion trajectory, a poor composition and deformed video, worst quality, normal quality, low quality, low resolution, duplicate and ugly, strange body structure, long and strange neck, bad teeth, bad eyes, bad limbs, bad hands, rotating camera, blurry camera, shaking camera", "sampler_dropdown": "Euler", "sample_step_slider": 30, "width_slider": 672, "height_slider": 384, "is_image": is_image,"length_slider": length_slider,"cfg_scale_slider": 6,"seed_textbox": 43,})r = requests.post(f'{url}/easyanimate/infer_forward', data=datas, headers=head,timeout=1500)data = r.content.decode('utf-8')return dataif __name__ == '__main__':# initiate timenow_date    = datetime.now()time_start  = time.time()  url = '<eas-service-url>'token = '<eas-service-token>'# -------------------------- ##  Step 3: infer# -------------------------- #is_image = Falselength_slider = 27outputs = post_infer(is_image, length_slider, url = url, token=token)# Get decoded dataoutputs = json.loads(outputs)base64_encoding = outputs["base64_encoding"]decoded_data = base64.b64decode(base64_encoding)if is_image or length_slider == 1:file_path = "1.png"else:file_path = "1.mp4"with open(file_path, "wb") as file:file.write(decoded_data)# End of record timetime_end = time.time()  time_sum = (time_end - time_start) % 60 print('# --------------------------------------------------------- #')print(f'#   Total expenditure: {time_sum}s')print('# --------------------------------------------------------- #')

其中:

  • < eas-service-url>:替换为步骤1中查询到的服务访问地址。
  • < eas-service-token>:替换为步骤1中查询到的服务Token。

相关文章:

基于EasyAnimate模型的视频生成最佳实践

EasyAnimate是阿里云PAI平台自主研发的DiT的视频生成框架&#xff0c;它提供了完整的高清长视频生成解决方案&#xff0c;包括视频数据预处理、VAE训练、DiT训练、模型推理和模型评测等。本文为您介绍如何在PAI平台集成EasyAnimate并一键完成模型推理、微调及部署的实践流程。 …...

linux最大线程数限制及打开最大文件数

1.root用户下执行 ulimit -a 然后查看 max user processes 这个值通常是系统最大线程数的一半 max user processes&#xff1a;当前用户同时打开的进程(包括线程)的最大个数为 2.普通用户下 ulimit -a 出现的max user processes的值 默认是 /etc/security/limits.d/20-nproc.co…...

MyBatis系列七: 一级缓存,二级缓存,EnCache缓存

缓存-提高检索效率的利器 官方文档 一级缓存基本介绍快速入门Debug一级缓存执行流程一级缓存失效分析 二级缓存基本介绍快速入门Debug二级缓存执行流程注意事项和使用细节 mybatis的一级缓存和二级缓存执行顺序小实验细节说明 EnCache缓存基本介绍配置和使用EhCache细节说明 My…...

C++迈向精通:函数指针对象与函数对象

C&#xff1a;指针对象 C语言中的函数指针 在C语言中&#xff0c;我们见过如下的函数指针&#xff1a; int add(int a, int b) {return a b; }int main() {int a, b;int (*p)(int, int) add;scanf("%d%d", &a, &b);p(a, b);return 0; } 为了适应C中面向…...

类和对象知识点

面向对象概念回顾 万物皆对象 用程序来抽象&#xff08;形容&#xff09;对象 用面向对象的思想来编程 什么是类 基本概念 具有相同特征&#xff0c;具有相同行为&#xff0c;一类事物的抽象。 类是对象的模板&#xff0c;可以通过类创建出对象&#xff0c;类的关键词—…...

【FAS】《Survey on face anti-spoofing in face recognition》

文章目录 原文基于手工设计特征表达的人脸活体检测方法基于深度学习的人脸活体检测方法基于融合策略的人脸活体检测方法人脸检测活体数据库点评 原文 邓雄,王洪春,赵立军等.人脸识别活体检测研究方法综述[J].计算机应用研究,2020,37(09):2579-2585.DOI:10.19734/j.issn.1001-3…...

【Unity】RPG2D龙城纷争(一)搭建项目、导入框架、前期开发准备

更新日期&#xff1a;2024年6月12日。 项目源码&#xff1a;后续章节发布 免责声明&#xff1a;【RPG2D龙城纷争】使用的图片、音频等所有素材均有可能来自互联网&#xff0c;本专栏所有文章仅做学习和教程目的&#xff0c;不会将任何素材用于任何商业用途。 索引 【系列简介】…...

多目标跟踪中检测器和跟踪器如何协同工作的

多目标跟踪中检测器和跟踪器如何协同工作的 flyfish 主要是两者 接口间的交互 假设 原始图像尺寸&#xff1a;1920&#xff08;宽&#xff09;x 1080&#xff08;高&#xff09; 模型输入尺寸&#xff1a;640&#xff08;宽&#xff09;x 640&#xff08;高&#xff09; 检…...

kali系统几个开机启动项的区别

1、Live system (amd64) 简单的模式 &#xff0c;启动系统&#xff0c;直接进入 Kali&#xff0c;在系统中的所有的操作和设置都会在下次重启时失效。 Kali 中保存/编辑的所有东西都会重启丢失。 2、Live system (amd64 fail-safe mode) 这种模式与 Live (amd64) 类似&#xf…...

【自撰写】【国际象棋入门】第5课 常见开局战术组合(一)

第5课 常见开局战术组合&#xff08;一&#xff09; 本次课中&#xff0c;我们简要介绍几种常见的开局战术组合。开局当中&#xff0c;理想的情况是&#xff0c;己方的两只&#xff08;或以上&#xff09;轻子相互配合&#xff0c;或者与己方的兵配合&#xff0c;在完成布局的…...

高考志愿填报选专业,女孩就业率最好的专业有哪些?

高考志愿填报选专业&#xff0c; 大家都会关心&#xff1a;将来怎么就业&#xff1f; 按照目前的环境来说&#xff0c;女孩的就业是不乐观的&#xff0c;在职场上&#xff0c;绝大部分岗位都是男性优先的&#xff0c;至少短期内可能还无法改变&#xff0c;这样就要求我们在大学…...

yolov5模型训练早停模型变大

目录 1. 背景2. 原因分析2.1 train代码分析2.2 strip_optimizer函数分析 3. 验证 1. 背景 最近使用tph-yolov5训练yolov5l-tph-plus模型时&#xff0c;发现模型收敛的差不多了&#xff0c;就果断的停止了训练&#xff0c;结果发现last.pt和best.pt竟然488M&#xff0c;而正常训…...

next是什么???

大家都知道最近出了一个很火的框架&#xff0c;Next.js框架。很多大公司&#xff08;例如&#xff1a;Tencent腾讯&#xff0c;docker&#xff0c;Uber&#xff09;的项目都在使用这个Next.js框架。那Next.js到底是一个什么框架呢&#xff1f;Next.js有什么优点呢&#xff1f;今…...

K8s的资源对象

资源对象是 K8s 提供的一些管理和运行应用容器的各种对象和组件。 Pod 资源是 K8s 中的基本部署单元&#xff0c;K8s通过Pod来运行业务应用的容器镜像 Job 和 CronJob 资源用于执行任务和定时任务&#xff0c;DaemonSet 资源提供类似每个节点上守护进程&#xff0c; Deployment…...

OpenStack快速入门

任务一 熟悉OpenStack图形界面操作 1.1 Horizon项目 •各OpenStack服务的图形界面都是由Horizon提供的。 •Horizon提供基于Web的模块化用户界面。 •Horizon为云管理员提供一个整体的视图。 •Horizon为终端用户提供一个自主服务的门户。 •Horizon由云管理员进行管理…...

STM32CubeIDE对STM32F072进行ADC配置及使用

目录 1. 配置2. 时钟3. ADC配置4. 代码补充 1. 配置 引脚配置&#xff1a;PB0 2. 时钟 都是48MHz 3. ADC配置 ADC配置&#xff1a; 开启中断&#xff1a; 4. 代码补充 轮训ADC采样&#xff1a; HAL_ADC_PollForConversion(&hadc,10);ADC采样&#xff1a; HAL_ADC_Start (&a…...

Leetcode Hot 100 刷题记录 - Day 1

问题描述&#xff1a; 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 示…...

k8s学习--Kruise Rollouts 基本使用

文章目录 Kruise Rollouts简介什么是 Kruise Rollouts&#xff1f;核心功能 应用环境一、OpenKruise部署1.安装helm客户端工具2. 通过 helm 安装 二、Kruise Rollouts 安装2. kubectl plugin安装 三、Kruise Rollouts 基本使用(多批次发布)1. 使用Deployment部署应用2.准备Roll…...

PHP框架详解 - CakePHP框架

CakePHP 是一个开源的 PHP Web 应用框架&#xff0c;它遵循 MVC&#xff08;模型-视图-控制器&#xff09;设计模式。CakePHP 提供了快速开发的功能&#xff0c;如代码自动生成、数据库交互的 CRUD 操作支持、灵活的路由、模板引擎、表单处理以及其它许多有用的特性22。 CakeP…...

el-cascader 支持多层级,多选(可自定义限制数量),保留最后一级

多功能的 el-cascader 序言&#xff1a;最近遇到一个需求关于级联的&#xff0c;有点东西&#xff0c;这里是要获取某个产品类型下的产品&#xff0c;会存在产品类型和产品在同一级的情况&#xff0c;但是产品类型不能勾选&#xff1b; 情况1&#xff08;二级菜单是产品&…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

django blank 与 null的区别

1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是&#xff0c;要注意以下几点&#xff1a; Django的表单验证与null无关&#xff1a;null参数控制的是数据库层面字段是否可以为NULL&#xff0c;而blank参数控制的是Django表单验证时字…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...

深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏

一、引言 在深度学习中&#xff0c;我们训练出的神经网络往往非常庞大&#xff08;比如像 ResNet、YOLOv8、Vision Transformer&#xff09;&#xff0c;虽然精度很高&#xff0c;但“太重”了&#xff0c;运行起来很慢&#xff0c;占用内存大&#xff0c;不适合部署到手机、摄…...

Ubuntu系统复制(U盘-电脑硬盘)

所需环境 电脑自带硬盘&#xff1a;1块 (1T) U盘1&#xff1a;Ubuntu系统引导盘&#xff08;用于“U盘2”复制到“电脑自带硬盘”&#xff09; U盘2&#xff1a;Ubuntu系统盘&#xff08;1T&#xff0c;用于被复制&#xff09; &#xff01;&#xff01;&#xff01;建议“电脑…...

LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用

中达瑞和自2005年成立以来&#xff0c;一直在光谱成像领域深度钻研和发展&#xff0c;始终致力于研发高性能、高可靠性的光谱成像相机&#xff0c;为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...