aero是什么意思啊_自动驾驶视觉算法

aero是什么意思啊_自动驾驶视觉算法数据集介绍aeroscapes数据集下载链接AeroScapes航空语义分割基准包括使用商用无人机在5到50米的高度范围内捕获的图像。该数据集提供3269张720p图像和11个类别的真实掩码。数据加载dataloder写法(基于pytorch)由于该数据集提供了掩码图,因此不需要进行掩码图转换。下载完成后,文件结构如下:ImageSets文件夹:存放了两个txt文件,划分了训练集和验证集。JPEGImages文件夹:存放了RGB图像。SegmentationClass

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

数据集介绍

aeroscapes数据集下载链接
AeroScapes 航空语义分割基准包括使用商用无人机在 5 到 50 米的高度范围内捕获的图像。该数据集提供 3269 张 720p 图像和 11 个类别的真实掩码。
在这里插入图片描述

获取Class类别及其RGB值

由于本数据集未提供类别ID对应的RGB值,可以通过以下代码获取:

from PIL import Image
import os

base_dir = "Visualizations/"
base_seg_dir = "SegmentationClass/"
files = os.listdir(base_dir)
list1 = []
for file in files:
    img_dir = base_dir + file
    segimg_dir = base_seg_dir + file
    im = Image.open(img_dir)
    segimg = Image.open(segimg_dir)
    pix = im.load()
    pix_seg = segimg.load() 
    width = im.size[0]
    height = im.size[1]
    for x in range(width):
        for y in range(height):
            r, g, b = pix[x, y]
            c = pix_seg[x,y]
            if [c,r,g,b] not in list1:
                list1.append([c,r,g,b])
                print(list1)
print(list1)

结果如下:

Person [192,128,128]--------------1
Bike [0,128,0]----------------------2
Car [128,128,128]----------------- 3
Drone [128,0,0]--------------------4
Boat [0,0,128]--------------------- 5
Animal [192,0,128]---------------- 6
Obstacle [192,0,0]------------------7
Construction [192,128,0]-----------8
Vegetation [0,64,0]-----------------9
Road [128,128,0]-------------------10
Sky [0,128,128]---------------------11

数据加载dataloder写法(基于pytorch)

由于该数据集提供了掩码图,因此不需要进行掩码图转换。下载完成后,文件结构如下:

  • ImageSets文件夹:存放了两个txt文件,划分了训练集和验证集。
  • JPEGImages文件夹:存放了RGB图像。
  • SegmentationClass:存放了标签的掩模图。
  • Visualizations:存放了标签图像。aero是什么意思啊_自动驾驶视觉算法
    为了使用此数据集,需要根据划分好的txt文件读取图像,然后采用Pytorch的Dataloader模块进行加载。具体代码:
''' dataset.py '''
import torch
import torch.utils.data
import numpy as np
import cv2
import os

# txt_file = open("ImageSets/trn.txt")
# train_filenames = txt_file.readlines()
# for train_filename in train_filenames:
# print(train_filename)

