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文件创建对应容器
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"]
```
编写完成后执行下方指令创建容器
````:v-pre
shell
docker build -t yolo-tfjs:2.15 .
```
### 运行容器
````:v-pre
shell
docker run --rm -it `
-v 模型所在的父路径:/work `
yolo-tfjs:2.15-hl 容器名`
export model=/work/模型路径.pt format=tfjs(你需要的格式) imgsz=480(训练时的尺寸)
```
### 检查
生成的模型会在.pt同级目录下生成,注意查看。