paddle 进行目标检测_猫狗猴的识别

最近参加文本分类的比赛,发现自己写的代码和paddle的结果差别还是很大的,我的bert代码一直过拟合,哎,先用paddle吧,毕竟是百度大佬的,如果你想快速做出来一些东西,推荐使用paddle,
这个项目是之前做过猫狗猴的图片分类,现在继续用这个数据集进行目标检测

数据集

制作VOC类型数据集,需要使用 labelImg工具(https://github.com/tzutalin/labelImg),
推荐直接使用
pip install labelImg -i https://mirror.baidu.com/pypi/simple
之后在cmd中labelImg,之后弹出界面
在这里插入图片描述
之后将数据集进行标注,建议先将图片放在一起,因为使用open dir会将所有图片加载进来,你就不用一个一个添加了
在这里插入图片描述
按w进行标注
在这里插入图片描述

之后进行保存,再按d进行下一张图片标注,直到所有的完成。将所有标注结果放在Annotations文件中,之后再通过代码进行train.txt数据集的创建

import os
import pandas as pd

dir_path = 'image'
imageName_list = os.listdir(dir_path)
imagePath_list = [os.path.join(dir_path, imageName) for imageName in imageName_list]
print(imageName_list)
xml_list = []
for i in imageName_list:
    xml_list.append('Annotations' + '\\' + i.split('.')[0] + '.xml')
txt_list = {'image_url': imagePath_list, 'xml_url': xml_list}

result_df = pd.DataFrame(txt_list)
print(xml_list)
result_df.to_csv('train.txt', sep='\t', header=None, index=0)

在这里插入图片描述

paddle代码

!pip install "paddlex<=1.3.11" -i https://mirror.baidu.com/pypi/simple
# 设置使用0号GPU卡(如无GPU,执行此代码后仍然会使用CPU训练模型)
import matplotlib
matplotlib.use('Agg') 
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
import paddlex as pdx
from paddlex.det import transforms
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=320, interp='CUBIC'),
    transforms.Normalize(),
])
train_dataset = pdx.datasets.VOCDetection(
    data_dir='',
    file_list='train.txt',
    label_list='label_list',
    transforms=train_transforms,
    shuffle=True)
num_classes = len(train_dataset.labels)
model = pdx.det.YOLOv3(num_classes=num_classes, backbone='DarkNet53')
model.train(
    num_epochs=1000,
    train_dataset=train_dataset,
    train_batch_size=2,
    learning_rate=0.001,
    lr_decay_epochs=[200, 400, 600, 800],
    save_interval_epochs=100,
    warmup_steps=100,
    save_dir='output/yolov3_darknet53')
eval_transforms = transforms.Compose([
    transforms.Resize(target_size=608, interp='RANDOM'),
    transforms.Normalize(),
])
import paddlex as pdx
model = pdx.load_model('output/yolov3_darknet53/epoch_100')
image_name = 'image/H_10.jpg'
result = model.predict(image_name,eval_transforms)
pdx.det.visualize(image_name, result, threshold=0.1, save_dir='./output/yolov3_darknet53')

由于只用30个数据,最后效果有点差,目前只是为了展示流程,所以大家可以按照自己想法去搭建数据集
最后结果展示,
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

如果需要代码以及数据集或者问题,可以qq2681707763

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值