DUSt3R:简化几何3D视觉
的官方实现
[项目页面], [DUSt3R arxiv]
请务必查看MASt3R:我们的新模型具有局部特征头、度量点图和更可扩展的全局对齐!
@inproceedings{dust3r_cvpr24, title={DUSt3R: Geometric 3D Vision Made Easy}, author={Shuzhe Wang and Vincent Leroy and Yohann Cabon and Boris Chidlovskii and Jerome Revaud}, booktitle = {CVPR}, year = {2024} } @misc{dust3r_arxiv23, title={DUSt3R: Geometric 3D Vision Made Easy}, author={Shuzhe Wang and Vincent Leroy and Yohann Cabon and Boris Chidlovskii and Jerome Revaud}, year={2023}, eprint={2312.14132}, archivePrefix={arXiv}, primaryClass={cs.CV} }
该代码根据CC BY-NC-SA 4.0许可证分发。 有关更多信息,请参阅LICENSE。
# Copyright (C) 2024-present Naver Corporation. All rights reserved. # Licensed under CC BY-NC-SA 4.0 (non-commercial use only).
git clone --recursive https://github.com/naver/dust3r cd dust3r # 如果你已经克隆了dust3r: # git submodule update --init --recursive
conda create -n dust3r python=3.11 cmake=3.14.0 conda activate dust3r conda install pytorch torchvision pytorch-cuda=12.1 -c pytorch -c nvidia # 为你的系统使用正确版本的cuda pip install -r requirements.txt # 可选:你还可以安装额外的包来: # - 添加对HEIC图像的支持 # - 添加pyrender,用于渲染某些数据集预处理中的深度图 # - 添加visloc.py所需的包 pip install -r requirements_optional.txt
# DUST3R依赖RoPE位置嵌入,你可以为此编译一些cuda内核以提高 运行速度。 cd croco/models/curope/ python setup.py build_ext --inplace cd ../../../
你可以通过两种方式获取检查点:
你可以使用我们的huggingface_hub集成:模型将自动下载。
否则,我们提供了几个预训练模型:
模型名称 | 训练分辨率 | 头部 | 编码器 | 解码器 |
---|---|---|---|---|
DUSt3R_ViTLarge_BaseDecoder_224_linear.pth | 224x224 | 线性 | ViT-L | ViT-B |
DUSt3R_ViTLarge_BaseDecoder_512_linear.pth | 512x384, 512x336, 512x288, 512x256, 512x160 | 线性 | ViT-L | ViT-B |
DUSt3R_ViTLarge_BaseDecoder_512_dpt.pth | 512x384, 512x336, 512x288, 512x256, 512x160 | DPT | ViT-L | ViT-B |
你可以在部分:我们的超参数中查看我们用于训练这些模型的超参数
要下载特定模型,例如DUSt3R_ViTLarge_BaseDecoder_512_dpt.pth
:
mkdir -p checkpoints/ wget https://download.europe.naverlabs.com/ComputerVision/DUSt3R/DUSt3R_ViTLarge_BaseDecoder_512_dpt.pth -P checkpoints/
对于检查点,请确保同意我们使用的所有公共训练数据集和基础检查点的许可协议,以及CC-BY-NC-SA 4.0。再次说明,有关详细信息,请参见部分:我们的超参数。
在这个演示中,你应该能够在你的机器上运行DUSt3R来重建场景。 首先选择描述同一场景的图像。
你可以调整全局对齐计划及其迭代次数。
[!注意] 如果你选择了一张或两张图像,全局对齐程序将被跳过(模式=GlobalAlignerMode.PairViewer)
点击"运行"并等待。 当全局对齐结束时,重建结果会出现。 使用滑块"min_conf_thr"来显示或移除低置信度区域。
python3 demo.py --model_name DUSt3R_ViTLarge_BaseDecoder_512_dpt # 使用--weights从本地文件加载检查点,例如 --weights checkpoints/DUSt3R_ViTLarge_BaseDecoder_512_dpt.pth # 使用--image_size为所选检查点选择正确的分辨率。512(默认)或224 # 使用--local_network使其在本地网络上可访问,或使用--server_name手动指定url # 使用--server_port更改端口,默认情况下它将从7860开始搜索可用端口 # 使用--device使用不同的设备,默认为"cuda"
要使用Docker运行DUSt3R(包括NVIDIA CUDA支持),请按照以下说明操作:
安装Docker:如果尚未安装,请从Docker网站下载并安装docker
和docker compose
。
安装NVIDIA Docker工具包:为了支持GPU,请从Nvidia网站安装NVIDIA Docker工具包。
构建Docker镜像并运行:进入./docker
目录并运行以下命令:
cd docker bash run.sh --with-cuda --model_name="DUSt3R_ViTLarge_BaseDecoder_512_dpt"
或者如果你想在没有CUDA支持的情况下运行演示,运行以下命令:
cd docker bash run.sh --model_name="DUSt3R_ViTLarge_BaseDecoder_512_dpt"
默认情况下,demo.py
以--local_network
选项启动。
访问http://localhost:7860/
以访问Web UI(或用机器名替换localhost
以从网络访问)。
run.sh
将使用docker-compose-cuda.yml或docker-compose-cpu.yml配置文件启动docker-compose,然后使用entrypoint.sh启动演示。
from dust3r.inference import inference from dust3r.model import AsymmetricCroCo3DStereo from dust3r.utils.image import load_images from dust3r.image_pairs import make_pairs from dust3r.cloud_opt import global_aligner, GlobalAlignerMode if __name__ == '__main__': device = 'cuda' batch_size = 1 schedule = 'cosine' lr = 0.01 niter = 300 model_name = "naver/DUSt3R_ViTLarge_BaseDecoder_512_dpt" # 如果需要,你可以在model_name中放置本地检查点的路径 model = AsymmetricCroCo3DStereo.from_pretrained(model_name).to(device) # load_images可以接受图像列表或目录 images = load_images(['croco/assets/Chateau1.png', 'croco/assets/Chateau2.png'], size=512) pairs = make_pairs(images, scene_graph='complete', prefilter=None, symmetrize=True) output = inference(pairs, model, device, batch_size=batch_size) # 在这个阶段,你已经得到了原始的dust3r预测结果 view1, pred1 = output['view1'], output['pred1'] view2, pred2 = output['view2'], output['pred2'] # 这里,view1、pred1、view2、pred2是长度为2的列表字典 # -> 因为我们对称化了(im1, im2)和(im2, im1)对 # 在每个视图中你有: # 一个整数图像标识符: view1['idx'] 和 view2['idx'] # 图像: view1['img'] 和 view2['img'] # 图像形状: view1['true_shape'] 和 view2['true_shape'] # 数据加载器输出的实例字符串: view1['instance'] 和 view2['instance'] # pred1 和 pred2 包含置信度值: pred1['conf'] 和 pred2['conf'] # pred1 包含 view1['img'] 空间中 view1['img'] 的3D点: pred1['pts3d'] # pred2 包含 view1['img'] 空间中 view2['img'] 的3D点: pred2['pts3d_in_other_view'] # 接下来我们将使用global_aligner来对齐预测结果 # 根据你的任务,你可能对原始输出就满意了,不需要这一步 # 只有两个输入图像时,你可以使用GlobalAlignerMode.PairViewer: 它只会转换输出 # 如果使用GlobalAlignerMode.PairViewer,不需要运行compute_global_alignment scene = global_aligner(output, device=device, mode=GlobalAlignerMode.PointCloudOptimizer) loss = scene.compute_global_alignment(init="mst", niter=niter, schedule=schedule, lr=lr) # 从场景中检索有用的值: imgs = scene.imgs focals = scene.get_focals() poses = scene.get_im_poses() pts3d = scene.get_pts3d() confidence_masks = scene.get_masks() # 可视化重建结果 scene.show() # 在两张图像之间找到2D-2D匹配 from dust3r.utils.geometry import find_reciprocal_matches, xy_grid pts2d_list, pts3d_list = [], [] for i in range(2): conf_i = confidence_masks[i].cpu().numpy() pts2d_list.append(xy_grid(*imgs[i].shape[:2][::-1])[conf_i]) # imgs[i].shape[:2] = (H, W) pts3d_list.append(pts3d[i].detach().cpu().numpy()[conf_i]) reciprocal_in_P2, nn2_in_P1, num_matches = find_reciprocal_matches(*pts3d_list) print(f'找到 {num_matches} 个匹配') matches_im1 = pts2d_list[1][reciprocal_in_P2] matches_im0 = pts2d_list[0][nn2_in_P1][reciprocal_in_P2] # 可视化几个匹配 import numpy as np from matplotlib import pyplot as pl n_viz = 10 match_idx_to_viz = np.round(np.linspace(0, num_matches-1, n_viz)).astype(int) viz_matches_im0, viz_matches_im1 = matches_im0[match_idx_to_viz], matches_im1[match_idx_to_viz] H0, W0, H1, W1 = *imgs[0].shape[:2], *imgs[1].shape[:2] img0 = np.pad(imgs[0], ((0, max(H1 - H0, 0)), (0, 0), (0, 0)), 'constant', constant_values=0) img1 = np.pad(imgs[1], ((0, max(H0 - H1, 0)), (0, 0), (0, 0)), 'constant', constant_values=0) img = np.concatenate((img0, img1), axis=1) pl.figure() pl.imshow(img) cmap = pl.get_cmap('jet') for i in range(n_viz): (x0, y0), (x1, y1) = viz_matches_im0[i].T, viz_matches_im1[i].T pl.plot([x0, x1 + W0], [y0, y1], '-+', color=cmap(i / (n_viz - 1)), scalex=False, scaley=False) pl.show(block=True)
在本节中,我们将展示一个简短的演示,以开始训练DUSt3R。
目前,我们添加了以下训练数据集:
对于每个数据集,我们在datasets_preprocess
目录中提供了一个预处理脚本,并在需要时提供了包含图像对列表的压缩包。
你需要自行从官方源下载数据集,同意其许可协议,下载我 们的图像对列表,并运行预处理脚本。
链接:
ARKitScenes图像对
ScanNet++图像对
BlendedMVS图像对
WayMo开放数据集图像对
Habitat元数据
MegaDepth图像对
StaticThings3D图像对
[!注意] 它们与用于训练DUSt3R的内容并不完全相同,但应该足够接近。
对于这个训练演示,我们将下载并准备CO3Dv2的一个子集 - 知识共享署名-非商业性使用 4.0 国际许可协议,并在其上启动训练代码。 演示模型将在一个非常小的数据集上训练几个epoch。 它的效果不会很好。
# 下载并准备co3d子集 mkdir -p data/co3d_subset cd data/co3d_subset git clone https://github.com/facebookresearch/co3d cd co3d python3 ./co3d/download_dataset.py --download_folder ../ --single_sequence_subset rm ../*.zip cd ../../.. python3 datasets_preprocess/preprocess_co3d.py --co3d_dir data/co3d_subset --output_dir data/co3d_subset_processed --single_sequence_subset # 下载预训练的croco v2检查点 mkdir -p checkpoints/ wget https://download.europe.naverlabs.com/ComputerVision/CroCo/CroCo_V2_ViTLarge_BaseDecoder.pth -P checkpoints/ # dust3r的训练分为3个步骤。 # 在这个示例中,我们会减少训练轮数。关于我们在论文中使用的实际超参数,请参见下一节:"我们的超参数" # 步骤1 - 训练224分辨率的dust3r torchrun --nproc_per_node=4 train.py \ --train_dataset "1000 @ Co3d(split='train', ROOT='data/co3d_subset_processed', aug_crop=16, mask_bg='rand', resolution=224, transform=ColorJitter)" \ --test_dataset "100 @ Co3d(split='test', ROOT='data/co3d_subset_processed', resolution=224, seed=777)" \ --model "AsymmetricCroCo3DStereo(pos_embed='RoPE100', img_size=(224, 224), head_type='linear', output_mode='pts3d', depth_mode=('exp', -inf, inf), conf_mode=('exp', 1, inf), enc_embed_dim=1024, enc_depth=24, enc_num_heads=16, dec_embed_dim=768, dec_depth=12, dec_num_heads=12)" \ --train_criterion "ConfLoss(Regr3D(L21, norm_mode='avg_dis'), alpha=0.2)" \ --test_criterion "Regr3D_ScaleShiftInv(L21, gt_scale=True)" \ --pretrained "checkpoints/CroCo_V2_ViTLarge_BaseDecoder.pth" \ --lr 0.0001 --min_lr 1e-06 --warmup_epochs 1 --epochs 10 --batch_size 16 --accum_iter 1 \ --save_freq 1 --keep_freq 5 --eval_freq 1 \ --output_dir "checkpoints/dust3r_demo_224" # 步骤2 - 训练512分辨率的dust3r torchrun --nproc_per_node=4 train.py \ --train_dataset "1000 @ Co3d(split='train', ROOT='data/co3d_subset_processed', aug_crop=16, mask_bg='rand', resolution=[(512, 384), (512, 336), (512, 288), (512, 256), (512, 160)], transform=ColorJitter)" \ --test_dataset "100 @ Co3d(split='test', ROOT='data/co3d_subset_processed', resolution=(512,384), seed=777)" \ --model "AsymmetricCroCo3DStereo(pos_embed='RoPE100', patch_embed_cls='ManyAR_PatchEmbed', img_size=(512, 512), head_type='linear', output_mode='pts3d', depth_mode=('exp', -inf, inf), conf_mode=('exp', 1, inf), enc_embed_dim=1024, enc_depth=24, enc_num_heads=16, dec_embed_dim=768, dec_depth=12, dec_num_heads=12)" \ --train_criterion "ConfLoss(Regr3D(L21, norm_mode='avg_dis'), alpha=0.2)" \ --test_criterion "Regr3D_ScaleShiftInv(L21, gt_scale=True)" \ --pretrained "checkpoints/dust3r_demo_224/checkpoint-best.pth" \ --lr 0.0001 --min_lr 1e-06 --warmup_epochs 1 --epochs 10 --batch_size 4 --accum_iter 4 \ --save_freq 1 --keep_freq 5 --eval_freq 1 \ --output_dir "checkpoints/dust3r_demo_512" # 步骤3 - 使用dpt训练512分辨率的dust3r torchrun --nproc_per_node=4 train.py \ --train_dataset "1000 @ Co3d(split='train', ROOT='data/co3d_subset_processed', aug_crop=16, mask_bg='rand', resolution=[(512, 384), (512, 336), (512, 288), (512, 256), (512, 160)], transform=ColorJitter)" \ --test_dataset "100 @ Co3d(split='test', ROOT='data/co3d_subset_processed', resolution=(512,384), seed=777)" \ --model "AsymmetricCroCo3DStereo(pos_embed='RoPE100', patch_embed_cls='ManyAR_PatchEmbed', img_size=(512, 512), head_type='dpt', output_mode='pts3d', depth_mode=('exp', -inf, inf), conf_mode=('exp', 1, inf), enc_embed_dim=1024, enc_depth=24, enc_num_heads=16, dec_embed_dim=768, dec_depth=12, dec_num_heads=12)" \ --train_criterion "ConfLoss(Regr3D(L21, norm_mode='avg_dis'), alpha=0.2)" \ --test_criterion "Regr3D_ScaleShiftInv(L21, gt_scale=True)" \ --pretrained "checkpoints/dust3r_demo_512/checkpoint-best.pth" \ --lr 0.0001 --min_lr 1e-06 --warmup_epochs 1 --epochs 10 --batch_size 2 --accum_iter 8 \ --save_freq 1 --keep_freq 5 --eval_freq 1 --disable_cudnn_benchmark \ --output_dir "checkpoints/dust3r_demo_512dpt"
以下是我们用于训练模型的命令:
# 注意:数据集的ROOT路径已省略 # 224 线性模型 torchrun --nproc_per_node 8 train.py \ --train_dataset=" + 100_000 @ Habitat(1_000_000, split='train', aug_crop=16, resolution=224, transform=ColorJitter) + 100_000 @ BlendedMVS(split='train', aug_crop=16, resolution=224, transform=ColorJitter) + 100_000 @ MegaDepth(split='train', aug_crop=16, resolution=224, transform=ColorJitter) + 100_000 @ ARKitScenes(aug_crop=256, resolution=224, transform=ColorJitter) + 100_000 @ Co3d(split='train', aug_crop=16, mask_bg='rand', resolution=224, transform=ColorJitter) + 100_000 @ StaticThings3D(aug_crop=256, mask_bg='rand', resolution=224, transform=ColorJitter) + 100_000 @ ScanNetpp(split='train', aug_crop=256, resolution=224, transform=ColorJitter) + 100_000 @ InternalUnreleasedDataset(aug_crop=128, resolution=224, transform=ColorJitter) " \ --test_dataset=" Habitat(1_000, split='val', resolution=224, seed=777) + 1_000 @ BlendedMVS(split='val', resolution=224, seed=777) + 1_000 @ MegaDepth(split='val', resolution=224, seed=777) + 1_000 @ Co3d(split='test', mask_bg='rand', resolution=224, seed=777) " \ --train_criterion="ConfLoss(Regr3D(L21, norm_mode='avg_dis'), alpha=0.2)" \ --test_criterion="Regr3D_ScaleShiftInv(L21, gt_scale=True)" \ --model="AsymmetricCroCo3DStereo(pos_embed='RoPE100', img_size=(224, 224), head_type='linear', output_mode='pts3d', depth_mode=('exp', -inf, inf), conf_mode=('exp', 1, inf), enc_embed_dim=1024, enc_depth=24, enc_num_heads=16, dec_embed_dim=768, dec_depth=12, dec_num_heads=12)" \ --pretrained="checkpoints/CroCo_V2_ViTLarge_BaseDecoder.pth" \ --lr=0.0001 --min_lr=1e-06 --warmup_epochs=10 --epochs=100 --batch_size=16 --accum_iter=1 \ --save_freq=5 --keep_freq=10 --eval_freq=1 \ --output_dir="checkpoints/dust3r_224" # 512 线性 torchrun --nproc_per_node 8 train.py \ --train_dataset=" + 10_000 @ Habitat(1_000_000, 分割='训练', 增强裁剪=16, 分辨率=[(512, 384), (512, 336), (512, 288), (512, 256), (512, 160)], 转换=颜色抖动) + 10_000 @ BlendedMVS(分割='训练', 增强裁剪=16, 分辨率=[(512, 384), (512, 336), (512, 288), (512, 256), (512, 160)], 转换=颜色抖动) + 10_000 @ MegaDepth(分割='训练', 增强裁剪=16, 分辨率=[(512, 384), (512, 336), (512, 288), (512, 256), (512, 160)], 转换=颜色抖动) + 10_000 @ ARKitScenes(增强裁剪=256, 分辨率=[(512, 384), (512, 336), (512, 288), (512, 256), (512, 160)], 转换=颜色抖动) + 10_000 @ Co3d(分割='训练', 增强裁剪=16, 背景遮罩='随机', 分辨率=[(512, 384), (512, 336), (512, 288), (512, 256), (512, 160)], 转换=颜色抖动) + 10_000 @ StaticThings3D(增强裁剪=256, 背景遮罩='随机', 分辨率=[(512, 384), (512, 336), (512, 288), (512, 256), (512, 160)], 转换=颜色抖动) + 10_000 @ ScanNetpp(分割='训练', 增强裁剪=256, 分辨率=[(512, 384), (512, 336), (512, 288), (512, 256), (512, 160)], 转换=颜色抖动) + 10_000 @ 内部未发布数据集(增强裁剪=128, 分辨率=[(512, 384), (512, 336), (512, 288), (512, 256), (512, 160)], 转换=颜色抖动) " \ --test_dataset=" Habitat(1_000, 分割='验证', 分辨率=(512,384), 随机种子=777) + 1_000 @ BlendedMVS(分割='验证', 分辨率=(512,384), 随机种子=777) + 1_000 @ MegaDepth(分割='验证', 分辨率=(512,336), 随机种子=777) + 1_000 @ Co3d(分割='测试', 分辨率=(512,384), 随机种子=777) " \ --train_criterion="置信度损失(三维回归(L21, 归一化模式='平均距离'), alpha=0.2)" \ --test_criterion="三维回归_尺度平移不变(L21, 真实尺度=True)" \ --model="非对称CroCo3D立体视觉(位置嵌入='RoPE100', 图像块嵌入类='多AR_图像块嵌入', 图像尺寸=(512, 512), 头部类型='线性', 输出模式='3D点', 深度模式=('指数', -inf, inf), 置信度模式=('指数', 1, inf), 编码器嵌入维度=1024, 编码器深度=24, 编码器头数=16, 解码器嵌入维度=768, 解码器深度=12, 解码器头数=12)" \ --pretrained="检查点/dust3r_224/最佳检查点.pth" \ --lr=0.0001 --min_lr=1e-06 --warmup_epochs=20 --epochs=100 --batch_size=4 --accum_iter=2 \ --save_freq=10 --keep_freq=10 --eval_freq=1 --print_freq=10 \ --output_dir="检查点/dust3r_512" # 512 dpt torchrun --nproc_per_node 8 train.py \ --train_dataset=" + 10_000 @ Habitat(1_000_000, 分割='训练', 增强裁剪=16, 分辨率=[(512, 384), (512, 336), (512, 288), (512, 256), (512, 160)], 转换=颜色抖动) + 10_000 @ BlendedMVS(分割='训练', 增强裁剪=16, 分辨率=[(512, 384), (512, 336), (512, 288), (512, 256), (512, 160)], 转换=颜色抖动) + 10_000 @ MegaDepth(分割='训练', 增强裁剪=16, 分辨率=[(512, 384), (512, 336), (512, 288), (512, 256), (512, 160)], 转换=颜色抖动) + 10_000 @ ARKitScenes(增强裁剪=256, 分辨率=[(512, 384), (512, 336), (512, 288), (512, 256), (512, 160)], 转换=颜色抖动) + 10_000 @ Co3d(分割='训练', 增强裁剪=16, 背景遮罩='随机', 分辨率=[(512, 384), (512, 336), (512, 288), (512, 256), (512, 160)], 转换=颜色抖动) + 10_000 @ StaticThings3D(增强裁剪=256, 背景遮罩='随机', 分辨率=[(512, 384), (512, 336), (512, 288), (512, 256), (512, 160)], 转换=颜色抖动) + 10_000 @ ScanNetpp(分割='训练', 增强裁剪=256, 分辨率=[(512, 384), (512, 336), (512, 288), (512, 256), (512, 160)], 转换=颜色抖动) + 10_000 @ 内部未发布数据集(增强裁剪=128, 分辨率=[(512, 384), (512, 336), (512, 288), (512, 256), (512, 160)], 转换=颜色抖动) " \ --test_dataset=" Habitat(1_000, 分割='验证', 分辨率=(512,384), 随机种子=777) + 1_000 @ BlendedMVS(分割='验证', 分辨率=(512,384), 随机种子=777) + 1_000 @ MegaDepth(分割='验证', 分辨率=(512,336), 随机种子=777) + 1_000 @ Co3d(分割='测试', 分辨率=(512,384), 随机种子=777) " \ --train_criterion="置信度损失(三维回归(L21, 归一化模式='平均距离'), alpha=0.2)" \ --test_criterion="三维回归_尺度平移不变(L21, 真实尺度=True)" \ --model="非对称CroCo3D立体视觉(位置嵌入='RoPE100', 图像块嵌入类='多AR_图像块嵌入', 图像尺寸=(512, 512), 头部类型='dpt', 输出模式='3D点', 深度模式=('指数', -inf, inf), 置信度模式=('指数', 1, inf), 编码器嵌入维度=1024, 编码器深度=24, 编码器头数=16, 解码器嵌入维度=768, 解码器深度=12, 解码器头数=12)" \ --pretrained="检查点/dust3r_512/最佳检查点.pth" \ --lr=0.0001 --min_lr=1e-06 --warmup_epochs=15 --epochs=90 --batch_size=4 --accum_iter=2 \ --save_freq=5 --keep_freq=10 --eval_freq=1 --print_freq=10 --disable_cudnn_benchmark \ --output_dir="检查点/dust3r_512dpt"
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
字节跳动发布的AI编程神器IDE
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
AI助力,做PPT更简单!
咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。
选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒 体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。
OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。
openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。
高分辨率纹理 3D 资产生成
Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。
一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。
3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号