visualnav-transformer

GitHub
1.2k 177 较难 1 次阅读 4天前MIT图像开发框架其他
AI 解读 由 AI 自动生成,仅供参考

visualnav-transformer 是伯克利人工智能研究实验室开源的移动机器人基础模型套件,核心包含 GNM、ViNT 和 NoMaD 三大模型。它旨在解决传统机器人导航策略泛化能力弱、难以跨机型复用的痛点。通过在海量的跨形态机器人数据上进行训练,visualnav-transformer 能够作为通用的“视觉导航大脑”,让机器人在无需额外训练(零样本)的情况下,仅凭摄像头画面即可理解环境并导航至指定目标。

该项目最大的技术亮点在于其强大的迁移能力:不仅支持直接控制多种不同构型的机器人,还允许开发者利用少量新数据进行高效微调,快速适配特定任务或全新硬件。此外,NoMaD 模型创新性地引入了目标掩码扩散策略,显著提升了机器人在复杂未知环境中的探索效率。

visualnav-transformer 主要面向机器人领域的研究人员与开发者。仓库提供了完整的训练脚本、数据处理工具以及在 TurtleBot 等主流平台上的部署示例,帮助用户轻松复现前沿论文成果,或基于此构建自定义的自主导航系统。无论是希望验证新算法的学者,还是致力于开发通用移动机器人的工程师,都能从中获得强有力的支持。

使用场景

某物流仓储团队正试图让一台新采购的轮式机器人,在未经过专门地图构建和长时间训练的仓库环境中,自主导航至指定货架取货。

没有 visualnav-transformer 时

  • 开发周期漫长:工程师必须为这台新机器人采集数千条专属轨迹数据,并从头训练导航策略,耗时数周才能上线。
  • 泛化能力极差:一旦仓库灯光变化或地面材质不同,原本训练好的模型就会失效,需要重新调整参数甚至返工。
  • 多机型适配困难:若后续引入不同底盘结构的机器人,整个感知与控制代码需大幅重构,无法复用已有成果。
  • 零样本任务不可行:机器人完全无法在未见过的新区域直接执行“去某地”的指令,必须先由人工遥控建图。

使用 visualnav-transformer 后

  • 实现零样本部署:利用预训练的 GNM 或 ViNT 模型,机器人无需任何额外训练,即可直接在陌生仓库中理解视觉指令并导航。
  • 跨场景鲁棒性强:得益于多样化的跨机体训练数据,模型能自适应不同的光照、地面纹理及动态障碍物干扰。
  • 高效迁移适配:仅需少量新机器人的演示数据(ROS bag),通过 train.py 脚本微调,即可快速将通用策略迁移到新硬件上。
  • 拓扑地图自动构建:通过 create_topomap.sh 脚本,机器人可基于单次演示轨迹自动生成导航用的拓扑图,大幅降低部署门槛。

visualnav-transformer 将移动机器人的导航开发从“定制化手工打造”转变为“通用模型即插即用”,显著降低了多场景、多机型的落地成本。

运行环境要求

操作系统
  • Linux (Ubuntu 18.04
  • 20.04)
GPU

需要 NVIDIA GPU,支持 CUDA 10+,具体显存大小未说明

内存

未说明

依赖
notes训练和部署均基于 Ubuntu 系统。训练端需安装 conda 环境及 diffusion_policy 包;部署端(如 LoCoBot)需额外安装 ROS Noetic、相关 ROS 包及 kobuki 驱动。代码库组织遵循 GNM 项目结构,支持通过配置文件自定义数据集和模型参数。
python3.7+
conda
torch (隐含)
diffusion_policy
ros-noetic (部署端)
kobuki (部署端)
tmux (推荐)
visualnav-transformer hero image

快速开始

通用导航模型:GNM、ViNT 和 NoMaD

贡献者: Dhruv Shah, Ajay Sridhar, Nitish Dashora, Catherine Glossop, Kyle Stachowicz, Arjun Bhorkar, Kevin Black, Noriaki Hirose, Sergey Levine

伯克利人工智能研究组

项目页面 | 引用 | 预训练模型


