Skip to content

MobilenetV3 Grove AI vision V2 boardΒ #282

@rn776

Description

@rn776

Hello, I have a classification model with MobilenetV3 as the backbone. The trained model was exported to 'vela' format as suggested. However, the flashed board fails to invoke. The classifier model with MobilenetV2 invokes without issue. Is there any way to run the MobilenetV3 models on the board?
My training config files is below, Please let me know if its an error in the config file.

from mmengine.config import read_base
from mmengine.dataset import DefaultSampler
with read_base():
    from .._base_.default_runtime import *
    from .._base_.schedules.schedule_1x import *
from sscma.datasets import CustomDataset
# from sscma.deploy.models.fomo_infer import FomoInfer
from sscma.deploy.models.classification_infer import ClassificationInfer
from mmengine.optim import LinearLR, MultiStepLR
from sscma.datasets.transforms import (
    Resize,
    PackInputs,
    LoadImageFromFile,
    RandomFlip,
)
from sscma.visualization import UniversalVisualizer
from sscma.datasets import ClsDataPreprocessor
from sscma.models import ImageClassifier, CrossEntropyLoss, GlobalAveragePooling
from sscma.models import MobileNetV3, LinearClsHead
from sscma.evaluation import Accuracy


# ========================Suggested optional parameters========================
num_classes = 2
widen_factor = 0.1
dataset_type = CustomDataset
data_root = "/home/pip_dataset"
height = 192
width = 192
imgsz = (width, height)
batch = 8
workers = 2
persistent_workers = True
val_batch = 8
val_workers = 2
lr = 0.02
epochs = 100

default_hooks = dict(param_scheduler=dict(type=ParamSchedulerHook))
visualizer = dict(type=UniversalVisualizer, vis_backends=[dict(type='WandbVisBackend')])

train_pipeline = [
    dict(type=LoadImageFromFile,imdecode_backend='cv2'),
    dict(type=Resize, scale=height),
    dict(type=RandomFlip, prob=0.5, direction="horizontal"),
    dict(type=RandomFlip, prob=0.5, direction="vertical"),
    dict(type=PackInputs),
]

test_pipeline = [
    dict(type=LoadImageFromFile,imdecode_backend='cv2'),
    # dict(type=ResizeEdge, scale=height, edge="short"),
    dict(type=Resize, scale=height),
    dict(type=PackInputs),
]

train_dataloader = dict(
    batch_size=batch,
    num_workers=workers,
    persistent_workers=persistent_workers,
    drop_last=False,
    # pin_memory=True,
    dataset=dict(
        type=dataset_type,
        data_root=data_root,
        data_prefix=dict(img_path="train"),
        pipeline=train_pipeline,
    ),
    sampler=dict(type=DefaultSampler, shuffle=True),
)

val_dataloader = dict(
    batch_size=val_batch,
    num_workers=val_workers,
    persistent_workers=persistent_workers,
    drop_last=False,
    # pin_memory=True,
    dataset=dict(
        type=dataset_type,
        data_root=data_root,
        data_prefix=dict(img_path="valid"),
        pipeline=test_pipeline,
    ),
    sampler=dict(type=DefaultSampler, shuffle=False),
)
val_evaluator = dict(type=Accuracy, topk=(1, ))

test_dataloader = val_dataloader
test_evaluator = val_evaluator

# ===================================================================

data_preprocessor = dict(
    type=ClsDataPreprocessor,
    mean=[0, 0, 0],
    std=[255.0, 255.0, 255.0],
    to_rgb=True,
    num_classes=num_classes,

)


model = dict(
    type=ImageClassifier,
    data_preprocessor=data_preprocessor,
    backbone=dict(
        type=MobileNetV3, widen_factor=widen_factor, out_indices=(2,), rep=False,
    ),
    neck=dict(type=GlobalAveragePooling),
    head=dict(
        type=LinearClsHead,
        in_channels=8,
        num_classes=num_classes,
        loss=dict(
            type=CrossEntropyLoss,
            loss_weight=1.0,
        ),
    ),
)


train_cfg = dict(by_epoch=True, max_epochs=epochs)


# learning policy
param_scheduler = [
    dict(type=LinearLR, begin=0, end=30, start_factor=0.001, by_epoch=False), 
    dict(
        type=MultiStepLR,
        begin=1,
        end=100,
        milestones=[50, 70, 90],
        gamma=0.3,
        by_epoch=True,
    ),
]

deploy = dict(
    type=ClassificationInfer,
    data_preprocessor=data_preprocessor,
)

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions