X2Paddle icon indicating copy to clipboard operation
X2Paddle copied to clipboard

Could you please add DeeplabV3Plus with backbone Mobile Net timm-mobilenetv3_small_075

Open franva opened this issue 4 years ago • 3 comments

请说明模型的来源,模型类型(例如图像分类、目标检测等),应用场景(如需要转为Paddle,通过PaddleLite部署到树莓派上,满足XXX需求)

提示 上述有详细描述的issue会让工程师更快了解用户的需求,丰富产品的功能和易用性,相关issue也会被优先处理!!!

你们好, 我参加了AI达人训练营,需要做路面分隔,用到了DeeplabV3Plus with Mobile Net V3, 原因是要跑在Raspberry Pi 4(4GB)这样的edge devices上。

模型来源: PyTorch 模型说明: 图像分类模型,其相应repo为 https://github.com/qubvel/segmentation_models.pytorch/ 模型文件: 链接: https://github.com/qubvel/segmentation_models.pytorch/blob/master/examples/cars%20segmentation%20(camvid).ipynb 请用上面的notebook生成这个模型。

拜托啦

franva avatar Aug 10 '21 15:08 franva

能否提供一下训练好的PyTorch模型以及组网结构,感谢~

wjj19950828 avatar Aug 11 '21 02:08 wjj19950828

你好 @wjj19950828

我对AI还不是太在行。 我用了一个叫做 segmentation_models.pytorch 的Github Project, 使用它我就不需要自己写模型和组网结构。只要几行代码就可以了, 具体代码是这样的:


import torch
import numpy as np
import segmentation_models_pytorch as smp

ENCODER = 'timm-mobilenetv3_small_minimal_100'
ENCODER_WEIGHTS = 'imagenet'
CLASSES = ['road']
ACTIVATION = 'sigmoid' # could be None for logits or 'softmax2d' for multiclass segmentation
DEVICE = 'cuda'

# create segmentation model with pretrained encoder
model = smp.DeepLabV3Plus(
    encoder_name=ENCODER, 
    encoder_weights=ENCODER_WEIGHTS, 
    in_channels=3,
    classes=len(CLASSES), 
    activation=ACTIVATION,
)

preprocessing_fn = smp.encoders.get_preprocessing_fn(ENCODER, ENCODER_WEIGHTS)

通过看它的源代码 我觉得 这个可能是你们需要的: mobilenetv3_small_075的 backbone在这里 'tf_mobilenetv3_small_075': { 'imagenet': 'https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_mobilenetv3_small_075-da427f52.pth' }, 它在timm_mobilenetv3.py 的里面

至于Deeplabv3Plus的Model 和Encoder 在这里 https://github.com/qubvel/segmentation_models.pytorch/tree/master/segmentation_models_pytorch/deeplabv3

不知道 是否提供够了 你们需要的东西。

如果不够 请告诉我。

多谢啦

franva avatar Aug 11 '21 10:08 franva

Hi, @franva PyTorch转成Paddle模型有两种方式

    1. Pytorch转成ONNX,再将ONNX模型通过X2Paddle转成Paddle模型
    1. 直接使用X2Paddle的接口进行转换

关于第二种方式,可以参考文档 https://github.com/PaddlePaddle/X2Paddle/blob/develop/docs/inference_model_convertor/demo/pytorch2paddle.ipynb

如若转换失败,可再反馈给我们

jiangjiajun avatar Aug 15 '21 04:08 jiangjiajun