通用导航模型是一类通用的目标条件视觉导航策略,它们基于多样化的跨机器人平台训练数据进行训练,能够在零样本条件下控制多种不同的机器人。此外,这些模型还可以高效地进行微调或适配,以应对新的机器人和下游任务。我们的一系列模型已在以下研究论文中有所介绍(且仍在不断扩展):

  1. GNM:一种可驱动任意机器人的通用导航模型(2022年10月,于ICRA 2023会议上发表)
  2. ViNT:用于视觉导航的基础模型(2023年6月,于CoRL 2023会议上发表)
  3. NoMaD:用于导航与探索的目标掩码扩散策略(2023年10月)

概述

本仓库包含使用您自己的数据训练我们系列模型的代码、预训练模型检查点,以及在TurtleBot2/LoCoBot机器人上部署这些模型的示例代码。该仓库的组织结构沿用了GNM的设计。

  • ./train/train.py:用于在您的自定义数据上训练或微调ViNT模型的训练脚本。
  • ./train/vint_train/models/:包含GNM、ViNT及一些基线模型的文件。
  • ./train/process_*.py:用于将rosbag或其他格式的机器人轨迹处理为训练数据的脚本。
  • ./deployment/src/record_bag.sh:用于在目标环境中收集演示轨迹并将其保存为ROS bag文件的脚本。该轨迹会被下采样以生成环境的拓扑图。
  • ./deployment/src/create_topomap.sh:用于将演示轨迹的ROS bag文件转换为机器人可用于导航的拓扑图的脚本。
  • ./deployment/src/navigate.sh:用于在机器人上部署训练好的GNM/ViNT/NoMaD模型,使其根据生成的拓扑图导航到指定目标的脚本。请参阅下方的相关部分以了解配置设置。
  • ./deployment/src/explore.sh:用于在机器人上部署训练好的NoMaD模型,使其随机探索周围环境的脚本。请参阅下方的相关部分以了解配置设置。

训练

此子文件夹包含处理数据集以及使用您自己的数据训练模型的代码。

前置条件

该代码库假设您拥有一台运行Ubuntu系统的工作站(已测试过18.04和20.04版本),Python 3.7及以上版本,以及配备CUDA 10+的GPU。此外,还假设有conda环境,但您可以对其进行修改以适应其他虚拟环境工具或原生安装方式。

设置

请在vint_release/(最顶层)目录下执行以下命令:

  1. 创建conda环境:
    conda env create -f train/train_environment.yml
    
  2. 激活conda环境:
    conda activate vint_train
    
  3. 安装vint_train相关包:
    pip install -e train/
    
  4. 从这个仓库安装diffusion_policy包:
    git clone git@github.com:real-stanford/diffusion_policy.git
    pip install -e diffusion_policy/
    

数据处理

在我们的论文中,我们结合了公开可用和未公开的数据集进行训练。以下是用于训练的公开数据集列表;如需访问未公开的数据,请联系相应作者。

我们建议您下载这些(以及您可能希望用于训练的其他数据集)并按照以下步骤进行数据处理。

数据处理

我们提供了一些示例脚本,用于直接从rosbag或自定义格式(如HDF5)处理这些数据集:

  1. 使用相关参数运行process_bags.py,或运行process_recon.py来处理RECON的HDF5文件。您也可以按照我们下面的结构手动添加自己的数据集(如果您要添加自定义数据集,请参阅自定义数据集部分)。
  2. 在您的数据集文件夹中使用相关参数运行data_split.py

完成第一步数据处理后,处理后的数据集应具有如下结构:

├── <dataset_name>
│   ├── <name_of_traj1>
│   │   ├── 0.jpg
│   │   ├── 1.jpg
│   │   ├── ...
│   │   ├── T_1.jpg
│   │   └── traj_data.pkl
│   ├── <name_of_traj2>
│   │   ├── 0.jpg
│   │   ├── 1.jpg
│   │   ├── ...
│   │   ├── T_2.jpg
│   │   └── traj_data.pkl
│   ...
└── └── <name_of_trajN>
    	├── 0.jpg
    	├── 1.jpg
    	├── ...
        ├── T_N.jpg
        └── traj_data.pkl

每个*.jpg文件都包含机器人前方的RGB观测图像,并按时间顺序进行了标记。traj_data.pkl文件则存储了该轨迹的里程计数据,它是一个包含以下键的pickle字典:

  • "position":一个形状为[T, 2]的np.ndarray,记录了机器人在每张图像观测时刻的xy坐标。
  • "yaw":一个形状为[T,]的np.ndarray,记录了机器人在每张图像观测时刻的偏航角。

