视频:2.1 图像分类:环境安装和数据集准备
环境安装:
CPU版安装:
python -m pip install paddlepaddle==2.2.1 -i https://mirror.baidu.com/pypi/simple
GPU版安装:
python -m pip install paddlepaddle-gpu==2.2.1 -i https://mirror.baidu.com/pypi/simple
数据集准备:
图像分类标注是一项最基础,最简单的标注任务,用户只需将属于同一类的图片放在同一个文件夹下即可,例如下面所示目录结构,
MyDataset/ # 图像分类数据集根目录|--dog/ # 当前文件夹所有图片属于dog类别| |--d1.jpg| |--d2.jpg| |--...| |--...||--...||--cat/ # 当前文件夹所有图片属于cat类别| |--c1.jpg| |--c2.jpg| |--...| |--...
在模型进行训练时,我们需要划分训练集,验证集和测试集,因此需要对如上数据进行划分,直接使用paddlex命令即可将数据集随机划分成70%训练集,20%验证集和10%测试集
paddlex --split_dataset --format ImageNet --dataset_dir MyDataset --val_value 0.2 --test_value 0.1
划分好的数据集会额外生成labels.txt, train_list.txt, val_list.txt, test_list.txt四个文件,之后可直接进行训练。
视频:2.2 图像分类:数据训练
import paddlex as pdxfrom paddlex import transforms as T #定义训练和验证时的transformstrain_transforms=T.Compose( [T.RandomCrop(crop_size=224),T.RandomHorizontalFlip(),T.Normalize()])eval_transforms=T.Compose( [T.ResizeByShort(short_size=256),T.CenterCrop(crop_size=224),T.Normalize()])#定义训练和验证时的数据集train_dataset=pdx.datasets.ImageNet( data_dir="catdog", file_list="catdog/train_list.txt", label_list="catdog/labels.txt", transforms=train_transforms, shuffle=True)eval_dataset=pdx.datasets.ImageNet( data_dir="catdog", file_list="catdog/val_list.txt", label_list="catdog/labels.txt", transforms=eval_transforms)#初始化模型,并进行训练num_classes=len(train_dataset.labels)model=pdx.cls.ResNet50_vd_ssld(num_classes=num_classes)model.train( num_epochs=10, train_dataset=train_dataset, train_batch_size=4, eval_dataset=eval_dataset, lr_decay_epochs=[4,6,8], learning_rate=0.025, save_dir="output/resnet50", use_vdl=True)
视频:2.3 图像分类:模型部署和预测
import paddlex as pdximport cv2import os#启用GPUos.environ["CUDA_VISIBLE_DEVICES"]="0,1"predictor=pdx.deploy.Predictor("output/resnet50-catdog/inference_model",use_gpu=True)imgfile="catdog/dog/dog.80.jpg"img=cv2.imread(imgfile)print(img.shape)result=predictor.predict(img)print(result)cv2.putText(img,result[0]["category"]+str(result[0]["score"]),(10,20),cv2.FONT_HERSHEY_SIMPLEX,0.6,(255,0,0),1)cv2.imshow("result",img)cv2.waitKey(0)cv2.destroyAllWindows()
视频:2.4 图像分类:实时预测
视频加载中...#划分数据集7:2:1#paddlex --split_dataset --format ImageNet --dataset_dir catdog --val_value 0.2 --test_value 0.1#输出部署模型#paddlex --export_inference --model_dir best_model --save_dir inferenceimport paddlex as pdximport cv2import os#启用GPUos.environ["CUDA_VISIBLE_DEVICES"]="0,1"predictor=pdx.deploy.Predictor("output/resnet50-catdog/inference_model",use_gpu=True)# imgfile="catdog/dog/dog.80.jpg"# img=cv2.imread(imgfile)# print(img.shape)cap=cv2.VideoCapture("img/catdog.mp4")while cap.isOpened(): ret,frame=cap.read() result=predictor.predict(frame) #print(result) cv2.putText(frame,result[0]["category"]+str(result[0]["score"]),(10,20),cv2.FONT_HERSHEY_SIMPLEX,0.6,(255,0,0),1) cv2.imshow("result",frame) if cv2.waitKey(10)==ord("q"): breakcap.release()cv2.destroyAllWindows()
评论留言