.pt模型转为tfjs的一种参考方法
前排提醒
仅方法仅实践于windows系统下的yolo8与yolo12的情况,其余情况可行性有待验证。
情景
个人需要将模型嵌进expo go中需要使用tfjs格式的模型,根据网络教程打算采用.pb转onnx转savemodel转tfjs的方法,但转出来的模型总会报错。
猜测是windows不能使用tensorflowjs 的 Python 转换器会 import tensorflow_decision_forests(TF-DF),而 TF-DF 在 Windows 没有 pip 版本(没有那个 inference.so),所以就直接炸了inference.so not found。官方文档也写明了 Windows 上没有 TF-DF 的 Pip 包
解决方案
既然windows行不通,那就用linux。使用docker中的linux容器进行模型转换。
编写Dockerfile文件创建对应容器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| dockerfile FROM python:3.10-slim
# 使用清华镜像提高下载速度 ENV PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple ENV PIP_DEFAULT_TIMEOUT=120
# 基础工具 RUN set -eux; \ apt-get update && apt-get install -y --no-install-recommends \ build-essential wget unzip && \ rm -rf /var/lib/apt/lists/*
# Python 依赖(先装 ultralytics,再把 opencv 切换到 headless 版本) RUN python -m pip install --upgrade pip && \ pip install --no-cache-dir \ protobuf==4.25.3 \ numpy==1.26.4 \ tensorflow-cpu==2.15.1 \ tensorflowjs==4.22.0 \ onnx==1.15.0 \ onnx2tf==1.26.3 \ ultralytics==8.3.223 && \ pip uninstall -y opencv-python || true && \ pip install --no-cache-dir opencv-python-headless==4.11.0.86
WORKDIR /work
# 让容器可直接当 yolo CLI 用;无参数时显示帮助 ENTRYPOINT ["yolo"] CMD ["--help"]
|
编写完成后执行下方指令创建容器
1 2
| shell docker build -t yolo-tfjs:2.15 .
|
运行容器
1 2 3 4 5
| shell docker run --rm -it ` -v 模型所在的父路径:/work ` yolo-tfjs:2.15-hl 容器名` export model=/work/模型路径.pt format=tfjs(你需要的格式) imgsz=480(训练时的尺寸)
|
检查
生成的模型会在.pt同级目录下生成,注意查看。