完成第二步数据处理后,处理后的数据分割应在vint_release/train/vint_train/data/data_splits/目录下呈现如下结构:

├── <dataset_name>
│   ├── train
|   |   └── traj_names.txt
└── └── test
        └── traj_names.txt 

训练你的通用导航模型

vint_release/train 目录下运行以下命令:

python train.py -c <训练配置文件路径>

预先准备好的配置 YAML 文件位于 train/config 目录中。

自定义配置文件

你可以以其中一个预设的 YAML 文件为起点,根据需要修改其中的参数。config/vint.yaml 是一个不错的选择,因为它包含了注释说明。而 config/defaults.yaml 则包含了默认的配置值(请勿直接使用此配置文件进行训练,因为它未指定任何用于训练的数据集)。

自定义数据集

确保你的数据集和数据划分目录遵循【数据处理】部分中提供的结构。找到 train/vint_train/data/data_config.yaml 文件,并添加以下内容:

<数据集名称>:
    metric_waypoints_distance: <该数据集中航点之间的平均距离(米)>

然后找到你的训练配置文件,在 datasets 参数下添加以下内容(你可以根据需要调整 end_slackgoals_per_obsnegative_mining 的值):

<数据集名称>:
    data_folder: <数据集路径>
    train: data/data_splits/<数据集名称>/train/ 
    test: data/data_splits/<数据集名称>/test/ 
    end_slack: 0 # 从每条轨迹末尾截取的时间步数(以防许多轨迹因碰撞而终止)
    goals_per_obs: 1 # 每次观测采样的目标数量
    negative_mining: True # 来自 ViNG 论文中的负样本挖掘方法(Shah 等人)

从检查点继续训练模型

你也可以不从头开始训练,而是加载已发布的成果中的现有检查点。在 vint_release/train/config/ 目录下的 YAML 配置文件中添加 load_run: <项目名称>/<日志运行名称>。要加载的 .pth 文件应保存在以下目录结构中,并重命名为“latest”:vint_release/train/logs/<项目名称>/<日志运行名称>/latest.pth。这样可以方便地从先前运行的检查点继续训练,因为日志默认就是按这种方式保存的。注意:如果你是从之前的运行中加载检查点,请先在 vint_release/train/logs/<项目名称>/ 中确认运行名称,因为代码会在每个运行的配置 YAML 文件中指定的运行名称后附加日期字符串,以避免运行名称重复。

如果你想使用我们的检查点,可以从这个链接下载 .pth 文件。

部署

本子文件夹包含用于加载预训练的 ViNT 并将其部署到开源 LoCoBot 室内机器人平台上的代码,该平台搭载了 NVIDIA Jetson Orin Nano。该软件可以轻松适配到其他机器人上,研究人员已成功将其独立部署到以下机器人及仿真环境中:Clearpath Jackal、DJI Tello、Unitree A1、TurtleBot2、Vizbot,以及 CARLA 等仿真环境。

LoCoBot 设置

本软件已在运行 Ubuntu 20.04 的 LoCoBot 上进行了测试。

软件安装(按顺序)

  1. ROS:ros-noetic
  2. ROS 软件包:
    sudo apt-get install ros-noetic-usb-cam ros-noetic-joy
    
  3. kobuki
  4. Conda
    • 安装 Anaconda、Miniconda 等工具来管理环境
    • 使用 environment.yml 创建 Conda 环境(在 vint_release/ 目录下执行)
      conda env create -f deployment/deployment_environment.yaml
      
    • 激活环境
      conda activate vint_deployment
      
    • (推荐)将以下内容添加到 ~/.bashrc
      echo “conda activate vint_deployment” >> ~/.bashrc 
      
  5. 安装 vint_train 软件包(在 vint_release/ 目录下执行):
    pip install -e train/
    
  6. 从该 仓库 安装 diffusion_policy 包:
    git clone git@github.com:real-stanford/diffusion_policy.git
    pip install -e diffusion_policy/
    
  7. (推荐)如果尚未安装,可安装 tmux。许多 Bash 脚本依赖 tmux 启动多个终端窗口并分别运行不同命令。这将有助于调试,因为你可以在每个窗口中查看输出。

