0

0

PaddleRS:无人机汽车识别

P粉084495128

P粉084495128

发布时间:2025-07-23 11:16:44

|

1031人浏览过

|

来源于php中文网

原创

该项目基于PaddleRS,利用0.05米分辨率的DFC2018 Houston数据集超高分辨率影像,裁剪出1400张图块并标注汽车,按9:1划分训练集和验证集。通过定义数据增强和数据集,使用PPYOLOv2模型训练,借助VDL查看效果,评估得较高map,最后实现模型预测及可视化。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

paddlers:无人机汽车识别 - php中文网

PaddleRS:无人机汽车识别

基于0.5m的高分辨率无人机影像,我们希望能够使用目标检测的方法找到影像中的汽车。项目将基于PaddleRS完成该任务。

1 数据准备

数据来自于DFC2018 Houston,DFC2018 Houston 是2018年IEEE GRSS Data Fusion 比赛所用的数据集。这个数据是由 University of Houston Dr. Saurabh Prasad 的实验室制作公开的。这个数据是个多传感器数据,包含了48个波段的高光谱数据(1米),3波段的LiDAR数据(0.5米),以及超高分辨率影像(0.05米)。这个数据包含了20类地物。

PaddleRS:无人机汽车识别 - php中文网        

只取用了其中0.05米分辨率的超高分辨率影像,裁剪为1400张596x601大小的图块,由手工标注汽车的矩形框,按照9:1划分训练集和数据集。

In [1]
# 解压数据集! mkdir -p dataset
! unzip -oq data/data56250/carDetection_RGB.zip -d dataset
   
In [2]
# 划分数据集import osimport os.path as ospimport randomdef get_data_list(data_dir):
    random.seed(666)
    mode = ["train_list", "val_list"]
    dir_path = osp.join(data_dir, "JPEGImages")
    files = [f.split(".")[0] for f in os.listdir(dir_path)]
    random.shuffle(files)  # 打乱顺序
    with open(osp.join(data_dir, f"{mode[0]}.txt"), "w") as f_tr:        with open(osp.join(data_dir, f"{mode[1]}.txt"), "w") as f_va:            for i, name in enumerate(files):                if (i % 10) == 0:  # 训练集与测试集为9:1
                    f_va.write(f"JPEGImages/{name}.jpg Annotations/{name}.xml\n")                else:
                    f_tr.write(f"JPEGImages/{name}.jpg Annotations/{name}.xml\n")
    labels = ["car"]
    txt_str = "\n".join(labels)    with open((data_dir + "/" + f"label_list.txt"), "w") as f:
        f.write(txt_str)    print("Finished!")

get_data_list("dataset")
       
Finished!
       

2 PaddleRS准备

PaddleRS是基于飞桨开发的遥感处理平台,支持遥感图像分类,目标检测,图像分割,以及变化检测等常用遥感任务,帮助开发者更便捷地完成从训练到部署全流程遥感深度学习应用。

PaddleRS:无人机汽车识别 - php中文网        

github:https://github.com/PaddlePaddle/PaddleRS

接下来可以通过git clone得到PaddleRS。

In [7]
! git clone https://github.com/PaddlePaddle/PaddleRS.git
%cd PaddleRS
! git checkout release/1.0! pip install --upgrade pip
! pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
! python setup.py install
%cd ..
   

3 模型训练

PaddleRS借鉴PaddleSeg的API设计模式并进行了较高程度的封装,可以方便的完成数据、模型等的定义,快速开始模型的训练迭代。

智慧车行预约小程序
智慧车行预约小程序

智慧车行小程序,是一个专门为洗车/4S/车辆维修行业打造的小程序,前后端完整代码包括车行动态,养车常识,保养预约,维修预约,洗车美容预约,汽车检测预约等功能。采用腾讯提供的小程序云开发解决方案,无须服务器和域名预约管理:开始/截止时间/人数均可灵活设置,可以自定义客户预约填写的数据项预约凭证:支持线下到场后校验签到/核销/二维码自助签到等多种方式详尽的预约数据:支持预约名单数据导出Excel,打印

下载

3.1 数据定义

主要通过datasets和transforms两个组件完成任务,datasets中有包含分割检测分类等多任务的数据加载API,而transforms集成了大部分通用或单独的数据增强API,目前可以通过源码查看。

