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 变量。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 嵌入式学习网站推荐[通俗易懂]

    嵌入式学习网站推荐[通俗易懂]嵌入式学习网站推荐  http://blog.chinaunix.net/uid-2413049-id-158374.html转到这里来是为了自己日后好找:-)2.  TheFirstStopfortheLatestICsandComponents非常好的关于微处理器,DSP,可以编程控制器资讯的网站,更新非常快。强烈推荐一些领导级别的人常去,了解行

  • css画圆弧_css圆角样式

    css画圆弧_css圆角样式CSS3是样式表(stylesheet)语言的最新版本,它的一大优点就是支持圆角。网页设计大师NicholasZakas的最新文章,清晰易懂地解释了CSS3圆角的各个方面,非常值得学习。以下就是我翻译的中文版。=========================================CSS3圆角详解作者:NicholasZakas译者:阮一峰发表日期:2010年12月8日一、CSS3…

    2022年10月25日
  • 自己搭建git服务器_搭建git服务器web界面

    自己搭建git服务器_搭建git服务器web界面docker安装gitea服务器1.安装docker:yuminstalldocker-y2.启动docker服务:systemctlstartdocker3.查看docker版本:docker-v4.配置镜像加速:vi/etc/docker/deamon.json修改内容{ “registry-mirrors”:[ “http://reg-mirror.qiniu.com/”, “http://hub-mirror.c.163.com/” ]}5

  • 二级反渗透1T/H二级反渗透纯水机 纯净水反渗透设备 反渗透设备

    反渗透技术原理反渗透技术是美国六十年代后期为解决宇航员在太空的饮水问题而研制的高新技术,也是目前的膜分离技术。简单地说,反渗透装置是利用半透膜在压力差的作用下使含盐水脱盐纯化的设备,它能有效地去除水中的无机盐、细菌、病毒、色素、热源、重金属离子及农药、化肥、清洁剂、胶体物质等污染物。反渗透膜孔径非常小,一般在2-10埃左右,而水中的各种离子杂质的直径约为几十埃,病毒、细菌的直径为几百至几十万埃,因此这些物质都是无法透过反渗透膜的,被截止在膜的浓水端,随浓水排出,透过反渗透膜的即是无菌,无毒害且富氧的纯净

  • Android学习(简单使用Bottom Navigation Activity来实现底部导航栏)

    Android学习(简单使用Bottom Navigation Activity来实现底部导航栏)在我们实际编写程序时,不必每一个activity都要从零开始,利用好系统自带的模板往往可以起到事半功倍的效果。下面我们就来看看如何使用BottomNavigationActivity来完成简单的底部导航栏功能。先来看一下效果图吧:创建activity首先在创建面板,我们选择然后next,finish就OK了。创建成功以后我们来运行一下,发现已经基本实现了底部导航栏的功能了!但是还没有结…

    2022年10月31日
  • 《高可用MySQL》2 – 单机版MySQL主从配置「建议收藏」

    《高可用MySQL》2 – 单机版MySQL主从配置

发表回复

您的电子邮箱地址不会被公开。

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