.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同级目录下生成,注意查看。