In [2]
import osimport os.path as ospfrom paddlers.datasets import VOCDetDataset 
from paddlers import transforms as T# 定义数据增强train_transforms = T.Compose([
    T.DecodeImg(),
    T.RandomDistort(),
    T.RandomCrop(),
    T.RandomHorizontalFlip(),
    T.BatchRandomResize(
        target_sizes=[512, 544, 576, 608, 640, 672, 704],
        interp='RANDOM'),
    T.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
    T.ArrangeDetector('train')
])
eval_transforms = T.Compose([
    T.DecodeImg(),
    T.Resize(target_size=608, interp='CUBIC'),
    T.Normalize(
        mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
    T.ArrangeDetector('eval')
])# 定义数据集data_dir = "dataset"train_file_list = osp.join(data_dir, 'train_list.txt')
val_file_list = osp.join(data_dir, 'val_list.txt')
label_file_list = osp.join(data_dir, 'label_list.txt')
train_dataset = VOCDetDataset(
    data_dir=data_dir,
    file_list=train_file_list,
    label_list=label_file_list,
    transforms=train_transforms,
    shuffle=True)
eval_dataset = VOCDetDataset(
    data_dir=data_dir,
    file_list=train_file_list,
    label_list=label_file_list,
    transforms=eval_transforms,
    shuffle=False)
       
2023-03-08 18:57:32 [INFO]	Starting to read file list from dataset...
2023-03-08 18:57:39 [INFO]	944 samples in file dataset/train_list.txt, including 944 positive samples and 0 negative samples.
creating index...
index created!
2023-03-08 18:57:39 [INFO]	Starting to read file list from dataset...
2023-03-08 18:57:47 [INFO]	944 samples in file dataset/train_list.txt, including 944 positive samples and 0 negative samples.
creating index...
index created!
       
In [5]
# 检查及可视化数据import numpy as npimport cv2import matplotlib.pyplot as plt

%matplotlib inline# 反归一化def in_normal(img):
    mean = np.array([0.485, 0.456, 0.406])
    std = np.array([0.229, 0.224, 0.225])
    img = (255 * (img * std + mean)).astype("uint8")    return img# 绘制矩形框def visual(img, bboxs):
    for bbox in bboxs:
        x1, y1, x2, y2 = bbox
        cv2.rectangle(img, (x1, y1), (x2, y2), (255, 0, 0), 2)    return imgfor data in train_dataset:
    img = in_normal(data["image"])
    vis = visual(img, data["gt_bbox"])
    plt.figure(figsize=(10, 10))
    plt.imshow(img)
    plt.show()    break
       
               

3.2 模型准备

PaddleRS将模型分别放置于models和custom_models中,分别包含了Paddle四大套件的模型结构以及与遥感、变化检测等相关的模型结构。通过tasks进行了模型的封装,集成了Loss、Opt、Metrics等,可根据需要进行修改。这里以默认的PPYOLOv2为例。

In [7]
from paddlers.tasks.object_detector import PPYOLOv2

num_classes = len(train_dataset.labels)
model = PPYOLOv2(num_classes=num_classes)
   
In [ ]
model.train(
    num_epochs=30,
    train_dataset=train_dataset,
    train_batch_size=16,
    eval_dataset=eval_dataset,
    pretrain_weights="COCO",
    learning_rate=3e-5,
    warmup_steps=10,
    warmup_start_lr=0.0,
    save_interval_epochs=5,
    lr_decay_epochs=[10, 20],
    save_dir="output",
    use_vdl=True)
   

训练的效果可以通过VDL进行查看。

PaddleRS:无人机汽车识别 - php中文网        

In [9]
from paddlers.tasks import load_model

new_model = load_model("output/best_model")
       
2023-03-08 19:28:24 [INFO]	Model[PPYOLOv2] loaded.
       

4 模型评估

只需要调用evaluate即可完成预测。可以看到map还是挺高的。

In [10]
new_model.evaluate(eval_dataset)
       
2023-03-08 19:28:32 [INFO]	Start to evaluate(total_samples=944, total_steps=944)...
2023-03-08 19:29:17 [INFO]	Accumulating evaluatation results...
       
OrderedDict([('bbox_map', 90.35561807270788)])
               

5 模型预测

PaddleRS的目标检测task可以方便的给出坐标、类别和分数,可供自行进行一些后处理。也可以直接使用visualize_detection进行可视化。下面对一张测试图像进行预测并可视化。

In [11]
from paddlers.tasks.utils.visualize import visualize_detectionimport matplotlib.pyplot as plt

%matplotlib inline

test_transforms = T.Compose([
    T.DecodeImg(),
    T.Resize(target_size=608, interp='CUBIC'),
    T.Normalize(
        mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
    T.ArrangeDetector('test')
])

img_path = "dataset/JPEGImages/UH_NAD83_272056_3289689_58.jpg"pred = new_model.predict(img_path, test_transforms)
vis_img = visualize_detection(img_path, pred, save_dir=None)
plt.figure(figsize=(10, 10))
plt.imshow(vis_img)
plt.show()
       
               

相关专题

更多
golang map内存释放
golang map内存释放

本专题整合了golang map内存相关教程,阅读专题下面的文章了解更多相关内容。

75

2025.09.05

golang map相关教程
golang map相关教程

本专题整合了golang map相关教程,阅读专题下面的文章了解更多详细内容。

36

2025.11.16

golang map原理
golang map原理

本专题整合了golang map相关内容,阅读专题下面的文章了解更多详细内容。

60

2025.11.17

java判断map相关教程
java判断map相关教程

本专题整合了java判断map相关教程,阅读专题下面的文章了解更多详细内容。

40

2025.11.27

github中文官网入口 github中文版官网网页进入
github中文官网入口 github中文版官网网页进入

github中文官网入口https://docs.github.com/zh/get-started,GitHub 是一种基于云的平台,可在其中存储、共享并与他人一起编写代码。 通过将代码存储在GitHub 上的“存储库”中,你可以: “展示或共享”你的工作。 持续“跟踪和管理”对代码的更改。

242

2026.01.21

自建git服务器
自建git服务器

git服务器是目前流行的分布式版本控制系统之一,可以让多人协同开发同一个项目。本专题为大家提供自建git服务器相关的各种文章、以及下载和课程。

683

2023.07.05

git和svn的区别
git和svn的区别

git和svn的区别:1、定义不同;2、模型类型不同;3、存储单元不同;4、是否拥有全局版本号;5、内容完整性不同;6、版本库不同;7、克隆目录速度不同;8、分支不同。php中文网为大家带来了git和svn的相关知识、以及相关文章等内容。

530

2023.07.06

git撤销提交的commit
git撤销提交的commit

Git是一个强大的版本控制系统,它提供了很多功能帮助开发人员有效地管理和控制代码的变更,本专题为大家提供git 撤销提交的commit相关的各种文章内容,供大家免费下载体验。

265

2023.07.24

c++空格相关教程合集
c++空格相关教程合集

本专题整合了c++空格相关教程,阅读专题下面的文章了解更多详细内容。

0

2026.01.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 16.5万人学习

Django 教程
Django 教程

共28课时 | 3.4万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号