飛槳 -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)