2.人工智能-图像分类

人工智能
后台-插件-广告管理-内容页头部广告(手机)

视频: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()
后台-插件-广告管理-内容页尾部广告(手机)
标签:

评论留言

我要留言

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。