一、数据集的获取
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下。
|