硬件要求

  • LoCoBot:http://locobot.org(仅导航栈)
  • 广角 RGB 摄像头:示例vint_locobot.launch 文件使用的摄像头参数适用于类似 ELP 广角鱼眼镜头的设备,你可以根据自己的摄像头进行相应调整。请根据你的摄像头情况,在 vint_release/deployment/config/camera.yaml 中调整摄像头参数(用于可视化)。
  • 可与 Linux 兼容的 操纵杆/键盘遥控。将操纵杆上的“死人开关”按键映射添加到 vint_release/deployment/config/joystick.yaml 文件中。常见操纵杆的按键与索引对应关系可在 ROS 维基 中找到。

加载模型权重

将模型权重 .pth 文件保存到 vint_release/deployment/model_weights 文件夹中。我们模型的权重可在此链接获取。

收集拓扑地图

请确保在 vint_release/deployment/src/ 目录下运行这些脚本。

本节介绍一种简单的方法,用于为目标部署环境创建拓扑地图。为简化起见,我们将机器人置于“路径跟踪”模式:即给定环境中的一条轨迹,任务是沿着该轨迹到达目标。环境可能会出现新的或动态变化的障碍物、光照条件变化等情况。

录制 rosbag:

./record_bag.sh <bag_name>

运行此命令以使用操纵杆和摄像头遥控机器人。该命令会打开三个窗口:

  1. roslaunch vint_locobot.launch:此启动文件会启动摄像头的 usb_cam 节点、操纵杆的 joy 节点以及机器人移动基座的相关节点。
  2. python joy_teleop.py:此 Python 脚本会启动一个节点,从 joy 主题读取输入,并将其输出到用于遥控机器人基座的主题上。
  3. rosbag record /usb_cam/image_raw -o <bag_name>:此命令不会立即执行(需要按 Enter 键)。它将在 vint_release/deployment/topomaps/bags 目录中运行,我们建议将 rosbag 文件存储在此目录中。

准备好录制 bag 后,运行 rosbag record 命令,并在希望机器人遵循的地图上遥控机器人。完成路径录制后,终止 rosbag record 命令,然后关闭 tmux 会话。

生成拓扑地图:

./create_topomap.sh <topomap_name> <bag_filename>

此命令会打开 3 个窗口:

  1. roscore
  2. python create_topomap.py —dt 1 —dir <topomap_dir>:此命令会在 /vint_release/deployment/topomaps/images 中创建一个目录,并在播放 bag 的每一秒保存一张图像作为地图中的一个节点。
  3. rosbag play -r 1.5 <bag_filename>:此命令以 5 倍速播放 rosbag,因此 Python 脚本实际上是以 1.5 秒的间隔记录节点。<bag_filename> 应该是包含 .bag 扩展名的完整 bag 文件名。您可以在 make_topomap.sh 文件中更改此值。该命令不会运行,直到您按下 Enter 键,而您应该仅在 Python 脚本发出等待消息后才按下 Enter 键。开始播放 bag 后,请切换到运行 Python 脚本的屏幕,以便在 rosbag 播放结束后终止该脚本。

当 bag 播放结束时,终止 tmux 会话。

运行模型

导航

请确保在 vint_release/deployment/src/ 目录下运行此脚本。

./navigate.sh “--model <model_name> --dir <topomap_dir>”

为了部署已发表结果中的模型,我们发布了模型检查点,您可以从此链接下载。

<model_name>vint_release/deployment/config/models.yaml 文件中模型的名称。在此文件中,您需要为每个模型指定以下参数(默认值):

  • config_path(str):用于训练模型的位于 vint_release/train/config/ 中的 *.yaml 文件路径。
  • ckpt_path(str):位于 vint_release/deployment/model_weights/ 中的 *.pth 文件路径。

请确保这些配置与您训练模型时使用的配置一致。我们提供的权重对应的模型配置已在 yaml 文件中列出,供您参考。

<topomap_dir>vint_release/deployment/topomaps/images 中的目录名称,其中包含与拓扑地图节点相对应的图像。这些图像按名称从 0 到 N 排序。

此命令会打开 4 个窗口:

  1. roslaunch vint_locobot.launch:此启动文件会开启摄像头的 usb_cam 节点、操纵杆的 joy 节点以及机器人移动基座的多个节点。
  2. python navigate.py --model <model_name> -—dir <topomap_dir>:此 Python 脚本会启动一个节点,从 /usb_cam/image_raw 主题读取图像观测,将观测和地图输入模型,并发布动作到 /waypoint 主题。
  3. python joy_teleop.py:此 Python 脚本会启动一个节点,从 joy 主题读取输入,并将其输出到用于遥控机器人基座的主题上。
  4. python pd_controller.py:此 Python 脚本会启动一个节点,从 /waypoint 主题读取消息(来自模型的航路点),并输出速度指令以控制机器人基座的运动。

