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

房天下搜房网官网/seo效果最好的是

房天下搜房网官网,seo效果最好的是,wordpress演示数据怎么导入,太原网站建设服务本篇文章聊聊,如何快速上手 Stable Video Diffusion (SVD) 图生视频大模型。 写在前面 月底计划在机器之心的“AI技术论坛”做关于使用开源模型 “Stable Diffusion 模型” 做有趣视频的实战分享。 因为会议分享时间有限,和之前一样,比较简…

本篇文章聊聊,如何快速上手 Stable Video Diffusion (SVD) 图生视频大模型。

写在前面

月底计划在机器之心的“AI技术论坛”做关于使用开源模型 “Stable Diffusion 模型” 做有趣视频的实战分享。

因为会议分享时间有限,和之前一样,比较简单的部分,就用博客文章的形式来做补充分享吧。

本篇是一篇相关的补充内容,主要聊聊使用开源行业标杆 stability.ai 出品的 Stable Video Diffusion 的快速上手。

本篇文章相关的代码保存在 soulteary/docker-stable-video-diffusion,有需要可以自取,欢迎“一键三连”。

Stable Video Diffusion

2023 年 11 月末,stability.ai 发布了 Stable Video Diffusion,依旧是扩散模型,但是将图片技术衍生到了视频领域。能够将静态图像作为条件帧,并基于它来生成视频。如果你对 Stable Diffusion 实践和开源软件核心组件解析感兴趣,可以移步之前有关的分享内容。

模型的详细介绍,我们在官方新闻发布页面能够找到,我就不多赘述了。模型的使用方式类似之前文生图的 Stable Diffusion,还是简单的三段式使用方法:“输入内容”、“等待模型处理生成”、“获取AI 生成结果”。

所以,我们现在可以在开源模型上,用一张图片相对快速的生成一小段内容强相关的视频啦。

相关的模型,官方一共开源了两个,一个是基础版本,能够生成 14 帧 1024x576 分辨率内容的基础模型 stabilityai/stable-video-diffusion-img2vid,另外一个是基于基础模型进行 finetune 得到的 “XT” 模型:stabilityai/stable-video-diffusion-img2vid-xt,它能够生成相同分辨率 25 帧的内容。借助 AutoencoderKL(官方文档中称作 F8 解码器)和对 VAE 模型的 finetune,进一步提升了视频内容质量和一致性,降低了画面闪烁的问题。

在官方的介绍中,当时发布模型时的生成效果比 GEN-2 和 PikaLabs 更受到用户的欢迎。

当然,这个模型还比较早期,有一些明显的缺陷:

  • 目前直接使用 SVD 生成的视频都很短,通常在 5 秒之内,并且暂时无法实现照片级别的画面真实感。
  • 生成结果和早期 Stable Diffusion 类似,比较不可控,可能会生成距离预期偏差比较大的没有运动或者运动频率特别慢的视频镜头画面。
  • 暂时无法通过文本控制干预视频的生成。
  • 暂时无法呈现清晰的文本内容。
  • 通常无法正确的处理人物内容,特别是人脸。
  • 模型的 clip_vision_model 编码器在解析图片内容时,会损失一些信息。

当然,上述问题的解决都只是时间问题,开源模型的演进速度是非常快的,所以不妨先捡起这张船票,一起扬帆起航。

基础环境准备

我个人比较倾向使用 Docker 作为运行环境,在投入很少额外资源的情况下,能够快速获得纯净、可复现的一致性非常棒的环境。

如果你选择 Docker 路线,不论你的设备是否有显卡,都可以根据自己的操作系统喜好,参考这两篇来完成基础环境的配置《基于 Docker 的深度学习环境:Windows 篇》、《基于 Docker 的深度学习环境:入门篇》。当然,使用 Docker 之后,你还可以做很多事情,比如:之前几十篇有关 Docker 的实践,在此就不赘述啦。

除此之外,为了高效运行模型,我推荐使用 Nvidia 官方的容器镜像(nvcr.io/nvidia/pytorch:23.12-py3),以及 HuggingFace 出品的 Diffusers 工具包。

我们可以基于上面的内容,快速折腾一个干净、高效的基础运行环境:

FROM nvcr.io/nvidia/pytorch:23.12-py3
RUN pip install transformers==4.35.2 gradio==4.13.0 diffusers==0.25.0 accelerate==0.25.0
RUN pip install opencv-fixer==0.2.5
RUN python -c "from opencv_fixer import AutoFix; AutoFix()"
WORKDIR /app

在本地创建一个名为 docker 的目录,将上面的代码保存到文件夹内,文件名称为 Dockerfile,然后使用下面的命令完成镜像的构建,基础工作就准备好了一半:

docker build -t soulteary/svd-runtime -f docker/Dockerfile .

当然,如果你和我一样,喜欢“偷懒”,可以用文字开头提到的示例项目中的文件直接开搞:

# 下载项目代码
git clone https://github.com/soulteary/docker-stable-video-diffusion.git
# 切换工作目录
cd docker-stable-video-diffusion
# 构建基础环境镜像
docker build -t soulteary/svd-runtime -f docker/Dockerfile .
# 如果你希望速度快一些,可以用这条命令替代上面的命令
docker build -t soulteary/svd-runtime -f docker/Dockerfile.cn .

等到镜像构建完毕后,我们开始准备模型文件。

修正 Nvidia 镜像中的 OpenCV 依赖问题

如果你仔细看上面的 Docker 镜像准备文件的内容,你会发现有这么两行内容:

RUN pip install opencv-fixer==0.2.5
RUN python -c "from opencv_fixer import AutoFix; AutoFix()"

这个两条命令可以解决从 2023 年 6 月开始的 Nvidia 官方镜像适配 Stable Diffusion Video 相关模型,在使用 Diffusers 等 HuggingFace 工具保存视频文件时,本质上和 module 'cv2.dnn' has no attribute 'DictValue' 相关的报错问题。

这个问题在社区早些时候有被反馈(opencv/opencv-python #884),主要原因是在安装 numpy 时被带入一起安装的版本过旧 opencv 导致的兼容性问题。比较 Trick 的是我们并不能通过简单执行 pip install 来更新软件包,需要遵从帖子进行一些手动清理安装,才能将问题解决。

所以,我写了一个简单的开源小工具,来自动修正这个问题,项目开源地址在:soulteary/opencv-fixer,如果你在其他模型相关的使用遇到了类似问题,都可以试试它。

下载模型

我们来完成镜像准备之外的 50% 的准备工作,下载模型。不论你从哪里获取模型,建议你在得到模型后进行文件 Hash 验证:

shasum svd_xt.safetensors 
a74f28bca18f1814b1447c391450b7f720b3b97eshasum svd_xt_image_decoder.safetensors 1d6f36c441df4a17005167986b12720db1b118f2

你可以根据你的实际网络情况,来选择到底是从 HuggingFace 下载模型还是从 ModelScope 来下载模型,如果你选择的是 Model Scope,别忘记在你下载完模型之后,再从 HuggingFace 进行下仓库内容除两个大尺寸模型文件之外的内容更新。

关于模型的快速下载,我在之前的文章里多次提到过,如果你选择使用 HuggingFace 来下载模型和包含最新的仓库程序文件:

# 安装下载工具
pip install huggingface-cli
# 下载我们所需要的模型
huggingface-cli download --resume-download --local-dir-use-symlinks False stabilityai/stable-video-diffusion-img2vid-xt --local-dir ./models/

如果你在访问网络时,遇到了一些问题,可以搭配使用社区网友提供的加速镜像:

HF_ENDPOINT=https://hf-mirror.com huggingface-cli download --resume-download --local-dir-use-symlinks False stabilityai/stable-video-diffusion-img2vid-xt --local-dir ./models/

或者,使用官方提供的新版本工具进行更快速度的下载:

HF_ENDPOINT=https://hf-mirror.com HF_HUB_ENABLE_HF_TRANSFER=1 huggingface-cli download --resume-download --local-dir-use-symlinks False stabilityai/stable-video-diffusion-img2vid-xt --local-dir ./models/

如果你选择使用 ModelScope,同样比较简单,但是需要注意的是,ModelScope 中的内容很多时候会比 HuggingFace 上的内容旧,所以推荐在下载完毕之后,再检查是否需要使用 HuggingFace 上的内容做更新替换:

# 下载安装工具
pip install modelscope
# 下载模型
from modelscope import snapshot_download
snapshot_download('AI-ModelScope/stable-video-diffusion-img2vid-xt', cache_dir="./models/")

模型下载好之后,我们可以整理下目录结构,保持 Models 目中有我们下载好的模型就好:

├── docker
│   ├── Dockerfile
│   └── Dockerfile.cn
├── models
│   └── stabilityai
│       └── stable-video-diffusion-img2vid-xt
└── web

编写模型推理程序

完整的程序文件在这里,算上空格和美观的换行,大概不到 150 行,我这里再做一些简化,主要讲解下程序的运行流程:

# 若干依赖的引入
import gradio as gr
from diffusers import StableVideoDiffusionPipeline
from diffusers.utils import export_to_video
from PIL import Image
# ... 省略其他引用# 保证乐子,让随机数范围大一些
max_64_bit_int = 2 ** 63 - 1
# ... 省略其他准备工作# 使用 diffusers 来创建一个 AI Pipeline
pipe = StableVideoDiffusionPipeline.from_pretrained("/app/models/stabilityai/stable-video-diffusion-img2vid-xt",torch_dtype=torch.float16,variant="fp16",
)
pipe.to("cuda")
# 加载 UNET 和 VAE 模型,让生成结果效果更好(关于这俩模型干啥的,之前的 Stable Diffusion 文章有展开,不赘述
pipe.unet = torch.compile(pipe.unet, mode="reduce-overhead", fullgraph=True)
pipe.vae = torch.compile(pipe.vae, mode="reduce-overhead", fullgraph=True)# 核心的视频生成逻辑
def sample(image: Image,seed: Optional[int] = 42,randomize_seed: bool = True,motion_bucket_id: int = 127,fps_id: int = 6,version: str = "svd_xt",cond_aug: float = 0.02,decoding_t: int = 3,  # 根据你的显卡容量来调整,显存不多可以调整到 1device: str = "cuda",output_folder: str = output_folder,
):# ... 省略一些准备工作# 调用 AI Pipeline 生成视频帧内容frames = pipe(image,decode_chunk_size=decoding_t,generator=torch.manual_seed(seed),motion_bucket_id=motion_bucket_id,noise_aug_strength=0.1,num_frames=25,).frames[0]# 保存视频export_to_video(frames, video_path, fps=fps_id)return video_path, seed# 调整上传图片内容的尺寸,模型对处理的图片尺寸有要求
def resize_image(image: Image, output_size: Tuple[int, int] =(1024, 576)):# ...省略若干图片调整逻辑,图片模式、尺寸裁剪等等return cropped_image# 用于连接视频生成和 Gradio 界面的“工具人”
def generate(image, seed, randomize_seed, motion_bucket_id, fps_id):img = resize_image(image, output_size=(1024, 576))video, seed = sample(img, seed, randomize_seed, motion_bucket_id, fps_id)return video, seed# 配置一个 Gradio 网页界面
app = gr.Interface(fn=generate,inputs=[gr.Image(label="Upload your image", type="pil"),gr.Slider(label="Seed", ...),gr.Checkbox(label="Randomize seed", value=True),gr.Slider(label="Motion bucket id", ...),gr.Slider(label="Frames per second", ...),],outputs=[gr.PlayableVideo(label="Generated video"),gr.Textbox(label="Seed", type="text"),],
)# 启动服务,允许我们来玩
if __name__ == "__main__":app.queue(max_size=2)app.launch(share=False, server_name="0.0.0.0", ssl_verify=False)

准备好程序后,我们将程序放置在目录的根部,然后就可以准备运行开玩了。

├── app.py
├── docker
│   ├── Dockerfile
│   └── Dockerfile.cn
└── models└── stabilityai└── stable-video-diffusion-img2vid-xt

运行模型

因为使用 Docker ,所以运行模型非常简单,只需要执行下面的命令即可:

docker run --rm -it -p 7860:7860 -p 7680:7680 -p 8080:8080 --gpus all --ipc=host --ulimit memlock=-1 -v `pwd`:/app soulteary/svd-runtime python app.py

当命令执行完毕,我们会看到类似下面的日志:

=============
== PyTorch ==
=============NVIDIA Release 23.12 (build 76438008)
PyTorch Version 2.2.0a0+81ea7a4Container image Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.Copyright (c) 2014-2023 Facebook Inc.
Copyright (c) 2011-2014 Idiap Research Institute (Ronan Collobert)
Copyright (c) 2012-2014 Deepmind Technologies    (Koray Kavukcuoglu)
Copyright (c) 2011-2012 NEC Laboratories America (Koray Kavukcuoglu)
Copyright (c) 2011-2013 NYU                      (Clement Farabet)
Copyright (c) 2006-2010 NEC Laboratories America (Ronan Collobert, Leon Bottou, Iain Melvin, Jason Weston)
Copyright (c) 2006      Idiap Research Institute (Samy Bengio)
Copyright (c) 2001-2004 Idiap Research Institute (Ronan Collobert, Samy Bengio, Johnny Mariethoz)
Copyright (c) 2015      Google Inc.
Copyright (c) 2015      Yangqing Jia
Copyright (c) 2013-2016 The Caffe contributors
All rights reserved.Various files include modifications (c) NVIDIA CORPORATION & AFFILIATES.  All rights reserved.This container image and its contents are governed by the NVIDIA Deep Learning Container License.
By pulling and using the container, you accept the terms and conditions of this license:
https://developer.nvidia.com/ngc/nvidia-deep-learning-container-licenseWARNING: CUDA Minor Version Compatibility mode ENABLED.Using driver version 525.147.05 which has support for CUDA 12.0.  This containerwas built with CUDA 12.3 and will be run in Minor Version Compatibility mode.CUDA Forward Compatibility is preferred over Minor Version Compatibility for usewith this container but was unavailable:[[Forward compatibility was attempted on non supported HW (CUDA_ERROR_COMPAT_NOT_SUPPORTED_ON_DEVICE) cuInit()=804]]See https://docs.nvidia.com/deploy/cuda-compatibility/ for details.The cache for model files in Transformers v4.22.0 has been updated. Migrating your old cache. This is a one-time only operation. You can interrupt this and resume the migration later on by calling `transformers.utils.move_cache()`.
0it [00:00, ?it/s]
Loading pipeline components...: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5/5 [00:00<00:00, 12.41it/s]
Running on local URL:  http://0.0.0.0:7860To create a public link, set `share=True` in `launch()`.

然后,我们在浏览器访问容器运行主机的 IP:7860 就可以开始体验和验证 SVD 啦。

浏览器打开默认的应用界面

在我写这篇文章的时候,Chrome 新版本和 Gradio 有一些兼容问题,只能下载视频,而不能在网页中自动播放视频,所以如果你手头有其他的浏览器,可以试试用其他的浏览器来进行 AI 视频的生成。这里我使用的是 Safari。

打开页面之后,我们可以选择一个自己觉得有趣的图片来进行生成,我选择的是一只正在发射中的火箭。这里我推荐将选项中的帧率拉到 25 帧,来获得丝滑到视频结果,以及尽量多的拉高视频的 “motion” 来让视频结果更好。

将图片上传到 WebUI

当我们将图片上传到 WebUI 后,点击 “Submit”,让“火箭发射”。第一次执行的时候,时间会比较久,可能需要花费 1~3 分钟时间,程序会自动加载相关的 SVD、UNET、VAE 模型,然后将我们指定的图片转换为视频。

等待之后,视频生成完毕

等待模型处理完毕后,我们就获得了火箭继续往上飞的视频啦。

在这里插入图片描述

默认情况模型消耗资源

在不经过优化的情况下,我们默认会使用 23G+ 的显存。

如果你希望在小显存的环境下完成视频的推理生成,可以将我提供的项目源代码中的注释根据自己的需求去掉:

# According to your actual needs
#
# pipe.enable_model_cpu_offload()
# pipe.unet.enable_forward_chunking()

当开启 pipe.enable_model_cpu_offload() 后,显存需求能够控制在 8GB 之内,当然,视频的生成时间也会变的非常慢。

实际运行过程中,显卡的基本状态如下:

Every 1.0s: nvidia-smi                                                                                                                         LEGION-REN9000K-34IRZ: Sun Jan  8 14:48:34 2024Sun Jan  8 14:48:34 2024
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.147.05   Driver Version: 525.147.05   CUDA Version: 12.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:01:00.0 Off |                  Off |
| 41%   51C    P2    71W / 450W |  23200MiB / 24564MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------++-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      1497      G   /usr/lib/xorg/Xorg                 75MiB |
|    0   N/A  N/A      1606      G   /usr/bin/gnome-shell               16MiB |
|    0   N/A  N/A      5880      C   python                          23104MiB |
+-----------------------------------------------------------------------------+

最后

这篇文章就先写到这里,在准备分享内容的过程中,我会陆续的再分享一些和 SD 相关的有趣内容,下篇文章再见。

–EOF


我们有一个小小的折腾群,里面聚集了一些喜欢折腾、彼此坦诚相待的小伙伴。

我们在里面会一起聊聊软硬件、HomeLab、编程上、生活里以及职场中的一些问题,偶尔也在群里不定期的分享一些技术资料。

关于交友的标准,请参考下面的文章:

致新朋友:为生活投票,不断寻找更好的朋友

当然,通过下面这篇文章添加好友时,请备注实名和公司或学校、注明来源和目的,珍惜彼此的时间 😄

关于折腾群入群的那些事


本文使用「署名 4.0 国际 (CC BY 4.0)」许可协议,欢迎转载、或重新修改使用,但需要注明来源。 署名 4.0 国际 (CC BY 4.0)

本文作者: 苏洋

创建时间: 2024年01月08日
统计字数: 11829字
阅读时间: 24分钟阅读
本文链接: https://soulteary.com/2024/01/08/stable-video-diffusion-quick-start-with-docker-and-diffusers.html

相关文章:

使用 Docker 和 Diffusers 快速上手 Stable Video Diffusion 图生视频大模型

本篇文章聊聊&#xff0c;如何快速上手 Stable Video Diffusion (SVD) 图生视频大模型。 写在前面 月底计划在机器之心的“AI技术论坛”做关于使用开源模型 “Stable Diffusion 模型” 做有趣视频的实战分享。 因为会议分享时间有限&#xff0c;和之前一样&#xff0c;比较简…...

C++ namespace高级用法

高级用法 C++中的命名空间(namespace)是一种用于组织代码的机制,它可以帮助避免命名冲突,并使代码更加清晰和易于维护。以下是C++命名空间的一些高级用法: 嵌套命名空间:命名空间可以嵌套在其他命名空间中,形成一个层次结构。嵌套命名空间可以进一步细化命名空间,使其更…...

如何允许远程访问 MySQL

前些天发现了一个人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;最重要的屌图甚多&#xff0c;忍不住分享一下给大家。点击跳转到网站。 如何允许远程访问 MySQL 现在许多网站和应用程序一开始的 Web 服务器和数据库后端都托管在同一台计算机上。随着…...

PostgreSQL认证考试PGCA、PGCE、PGCM

PostgreSQL认证考试PGCA、PGCE、PGCM 【重点&#xff01;重点&#xff01;重点&#xff01;】PGCA、PGCE、PGCM 直通车快速下正&#xff0c;省心省力&#xff0c;每2个月一次考试 PGCE考试通知 &#xff08;2024&#xff09; 一、考试概览 &#xff08;一&#xff09; 报名要…...

Matlab深度学习进行波形分割(二)

&#x1f517; 运行环境&#xff1a;Matlab &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 &#x1f510;#### 防伪水印——左手の明天 ####&#x1f510; &#x1f497; 大家…...

Markdown高级用法——mermaid

Markdown高级用法——mermaid 起初是写文章&#xff0c;其中有时序图流程图等一般是processOn或者draw.io画截图粘过去的&#xff0c;工作中又是腾讯文档&#xff0c;上面也能画图&#xff0c;但假如我笔记软件用语雀之类的又要把一张图反复粘贴&#xff0c;浪费内存&#xff…...

cf919Div2C题题目总结

Problem - C - Codeforces 这道题其实是一道数学题。 先看第一个变量&#xff0c;也就是我们要求的答案k的数量&#xff0c;但看k是很好确定它的限制条件的&#xff0c;要想均匀分成k份&#xff0c;n%k必须为0&#xff0c;有了k&#xff0c;我们再来看m&#xff0c;对于a(1)和…...

Pandas实战100例 | 案例 4: 数据选择和索引 - 选择特定的列和行

案例 4: 数据选择和索引 - 选择特定的列和行 知识点讲解 在 Pandas 中&#xff0c;选择数据是一个非常常见的操作。你可以选择特定的列或行&#xff0c;或者基于某些条件筛选数据。 示例代码 选择特定的列 # 选择单列 selected_column df[ColumnName]# 选择多列 selected…...

Netty-Netty实现自己的通信框架

通信框架功能设计 功能描述 通信框架承载了业务内部各模块之间的消息交互和服务调用&#xff0c;它的主要功能如下&#xff1a; 基于 Netty 的 NIO 通信框架&#xff0c;提供高性能的异步通信能力&#xff1b; 提供消息的编解码框架&#xff0c;可以实现 POJO 的序列化和反…...

【算法刷题】总结规律 算法题目第2讲 [234] 回文链表,因为深浅拷贝引出的bug

配合b站视频讲解食用更佳:https://www.bilibili.com/video/BV1vW4y1P7V7 核心提示&#xff1a;好几道题是处理有序数组的&#xff01; 适合人群&#xff1a;考研/复试/面试 解决痛点&#xff1a;1. 刷了就忘 2.换一道相似的题就不会 学完后会输出&#xff1a;对每类题目的框架…...

RabbitMQ如何保证消息不丢失?

RabbitMQ如何保证消息不丢失&#xff1f; 消息丢失的情况 生产者发送消息未到达交换机生产者发送消息未到达队列MQ宕机&#xff0c;消息丢失消费者服务宕机&#xff0c;消息丢失 生产者确认机制 解决的问题&#xff1a;publisher confirm机制来避免消息发送到MQ过程中消失。…...

Random的使用

作用&#xff1a;生成伪随机数 1.导包&#xff1a;import java.util.Random 2.得到随机数对象&#xff1a;Random r new Random(); 3.调用随机数的功能获取随机数&#xff1a; 这里随机生成一个0-9的整数&#xff1a; int number r.nextInt(10); 实现指定区间的随机数&a…...

通过反射修改MultipartFile类文件名

1、背景 项目上有这样一个需求&#xff0c;前端传文件过来&#xff0c;后端接收后按照特定格式对文件进行重命名。(修改文件名需求其实也可以在前端处理的) //接口类似于下面这个样子 PosMapping("/uploadFile") public R uploadFile(List<MultipartFile> fil…...

Macos下修改Python版本

MacOS下修改Python版本 安装 查看本机已安装的Python版本&#xff1a;where python3 ~ where python3 /usr/bin/python3 /usr/local/bin/python3 /Library/Frameworks/Python.framework/Versions/3.12/bin/python3如果没有你想要的版本&#xff0c;去python官网下载安装包。…...

多种采购方式下,数智化招标采购系统建设解决方案

广发证券成立于1991年&#xff0c;是国内首批综合类证券公司&#xff0c;先后于2010年和2015年在深圳证券交易所及香港联合交易所主板上市。 多年来&#xff0c;广发证券在竞争激烈、复杂多变的行业环境中努力开拓、锐意进取&#xff0c;以卓越的经营业绩、持续完善的全面风险…...

Java选择排序

选择排序是一种简单直观的排序算法&#xff0c;其基本思想是每一轮从待排序的元素中选择最小&#xff08;或最大&#xff09;的元素&#xff0c;将其与当前位置的元素交换。选择排序的实现步骤可以简要概括为&#xff1a; 初始化&#xff1a; 遍历整个数组&#xff0c;将当前位…...

[足式机器人]Part3 机构运动学与动力学分析与建模 Ch00-1 坐标系与概念基准

本文仅供学习使用&#xff0c;总结很多本现有讲述运动学或动力学书籍后的总结&#xff0c;从矢量的角度进行分析&#xff0c;方法比较传统&#xff0c;但更易理解&#xff0c;并且现有的看似抽象方法&#xff0c;两者本质上并无不同。 2024年底本人学位论文发表后方可摘抄 若有…...

【金猿人物展】DataPipelineCEO陈诚:赋能数据应用,发挥未来生产力

‍ 陈诚 本文由DataPipelineCEO陈诚撰写并投递参与“数据猿年度金猿策划活动——2023大数据产业年度趋势人物榜单及奖项”评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 我们处在一个“见证奇迹”的时代。在过去的20年间&#xff0c;我们见证了大数据技术快速发展所带…...

4D 毫米波雷达:智驾普及的新路径(二)

4 4D 毫米波的技术路线探讨 4.1 前端收发模块 MMIC&#xff1a;级联、CMOS、AiP 4.1.1 设计&#xff1a;级联、单芯片、虚拟孔径 4D 毫米波雷达的技术路线主要分为三种&#xff0c;分别是多级联、级联 虚拟孔径成像技术、以及 集成芯片。&#xff08; 1 &#xff09;多级…...

element plus自定义组件表单校验

方式一&#xff1a; import { formContextKey, formItemContextKey } from "element-plus";// 获取 el-form 组件上下文 const formContext inject(formContextKey, void 0); // 获取 el-form-item 组件上下文 const formItemContext inject(formItemContextKey, …...

C //练习 4-13 编写一个递归版本的reverse(s)函数,以将字符串s倒置。

C程序设计语言 &#xff08;第二版&#xff09; 练习 4-13 练习 4-13 编写一个递归版本的reverse(s)函数&#xff0c;以将字符串s倒置。 注意&#xff1a;代码在win32控制台运行&#xff0c;在不同的IDE环境下&#xff0c;有部分可能需要变更。 IDE工具&#xff1a;Visual S…...

DNS解析和主从复制

一、DNS名称解析协议 二、DNS正向解析 三、DNS主从复制 主服务器 从服务器...

光猫(无限路由器)插入可移动硬盘搭建简易版的NAS

1.场景分析 最近查询到了许多有关NAS的资料&#xff0c;用来替代百度云盘等确实有很多优势&#xff0c;尤其是具有不限速&#xff08;速度看自己配置&#xff09;、私密性好、一次投入后续只需要电费即可等优势。鉴于手上没有可以用的资源-cpu、机箱、内存等&#xff0c;查询到…...

SpringIOC之support模块GenericGroovyApplicationContext

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…...

Awesome 3D Gaussian Splatting Resources

GitHub - MrNeRF/awesome-3D-gaussian-splatting: Curated list of papers and resources focused on 3D Gaussian Splatting, intended to keep pace with the anticipated surge of research in the coming months. 3D Gaussian Splatting简明教程 - 知乎...

【镜像压缩】linux 上 SD/TF 卡镜像文件压缩到实际大小的简单方法(树莓派、nvidia jetson)

文章目录 1. 备份 SD/TF 卡为镜像文件2. 压缩镜像文件2.1. 多分区镜像文件的压缩&#xff08;树莓派、普通 linux 系统等&#xff09;2.2. 单分区镜像文件的压缩&#xff08;Nvidia Jetson Nano 等&#xff09; 3. 还原镜像文件到 SD/TF 卡4. 镜像还原后处理4.1. 镜像分区调整4…...

Zookeeper 和 naocs的区别

Nacos 和 ZooKeeper 都是服务发现和配置管理的工具&#xff0c;它们的主要区别如下&#xff1a;功能特性&#xff1a;Nacos 比 ZooKeeper 更加强大&#xff0c;Nacos 支持服务发现、动态配置、流量管理、服务治理、分布式事务等功能&#xff0c;而 ZooKeeper 主要用于分布式协调…...

2-6基础算法-快速幂/倍增/构造

文章目录 一.快速幂二.倍增三.构造 一.快速幂 快速幂算法是一种高效计算幂ab的方法&#xff0c;特别是当b非常大时。它基于幂运算的性质&#xff0c;将幂运算分解成一系列的平方操作&#xff0c;以此减少乘法的次数。算法的核心在于将指数b表示为二进制形式&#xff0c;并利用…...

行业内参~移动广告行业大盘趋势-2023年12月

前言 2024年&#xff0c;移动广告的钱越来越难赚了。市场竞争激烈到前所未有的程度&#xff0c;小型企业和独立开发者在巨头的阴影下苦苦挣扎。随着广告成本的上升和点击率的下降&#xff0c;许多原本依赖广告收入的创业者和自由职业者开始感受到前所未有的压力。 &#x1f3…...

【笔记】书生·浦语大模型实战营——第四课(XTuner 大模型单卡低成本微调实战)

【参考&#xff1a;tutorial/xtuner/README.md at main InternLM/tutorial】 【参考&#xff1a;(4)XTuner 大模型单卡低成本微调实战_哔哩哔哩_bilibili-【OpenMMLab】】 总结 学到了 linux系统中 tmux 的使用 了解了 XTuner 大模型微调框架的使用 pth格式参数转Hugging …...