7

BodyPix是一个开源机器学习模型,它允许在浏览器中使用 TensorFlow.js 进行人物和身体部位的分割。我想将模型转换为 .pb 冻结图,以便在 Python 上使用它。

我该怎么做?

我试图在不同的地方找到解决方案,但没有奏效。

4

2 回答 2

9
  • 下载 model.json 文件

例如:https ://storage.googleapis.com/tfjs-models/savedmodel/bodypix/resnet50/float/model-stride16.json

  • 下载对应的权重

https://storage.googleapis.com/tfjs-models/savedmodel/bodypix/resnet50/float/group1-shard1of23.bin

...

https://storage.googleapis.com/tfjs-models/savedmodel/bodypix/resnet50/float/group1-shard23of23.bin

  • 安装 tfjs_graph_converter

来自https://github.com/patlevin/tfjs-to-tf

  • 将模型转换为 .pb 文件

tfjs_graph_converter path/to/js/model path/to/frozen/model.pb

于 2019-12-28T10:04:09.770 回答
1

在 Python 中使用 bodypix 进行分割。但只有当人在墙前而不是其他物体时才能获得更好的效果。

from tf_bodypix.api import download_model, load_model, BodyPixModelPaths
import cv2
bodypix_model = load_model(download_model(BodyPixModelPaths.MOBILENET_FLOAT_50_STRIDE_16))

cap = cv2.VideoCapture(0) 
while cap.isOpened(): 
    ret, frame = cap.read()
    # BodyPix Segmentation
    result = bodypix_model.predict_single(frame)
    mask = result.get_mask(threshold=0.5).numpy().astype(np.uint8)
    seg = result.get_colored_part_mask(mask)

    tf.keras.preprocessing.image.save_img(
    pwd+"\\output-colored-mask.jpg",
    seg
)

于 2021-09-15T08:51:16.053 回答