class DatasetTrain(torch.utils.data.Dataset):
    def __init__(self, base_dir):

        
        self.base_dir = base_dir
        self.img_dir = base_dir + "JPEGImages/"
        self.label_dir = base_dir + "SegmentationClass/"

        self.new_img_h = 512
        self.new_img_w = 1024

        self.examples = []
        txt_path = self.base_dir + "ImageSets/trn.txt"
        txt_file = open(txt_path)
        train_filenames = txt_file.readlines()

        train_img_dir_path = self.img_dir
        label_img__dir_path = self.label_dir

        for train_filename in train_filenames:
            train_filename=train_filename.strip('\n')
            img_path = train_img_dir_path + train_filename + '.jpg'
            label_img_path = label_img__dir_path + train_filename + '.png'
            example = { 
   }
            example["img_path"] = img_path
            example["label_img_path"] = label_img_path
            self.examples.append(example)

        self.num_examples = len(self.examples)

    def __getitem__(self, index):
        example = self.examples[index]

        img_path = example["img_path"]
        print(img_path)
        img = cv2.imread(img_path, -1) 
        img = cv2.resize(img, (self.new_img_w, self.new_img_h),
                         interpolation=cv2.INTER_NEAREST) 
        label_img_path = example["label_img_path"]
        print(label_img_path)
        label_img = cv2.imread(label_img_path, cv2.IMREAD_GRAYSCALE) 
        label_img = cv2.resize(label_img, (self.new_img_w, self.new_img_h),
                               interpolation=cv2.INTER_NEAREST) 

        # normalize the img (with the mean and std for the pretrained ResNet):
        img = img/255.0
        img = img - np.array([0.485, 0.456, 0.406])
        img = img/np.array([0.229, 0.224, 0.225]) 
        img = np.transpose(img, (2, 0, 1)) 
        img = img.astype(np.float32)

        # convert numpy -> torch:
        img = torch.from_numpy(img) 
        label_img = torch.from_numpy(label_img) 

        return (img, label_img)

    def __len__(self):
        return self.num_examples

class DatasetVal(torch.utils.data.Dataset):
    def __init__(self, base_dir):

        
        self.base_dir = base_dir
        self.img_dir = base_dir + "JPEGImages/"
        self.label_dir = base_dir + "SegmentationClass/"

        self.new_img_h = 512
        self.new_img_w = 1024

        self.examples = []
        txt_path = self.base_dir + "ImageSets/val.txt"
        txt_file = open(txt_path)
        valid_filenames = txt_file.readlines()

        train_img_dir_path = self.img_dir
        label_img__dir_path = self.label_dir

        for valid_filename in valid_filenames:
            valid_filename=valid_filename.strip('\n')
            img_path = train_img_dir_path + valid_filename + '.jpg'
            label_img_path = label_img__dir_path + valid_filename + '.png'
            example = { 
   }
            example["img_path"] = img_path
            example["label_img_path"] = label_img_path
            self.examples.append(example)

        self.num_examples = len(self.examples)

    def __getitem__(self, index):
        example = self.examples[index]

        img_path = example["img_path"]
        print(img_path)
        img = cv2.imread(img_path, -1) 
        img = cv2.resize(img, (self.new_img_w, self.new_img_h),
                         interpolation=cv2.INTER_NEAREST) 
        label_img_path = example["label_img_path"]
        print(label_img_path)
        label_img = cv2.imread(label_img_path, cv2.IMREAD_GRAYSCALE) 
        label_img = cv2.resize(label_img, (self.new_img_w, self.new_img_h),
                               interpolation=cv2.INTER_NEAREST) 

        # normalize the img (with the mean and std for the pretrained ResNet):
        img = img/255.0
        img = img - np.array([0.485, 0.456, 0.406])
        img = img/np.array([0.229, 0.224, 0.225]) 
        img = np.transpose(img, (2, 0, 1)) 
        img = img.astype(np.float32)

        # convert numpy -> torch:
        img = torch.from_numpy(img) 
        label_img = torch.from_numpy(label_img) 

        return (img, label_img)

    def __len__(self):
        return self.num_examples


''' 以下代码为测试功能,正式使用时需要注释掉 '''

if __name__ == "__main__":
    base_dir = "aeroscapes/"
    train_dataset = DatasetTrain(base_dir = base_dir)
    train_loader = torch.utils.data.DataLoader(dataset=train_dataset,
                                            batch_size=3, shuffle=True,
                                            num_workers=1,drop_last=True)
    val_dataset = DatasetVal(base_dir = base_dir)
    val_loader = torch.utils.data.DataLoader(dataset=val_dataset,
                                            batch_size=3, shuffle=True,
                                            num_workers=1,drop_last=True)
    from torch.autograd import Variable
    for step, (imgs, label_imgs) in enumerate(train_loader):
        imgs = Variable(imgs).cuda() # (shape: (batch_size, 3, img_h, img_w))
        print(imgs.shape)
        label_imgs = Variable(label_imgs.type(torch.LongTensor)).cuda() # (shape: (batch_size, img_h, img_w))
        print(label_imgs.shape)
    for step, (imgs, label_imgs) in enumerate(val_loader):
        imgs = Variable(imgs).cuda() # (shape: (batch_size, 3, img_h, img_w))
        print(imgs.shape)
        label_imgs = Variable(label_imgs.type(torch.LongTensor)).cuda() # (shape: (batch_size, img_h, img_w))
        print(label_imgs.shape)

