用PaddleX快速實現圖像分類訓練

飛槳 -PaddleX 是一套更加簡明易懂的API,並配套一鍵下載安裝的圖形化開發客戶端。用PaddleX實現圖像分類訓練非常快速,代碼量也小。
第一步:安裝paddlex, 參考《在windows10下安裝飛槳2.0.2和PaddleX》
第二步:下載並解壓蔬菜分類數據集,用迅雷直接下載

https://bj.bcebos.com/paddlex/datasets/vegetables_cls.tar.gz

或者用命令

wget https://bj.bcebos.com/paddlex/datasets/vegetables_cls.tar.gz
tar xzvf vegetables_cls.tar.gz

第三步:運行train.py程序,源代碼如下所示,訓練模型

from paddlex.cls import transforms
import paddlex as pdx 

train_transforms = transforms.Compose([
    transforms.RandomCrop(crop_size=224),
    transforms.RandomHorizontalFlip(),
    transforms.Normalize()
])
eval_transforms = transforms.Compose([
    transforms.ResizeByShort(short_size=256),
    transforms.CenterCrop(crop_size=224),
    transforms.Normalize()
])

train_dataset = pdx.datasets.ImageNet(
    data_dir='vegetables_cls',
    file_list='vegetables_cls/train_list.txt',
    label_list='vegetables_cls/labels.txt',
    transforms=train_transforms,
    shuffle=True)
eval_dataset = pdx.datasets.ImageNet(
    data_dir='vegetables_cls',
    file_list='vegetables_cls/val_list.txt',
    label_list='vegetables_cls/labels.txt',
    transforms=eval_transforms)

num_classes = len(train_dataset.labels)
model = pdx.cls.MobileNetV3_small_ssld(num_classes=num_classes)

model.train(num_epochs=20,
            train_dataset=train_dataset,
            train_batch_size=32,
            eval_dataset=eval_dataset,
            lr_decay_epochs=[4, 6, 8],
            save_dir='output/mobilenetv3_small_ssld',
            use_vdl=True)

訓練結果如下所示:

第四步:運行infer.py程序,源代碼如下所示,執行推理計算,獲得推理結果

import paddlex as pdx
model = pdx.load_model('output/mobilenetv3_small_ssld/best_model')
result = model.predict('vegetables_cls/bocai/100.jpg')
print("Predict Result: ", result)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章