【免费下载链接】map-anything-apache-fp16
map-anything-apache-fp16 是 Meta 团队 MapAnything 3D 重建模型的 float16 精度 MLX 移植版,可在 Apple Silicon 上用 1~32 张图片单次前向重建米制 3D 场景。本文给出完整基准测试报告:精度与 float32 参考实现几乎持平,而完整推理速度在 16~32 视图下达到 PyTorch(MPS 后端)的约 4 倍。
📦 先搞懂:这个仓库是什么
MapAnything(Meta 与 CMU,3DV 2026)是一个前馈式米制 3D 重建模型:给定一张或多张图片,加任意可选的内参、深度图与相机位姿,单次前向即可预测每个视图的米制 3D 点图、深度、射线方向、相机位姿、内参、置信度图与有效像素掩码。
map-anything-apache-fp16 是它的非官方 MLX 衍生仓库,只存放权重与元数据(推理代码在 mlx-vlm 中)。仓库文件一览:
- model.safetensors:2.65 GB 权重,约为 float32 原版的 1/2
- 11.3 亿 float16 参数:DINOv2 ViT-g/14 编码器(前 24 层)与 16 层多视图 Transformer 的线性层;
- 9500 万 float32 参数:patch embedding、归一化、位置编码、几何输入编码器,以及 DPT、位姿与尺度预测头;
- config.json:完整模型配置(
model_type: mapanything,含dinov2_giant编码器与 16 层交替注意力 Transformer); - preprocessor_config.json:预处理配置,
fixed_mapping固定映射到 518 分辨率; - LICENSE:Apache License 2.0,与原版一致。
🎯 精度基准:和 float32 PyTorch 参考实现差多少
测试条件:一段户外视频的 4 帧(518×294),并设置MLX_ENABLE_TF32=0关闭 TF32 近似。
| 指标 | 本模型(fp16, MLX) | 参考实现(PyTorch MPS 混合精度) |
|---|---|---|
| 深度中位相对误差(尺度归一化后) | 6.0e-4 | 5.7e-4 |
| 米制尺度误差 | 1.1e-4 | 3.0e-4 |
结论很关键:float16 版的精度与参考实现自身的 MPS 混合精度处于同一水平;若换用 float32 权重,MLX 移植版与参考实现在所有输出上的差距可压到 ~1e-6。
💡 官方另有 CC BY-NC 4.0 授权版本
mlx-community/map-anything-fp16(同一 4 帧上误差仅 6.6e-5,精度更高,仅限非商业使用),对精度更敏感的场景可以选择它。
🚀 速度基准:完整 infer 对比 PyTorch MPS
测试平台为 Apple M5 Max,图像 518×294,计时覆盖完整infer(网络 + 后处理)。官方说明测试期间有另一个 GPU 程序在运行,因此以下数值应作相对参考:
| 视图数 | MLX(本模型) | PyTorch MPS(混合精度) | 相对加速 |
|---|---|---|---|
| 1 | 0.06 s | 0.13 s | ≈2.2× |
| 4 | 0.23 s | 0.47 s | ≈2.0× |
| 8 | 0.48 s | 1.73 s | ≈3.6× |
| 16 | 1.10 s | 5.27 s | ≈4.8× |
| 32 | 2.89 s | 11.3 s | ≈3.9× |
规律很明显:视图数越多,MLX 的优势越接近“4 倍”。单图延迟差距约 2 倍,真正的收益在多视图场景——而这正是 3D 重建的典型用法(拍一圈房间、扫一个物体)。
⚙️ 为什么 MLX 版这么快
- 混合精度策略:编码器与 Transformer 的矩阵乘和注意力跑在 float16,残差流、归一化和激活保持 float32,这是 MLX 在 Apple GPU 上的推荐组合;
- 统一内存架构:MLX 直接运行在 Apple Silicon 统一内存上,模型加载与多视图批量推理都省掉显存搬运开销;
- 权重减半:fp16 权重仅 2.65 GB,读取带宽压力约为 float32 版的一半。
🛠 最快上手方法:一条命令跑起来
需要包含mapanything模型的 mlx-vlm 版本(0.7.4 之后新增)。命令行方式会写出predictions.npz和彩色点云points.ply:
MLX_ENABLE_TF32=0 python -m mlx_vlm.models.mapanything.generate \ --model mlx-community/map-anything-apache-fp16 --images path/to/images --output out⚠️
MLX_ENABLE_TF32=0很关键:在 Apple M5 及以后的 GPU 上,MLX 默认以 TF32 精度执行 float32 矩阵乘,会让 float32 预测头成为最大误差来源。提前设置该环境变量即可避免,仅多花几毫秒。
Python 中也可直接加载:
import mlx.core as mx from mlx_vlm import load model, processor = load("mlx-community/map-anything-apache-fp16") views = processor.load_images("path/to/images") # 文件夹或图片列表 predictions = mx.eval(model.infer(views))每个视图的返回值包含pts3d(米制 3D 点图)、depth_z(深度)、camera_poses(OpenCV cam2world 位姿)、intrinsics(内参)、conf(置信度)和mask(有效像素)。任意视图还可额外提供内参、深度图或相机位姿作为输入,组合方式非常灵活。
❓ 新手常见疑问
- 这个模型能做什么?从图片重建真实尺寸的 3D 场景(点云/深度/相机位姿),支持单图到 32 图多视图。
- 精度够用吗?一般重建任务下 6.0e-4 的深度误差与参考实现混合精度同档;要求更高就用 float32 权重或 CC BY-NC 版。
- 为什么半精度结果和 PyTorch 略有差异?半精度量化与平台算子差异叠加。本 Apache 权重的半精度敏感度高于 CC BY-NC 版(后者同帧误差 6.6e-5)。
- 能商用吗?本仓库权重为 Apache 2.0,可自由商用;官方推荐的 CC BY-NC 版仅限非商业使用。
📌 结论
- 精度:float16 版与 float32 PyTorch 参考实现的差距可忽略,与参考实现自身在 MPS 上的混合精度持平;
- 速度:16~32 视图下比 PyTorch MPS 快约 4 倍,单图约 2 倍;
- 适合人群:用 Apple Silicon 做多视图 3D 重建、深度估计或相机位姿估计,又想省一半显存并显著提速的用户,直接选 map-anything-apache-fp16。
完整测试数据、输入输出说明与引用信息见 README.md。
【免费下载链接】map-anything-apache-fp16
相关推荐
最完整IndexTTS2模型精度对比:FP32/FP16/BF16推理质量测试报告
最完整IndexTTS2模型精度对比:FP32/FP16/BF16推理质量测试报告 读完你能得到 三种精度(FP32/FP16/BF16)在IndexTTS2上
人工智能语音音频大模型比PyTorch快近5倍?map-anything-fp16在Apple M5 Max上的实测性能与TF32隐藏陷阱
比PyTorch快近5倍?map anything fp16在Apple M5 Max上的实测性能与TF32隐藏陷阱 map anything fp16 是 M
如何彻底掌控你的微信聊天记录:WeChatMsg免费工具终极指南
如何彻底掌控你的微信聊天记录:WeChatMsg免费工具终极指南 你是否曾担心重要的微信聊天记录会随着手机更换而消失?那些珍贵的对话、工作沟通、生活点滴,是否应
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考