一、数据集的获取
1.通过飞桨数据集查找
2.利用kaggle查找和下载数据集
3.通过天池、讯飞等平台查找数据集
二、数据处理
图片数据处理流程:
1.图片数据获取
2.图片数据清洗
3.图片数据标注
4.图片数据预处理(标准化、中心化、归一化)
5.图片数据准备(划分训练集,验证集,以及测试集)
6.图片数据增强
CV常见的数据增强
· 随机旋转
· 随机水平或者重直翻转
· 缩放
· 剪裁
· 平移
· 调整亮度、对比度、饱和度、色差等等
· 注入噪声
· 基于生成对抗网络GAN做数搪增强AutoAugment等
纯数据处理流程:
1.感知数据
2.数据清理
3.特征变换
4.特征选择
5.特征抽取
二、数据处理
1.COCO与VOC数据集特征
COCO数据格式
VOC数据格式
2.数据标注
常见标注工具有labelimg、labelme、PPOCRLabel
3.制作VOC格式与COCO格式数据集并划分
#解压自制数据集 !unzip -oq /home/aistudio/data/data101583/facemask.zip -d work/PaddleDetection/dataset/MaskVOCData #导入paddlex !pip install paddlex #划分VOC数据集 !paddlex --split_dataset --format VOC --dataset_dir work/PaddleDetection/dataset/MaskVOCData/ --val_value 0.15 --test_value 0.05 %cd work/PaddleDetection/ #制作COCO数据集 #提取文件下img目录所有照片名不要后缀 import pandas as pd import os filelist = os.listdir("dataset/MaskVOCData/JPEGImages") train_name = [] for file_name in filelist: name, point ,end =file_name.partition('.') train_name.append(name) df = pd.DataFrame(train_name) df.head(8) df.to_csv('./train_all.txt', sep='\t', index=None,header=None) !mkdir -p dataset/MaskVOCData/ImageSets/Main !mv train_all.txt dataset/MaskVOCData/ImageSets !mv dataset/MaskVOCData/labels.txt dataset/MaskVOCData/label_list.txt !cp dataset/MaskVOCData/label_list.txt dataset/MaskVOCData/ImageSets/ #备份VOC !cp -r dataset/MaskVOCData /home/aistudio/ !python tools/x2coco.py \ --dataset_type voc \ --voc_anno_dir dataset/MaskVOCData/Annotations \ --voc_anno_list dataset/MaskVOCData/ImageSets/train_all.txt \ --voc_label_list dataset/MaskVOCData/ImageSets/label_list.txt \ --voc_out_name ./dataset/annotations.json !mv dataset/MaskVOCData dataset/MaskCOCOData !mv ../../MaskVOCData dataset !mkdir dataset/MaskCOCOData/annotations !mv dataset/annotations.json dataset/MaskCOCOData/annotations !rm dataset/MaskCOCOData/train_list.txt !rm dataset/MaskCOCOData/val_list.txt !rm dataset/MaskCOCOData/label_list.txt !rm dataset/MaskCOCOData/test_list.txt !rm -r dataset/MaskCOCOData/Annotations !rm -r dataset/MaskCOCOData/ImageSets #划分COCO数据集 !paddlex --split_dataset --format COCO --dataset_dir dataset/MaskCOCOData/annotations --val_value 0.15 --test_value 0.05
三、数据处理方法
1.数据增强
#图像处理示例 目标视野里比较多重叠,或者有点模糊的适用
path='dataset/MaskCOCOData/JPEGImages/maksssksksss443.png'
img = Image.open(path)
plt.imshow(img)
plt.show()
#锐化
img = img.filter(ImageFilter.SHARPEN)
img = img.filter(ImageFilter.SHARPEN)
plt.imshow(img)
plt.show()
#亮度变换
bright_enhancer = ImageEnhance.Brightness(img) # 传入调整系数亮度
img = bright_enhancer.enhance(1.6)
plt.imshow(img)
plt.show()
#提高对比度
contrast_enhancer = ImageEnhance.Contrast(img) # 传入调整系数对比度
img = contrast_enhancer.enhance(1.9)
plt.imshow(img)
plt.show()
四、模型训练与评估
import matplotlib
matplotlib.use('Agg')
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
%matplotlib inline
import warnings
warnings.filterwarnings("ignore")
#num_classes有些模型需要加1 比如faster_rcnn
num_classes = len(train_dataset.labels)
model = pdx.det.PPYOLO(num_classes=num_classes, )
model.train(
num_epochs=70,
train_dataset=train_dataset,
train_batch_size=16,
eval_dataset=eval_dataset,
learning_rate=3e-5,
warmup_steps=90,
warmup_start_lr=0.0,
save_interval_epochs=7,
lr_decay_epochs=[42, 70],
save_dir='output/PPYOLO',
use_vdl=True)
!mkdir ./output
!unzip -oq /home/aistudio/data/data101583/PPYOLO_YES.zip -d ./output
!unzip -oq /home/aistudio/data/data101583/PPYOLO_ALL.zip -d ./output
!unzip -oq /home/aistudio/data/data101583/PPYOLO_NO.zip -d ./output
!mv -f output/home/aistudio/PPYOLO_ALL output
!mv -f output/home/aistudio/PPYOLO_YES output
!rm -r output/home/
五、模型推理预测
使用模型进行预测,同时使用pdx.det.visualize将结果可视化,可视化结果将保存到work/PaddleDetection/output/PPYOLO/vdl_log下,载入模型推理保存图片至work/PaddleDetection/output/PPYOLO/img下。