🚀 深度估计模型适配 Transformers.js
本项目将苹果的 apple/DepthPro
模型的 ONNX 权重适配到 Transformers.js
库,用于深度估计任务。通过本项目,你可以方便地在 JavaScript 环境中使用该模型进行深度图预测。
🚀 快速开始
你可以按照以下步骤在项目中使用这个适配的深度估计模型。
📦 安装指南
如果你还没有安装 Transformers.js
JavaScript 库,可以使用以下命令从 NPM 进行安装:
npm i @huggingface/transformers
💻 使用示例
基础用法
以下是一个完整的代码示例,展示了如何使用 Transformers.js
加载模型、处理图像并进行深度估计,最后保存生成的深度图:
import { AutoProcessor, AutoModelForDepthEstimation, RawImage } from "@huggingface/transformers";
const depth = await AutoModelForDepthEstimation.from_pretrained("onnx-community/DepthPro-ONNX", { dtype: "q4" });
const processor = await AutoProcessor.from_pretrained("onnx-community/DepthPro-ONNX");
const image = await RawImage.read("https://raw.githubusercontent.com/huggingface/transformers.js-examples/main/depth-pro-node/assets/image.jpg");
const inputs = await processor(image);
const { predicted_depth, focallength_px } = await depth(inputs);
const depth_map_data = predicted_depth.data;
let minDepth = Infinity;
let maxDepth = -Infinity;
for (let i = 0; i < depth_map_data.length; ++i) {
minDepth = Math.min(minDepth, depth_map_data[i]);
maxDepth = Math.max(maxDepth, depth_map_data[i]);
}
const depth_tensor = predicted_depth
.sub_(minDepth)
.div_(-(maxDepth - minDepth))
.add_(1)
.clamp_(0, 1)
.mul_(255)
.round_()
.to("uint8");
const depth_image = RawImage.fromTensor(depth_tensor);
depth_image.save("depth.png");
以下图片展示了输入图像以及模型生成的对应的深度图:
输入图像 |
深度图 |
 |
 |
📚 详细文档
注意事项
⚠️ 重要提示
目前为 ONNX 权重单独创建一个仓库是一个临时解决方案,直到 WebML 获得更广泛的应用。如果你想让你的模型适用于 Web 环境,我们建议使用 🤗 Optimum 将模型转换为 ONNX 格式,并像本仓库一样组织你的仓库结构(将 ONNX 权重放在名为 onnx
的子文件夹中)。
📄 许可证
本项目使用 apple-ascl
许可证。
信息表格
属性 |
详情 |
基础模型 |
apple/DepthPro |
库名称 |
transformers.js |
任务类型 |
深度估计 |
许可证 |
apple-ascl |