Files
ai-box/tool/convert_mnn.js
2025-03-07 17:07:02 +08:00

36 lines
1.0 KiB
JavaScript

const fs = require("fs");
const path = require("path");
const { spawnSync } = require("child_process");
const CONVERTER_PATH = "C:/Develop/Libs/mnn/bin/MNNConvert.exe";
const MODEL_PATH = path.join(__dirname, "../models");
function onnx2mnn(model) {
const name = path.basename(model, ".onnx");
const outputFile = path.join(path.dirname(model), name + ".mnn");
if (fs.existsSync(outputFile)) console.log(`Skip ${name}`);
else {
const result = spawnSync(CONVERTER_PATH, [
"-f", "ONNX",
"--modelFile", model,
"--MNNModel", outputFile,
"--bizCode", "biz"
]);
if (result.status !== 0) {
console.error(`Failed to convert ${name}`);
console.log(result.stdout.toString());
}
else console.log(`Convert ${name} success`);
}
}
function resolveDir(dir) {
const files = fs.readdirSync(dir);
for (const file of files) {
const filepath = path.join(dir, file);
if (fs.statSync(filepath).isDirectory()) resolveDir(filepath);
else if (path.extname(file) == ".onnx") onnx2mnn(filepath);
}
}
resolveDir(MODEL_PATH)