本项目基于paddlex实现目标检测
Posted 扬志九洲
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了本项目基于paddlex实现目标检测相关的知识,希望对你有一定的参考价值。
一、项目背景
本项目基于paddlex实现目标检测。
效果如图
下载版本小于2.0.0的paddlex
!pip install "paddlex<2.0.0" -i https://mirror.baidu.com/pypi/simple
定义参数
#config
val_radio=0.2
train_list='data/train_list.txt'
val_list='data/val_list.txt'
label_list='data/labels.txt'
data_dir='data'
num_epochs=20
train_batch_size=16
learning_rate=0.000125
lr_decay_epochs=[210, 240]
save_interval_epochs=10
载入所需库
import paddlex as pdx
from paddlex.det import transforms
import linecache
import random
二、数据集介绍
本项目使用的数据集为VOC2012数据集,其中标签有aeroplane,bicycle,bird,boat,bottle,bus,car,cat,chair,cow,diningtable,dog,horse,motorbike,person,pottedplant,sheep,sofa,train,tvmonitor。
解压数据集并将数据集放入data目录
!unzip /home/aistudio/data/data105732/VOC2012.zip
!mv Annotations data
!mv JPEGImages data
!mv train_list.txt data
!mv labels.txt data
将数据集划分为训练集和验证集
!paddlex --split_dataset --format VOC --dataset_dir data --val_value 0.2
对数据预处理
train_transforms = transforms.Compose([
transforms.MixupImage(mixup_epoch=250),
transforms.RandomDistort(),
transforms.RandomExpand(),
transforms.RandomCrop(),
transforms.Resize(target_size=608, interp='RANDOM'),
transforms.RandomHorizontalFlip(),
transforms.Normalize(),
])
eval_transforms = transforms.Compose([
transforms.Resize(target_size=608, interp='CUBIC'),
transforms.Normalize(),
])
数据载入
train_dataset = pdx.datasets.VOCDetection(
data_dir=data_dir,
file_list=train_list,
label_list=label_list,
transforms=train_transforms,
shuffle=True)
eval_dataset = pdx.datasets.VOCDetection(
data_dir=data_dir,
file_list=val_list,
label_list=label_list,
transforms=eval_transforms)
三、模型组网和训练
num_classes = len(train_dataset.labels)
model = pdx.det.YOLOv3(num_classes=num_classes, backbone='DarkNet53')
model.train(
num_epochs=num_epochs,
train_dataset=train_dataset,
train_batch_size=train_batch_size,
eval_dataset=eval_dataset,
learning_rate=learning_rate,
lr_decay_epochs=lr_decay_epochs,
save_interval_epochs=save_interval_epochs,
save_dir='output/yolov3_darknet53',
use_vdl=True)
四、模型预测
model = pdx.load_model('output/yolov3_darknet53/best_model')
image_name = 'work/plane.jpg'
result = model.predict(image_name)
pdx.det.visualize(image_name, result, threshold=0.5, save_dir='./output/yolov3_darknet53')
五、自我介绍
太原理工大学 软件学院 软件工程专业 2020级 本科生 王志洲
AIstudio地址链接:https://aistudio.baidu.com/aistudio/personalcenter/thirdview/559770
以上是关于本项目基于paddlex实现目标检测的主要内容,如果未能解决你的问题,请参考以下文章
PaddleX助力无人驾驶:基于YOLOv3的车辆检测和车道线分割实战