使用前根据自己数据集存放的路径修改base_dir 变量。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170584.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月15日 上午7:36
下一篇 2022年8月15日 上午7:36


相关推荐

  • 完整全面的Java资源库—–转载[通俗易懂]

    完整全面的Java资源库—–转载[通俗易懂]构建这里搜集了用来构建应用程序的工具。ApacheMaven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建。Maven优于ApacheAnt。后者采用了一种过程化的方式进行配置,所以维护起来相当困难。Gradle:Gradle采用增量构建。Gradle通过Groovy编程而不是传统的XML声明进行配置。Gradle可以很好地配合Maven…

    2022年7月8日
    33
  • 简单剖析B树(B-Tree)与B+树

    简单剖析B树(B-Tree)与B+树注意 首先需要说明的一点是 B 树就是 B 树 没有所谓的 B 减树引言 我们都知道二叉查找树的查找的时间复杂度是 logN 其查找效率已经足够高了 那为什么还有 树和 树的出现呢 难道它两的时间复杂度比二叉查找树还小吗 答案当然不是 树和 树的出现是因为另外一个问题 那就是磁盘 众所周知 操作的效率很低 那么 当在大量数据存储中 查询时我们不能一下子将所有数据加载到

    2026年3月17日
    2
  • bfs是什么意思_bfs轮

    bfs是什么意思_bfs轮Rubik 先生在发明了风靡全球的魔方之后,又发明了它的二维版本——魔板。这是一张有 8 个大小相同的格子的魔板:1 2 3 48 7 6 5我们知道魔板的每一个方格都有一种颜色。这 8 种颜色用前 8 个正整数来表示。可以用颜色的序列来表示一种魔板状态,规定从魔板的左上角开始,沿顺时针方向依次取出整数,构成一个颜色序列。对于上图的魔板状态,我们用序列 (1,2,3,4,5,6,7,8) 来表示,这是基本状态。这里提供三种基本操作,分别用大写字母 A,B,C 来表示(可以通过这些操作改变魔板

    2022年8月9日
    6
  • C++实现堆排序算法[通俗易懂]

    1.实现堆排序算法   用C++实现一个堆排序。2.实现思想① 先将初始文件R[1..n]建成一个大根堆,此堆为初始的无序区 ② 再将关键字最大的记录R[1](即堆顶)和无序区的最后一个记录R[n]交换, 由此得到新的无序区R[1..n-1]和有序区R[n],且满足R[1..n-1].keys≤R[n].key。③ 由于交换后新的根R[1]可能违反堆性质,故应将当前无序…

    2022年4月12日
    41
  • 使用Struts之ActionForm

    使用Struts之ActionForm使用Struts之鸟瞰ActionForm是窗体的对象化表示,它本身其实是个JavaBean,除了标准的getter与setter等方法之外,还提供有reset()、validate()等方法供Struts组件呼叫。当透过发送请求来到ActionServlet后,ActionServlet会从ActionMapping对象中得知所使用的ActionForm对象,这是在struts-con

    2025年6月20日
    3
  • 推荐几个在线工具excel转json,json转excel,json转pdf工具[通俗易懂]

    推荐几个在线工具excel转json,json转excel,json转pdf工具[通俗易懂]excel转json工具:http://www.yzcopen.com/doc/exceljsonjson转excel工具:http://www.yzcopen.com/doc/exceljsonjson转pdf表格工具:http://www.yzcopen.com/doc/jsonpdf

    2022年5月31日
    50

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号