本项目基于paddlex实现目标检测

Posted 被褐怀玉888988

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

码云地址链接:https://gitee.com/wang-zhizhou_1

以上是关于本项目基于paddlex实现目标检测的主要内容,如果未能解决你的问题,请参考以下文章

本项目基于paddlex实现目标检测

基于PaddleX的岩石识别

基于PaddleX的岩石识别

PaddleX助力无人驾驶:基于YOLOv3的车辆检测和车道线分割实战

教程 | 从零开始PyTorch项目:YOLO v3目标检测实现(下)

从零开始PyTorch项目:YOLO v3目标检测实现