当机器人完成导航时,终止 pd_controller.py 脚本,然后终止 tmux 会话。如果您想在机器人导航过程中接管控制,可以使用 joy_teleop.py 脚本通过操纵杆进行操作。

探索

请确保在 vint_release/deployment/src/ 目录下运行此脚本。

./exploration.sh “--model <model_name>”

为了部署已发表结果中的模型,我们发布了模型检查点,您可以从此链接下载。

<model_name>vint_release/deployment/config/models.yaml 文件中模型的名称(请注意,只有 NoMaD 可用于探索)。在此文件中,您需要为每个模型指定以下参数(默认值):

  • config_path(str):用于训练模型的位于 vint_release/train/config/ 中的 *.yaml 文件路径。
  • ckpt_path(str):位于 vint_release/deployment/model_weights/ 中的 *.pth 文件路径。

请确保这些配置与您训练模型时使用的配置一致。我们提供的权重对应的模型配置已在 yaml 文件中列出,供您参考。

<topomap_dir>vint_release/deployment/topomaps/images 中的目录名称,其中包含与拓扑地图节点相对应的图像。这些图像按名称从 0 到 N 排序。

此命令会打开 4 个窗口:

  1. roslaunch vint_locobot.launch:此启动文件会开启摄像头的 usb_cam 节点、操纵杆的 joy 节点以及机器人移动基座的多个节点。
  2. python explore.py --model <model_name>:此 Python 脚本会启动一个节点,从 /usb_cam/image_raw 主题读取图像观测,将观测和地图输入模型,并发布探索行动到 /waypoint 主题。
  3. python joy_teleop.py:此 Python 脚本会启动一个节点,从 joy 主题读取输入,并将其输出到用于遥控机器人基座的主题上。
  4. python pd_controller.py:此 Python 脚本会启动一个节点,从 /waypoint 主题读取消息(来自模型的航路点),并输出速度指令以控制机器人基座的运动。

当机器人完成导航时,终止 pd_controller.py 脚本,然后终止 tmux 会话。如果您想在机器人导航过程中接管控制,可以使用 joy_teleop.py 脚本通过操纵杆进行操作。

将此代码适配到不同机器人

我们希望这个代码库足够通用,以便您可以将其部署到您喜爱的基于 ROS 的机器人上。您可以在 vint_release/deployment/config/robot.yaml 中修改机器人配置参数,例如机器人的最大角速度和线速度,以及用于遥控和控制机器人的发布话题。如果您有任何问题或建议,欢迎随时创建 GitHub 问题,或通过 shah@cs.berkeley.edu 联系作者。

引用

@inproceedings{shah2022gnm,
  author    = {Dhruv Shah 和 Ajay Sridhar 和 Arjun Bhorkar 和 Noriaki Hirose 和 Sergey Levine},
  title     = {{GNM:一种可驱动任意机器人的通用导航模型}},
  booktitle = {国际机器人与自动化会议(ICRA)},
  year      = {2023},
  url       = {https://arxiv.org/abs/2210.03370}
}

@inproceedings{shah2023vint,
  title     = {Vi{NT}:视觉导航的基础模型},
  author    = {Dhruv Shah 和 Ajay Sridhar 和 Nitish Dashora 和 Kyle Stachowicz 和 Kevin Black 和 Noriaki Hirose 和 Sergey Levine},
  booktitle = {第七届机器人学习年度会议},
  year      = {2023},
  url       = {https://arxiv.org/abs/2306.14846}
}

@article{sridhar2023nomad,
  author  = {Ajay Sridhar 和 Dhruv Shah 和 Catherine Glossop 和 Sergey Levine},
  title   = {{NoMaD:用于导航与探索的目标掩码扩散策略}},
  journal = {arXiv 预印本},
  year    = {2023},
  url     = {https://arxiv.org/abs/2310.xxxx}
}

版本历史

code_release2023/10/06

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|今天
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|昨天
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

141.5k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.9k|★★☆☆☆|今天
开发框架图像Agent

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|今天
插件开发框架

LLMs-from-scratch

LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备

90.1k|★★★☆☆|今天
语言模型图像Agent