mmpretrain/docs/en/user_guides/inference.md

2.1 KiB

Inference with existing models

MMClassification provides pre-trained models for classification in Model Zoo. This note will show how to use existing models to inference on given images.

As for how to test existing models on standard datasets, please see this guide

Inference on a given image

MMClassification provides high-level Python APIs for inference on a given image:

Here is an example of building the model and inference on a given image by using ImageNet-1k pre-trained checkpoint.

If you use mmcls as a 3rd-party package, you need to download the conifg and the demo image in the example.

Run 'mim download mmcls --config resnet50_8xb32_in1k --dest .' to download the required config.

Run 'wget https://github.com/open-mmlab/mmclassification/blob/master/demo/demo.JPEG' to download the desired demo image.
from mmcls.apis import inference_model, init_model
from mmcls.utils import register_all_modules

config_path = './configs/resnet/resnet50_8xb32_in1k.py'
checkpoint_path = 'https://download.openmmlab.com/mmclassification/v0/resnet/resnet50_8xb32_in1k_20210831-ea4938fc.pth' # can be a local path
img_path = 'demo/demo.JPEG'   # you can specify your own picture path

# register all modules and set mmcls as the default scope.
register_all_modules()
# build the model from a config file and a checkpoint file
model = init_model(config_path, checkpoint_path, device="cpu")  # device can be 'cuda:0'
# test a single image
result = inference_model(model, img_path)

result is a dictionary containing pred_label, pred_score, pred_scores and pred_class, the result is as follows:

{"pred_label":65,"pred_score":0.6649366617202759,"pred_class":"sea snake", "pred_scores": [..., 0.6649366617202759, ...]}

An image demo can be found in demo/image_demo.py.