Skip to content

Commit

Permalink
update dataset and network
Browse files Browse the repository at this point in the history
  • Loading branch information
lianqing11 committed Sep 7, 2019
1 parent a767d14 commit 0e01cf3
Show file tree
Hide file tree
Showing 41 changed files with 128,072 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
*.pyc
*.png
*.jpg
Empty file added dataset/__init__.py
Empty file.
128 changes: 128 additions & 0 deletions dataset/cityscapes_dataset.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
import os
import os.path as osp
import json
import numpy as np
import random
import matplotlib.pyplot as plt
import collections
import torch
import torchvision
from torch.utils import data
from PIL import Image
from .utils import RandomResizedCrop


def label_mapping(input, mapping):
output = np.copy(input)
for ind in range(len(mapping)):
output[input == mapping[ind][0]] = mapping[ind][1]
return np.array(output, dtype=np.float32)


class cityscapesDataSet(data.Dataset):
def __init__(self, root, list_path, max_iters=None, crop_size=(1024, 512), ignore_label=255, transform = None, set='val', dataset_info = None, need_label = False):
self.root = root
self.list_path = list_path
self.crop_size = crop_size
self.ignore_label = ignore_label
# self.mean_bgr = np.array([104.00698793, 116.66876762, 122.67891434])
self.img_ids = [i_id.strip() for i_id in open(list_path)]
if not max_iters==None:
self.img_ids = self.img_ids * int(np.ceil(float(max_iters) / len(self.img_ids)))
self.files = []
self.set = set
self.transform = transform
self.need_label = need_label
with open('./dataset/cityscapes_list/info.json', 'r') as fp:
dataset_info = json.load(fp)
self.mapping = np.array(dataset_info['label2train'], dtype=np.int)

# for split in ["train", "trainval", "val"]:
for name in self.img_ids:
name = name.split(" ")[0]
img_file = osp.join(self.root, "leftImg8bit/%s/%s" % (self.set, name))
lbl_name = "_".join(name.split("_")[:-1]) + "_gtFine_labelIds.png"
lbl_file = osp.join(self.root, "gtFine/%s/%s"%(self.set, lbl_name))
self.files.append({
"img": img_file,
"name": name,
"label": lbl_file
})

def __len__(self):
return len(self.files)

def __getitem__(self, index):
datafiles = self.files[index]

image = Image.open(datafiles["img"]).convert('RGB')
name = datafiles["name"]

if self.need_label == True:

label = Image.open(datafiles["label"])
label = label_mapping(np.asarray(label), self.mapping)
label = Image.fromarray(label)
if self.transform:
image, label = self.transform(image, label)
else:
if self.transform:
image = self.transform(image)


if self.need_label == True:

return image, label, name
else:
return image, name



class fake_cityscapesDataSet(data.Dataset):
def __init__(self, root, list_path, max_iters=None, crop_size=(1024, 512), ignore_label=255, transform = None, set='val', dataset_info = None, need_label = False):
self.root = root
self.list_path = list_path
self.crop_size = crop_size
self.ignore_label = ignore_label
# self.mean_bgr = np.array([104.00698793, 116.66876762, 122.67891434])
self.img_ids = [i_id.strip() for i_id in open(list_path)]
if not max_iters==None:
self.img_ids = self.img_ids * int(np.ceil(float(max_iters) / len(self.img_ids)))
self.files = []
self.set = set
self.transform = transform
self.need_label = True
with open('./dataset/cityscapes_list/info.json', 'r') as fp:
dataset_info = json.load(fp)
self.mapping = np.array(dataset_info['label2train'], dtype=np.int)

# for split in ["train", "trainval", "val"]:
for name in self.img_ids:
name = name.split(" ")[0]
img_file = osp.join(self.root, "leftImg8bit/%s/%s" % (self.set, name))
lbl_name = "_".join(name.split("_")[:-1]) + "_gtFine_labelIds.png"
lbl_file = osp.join(self.root, "gtFine/%s/%s"%(self.set, lbl_name))
self.files.append({
"img": img_file,
"name": name,
"label": lbl_file
})

def __len__(self):
return len(self.files)

def __getitem__(self, index):
datafiles = self.files[index]

image = Image.open(datafiles["img"]).convert('RGB')
name = datafiles["name"]

if self.need_label == True:

label = np.zeros((560, 480), dtype=np.uint8)
label = Image.fromarray(label)
if self.transform:
image, label = self.transform(image, label)

return image, label, name

Binary file added dataset/cityscapes_list/.DS_Store
Binary file not shown.
88 changes: 88 additions & 0 deletions dataset/cityscapes_list/info.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
{
"classes":19,
"label2train":[
[0, 255],
[1, 255],
[2, 255],
[3, 255],
[4, 255],
[5, 255],
[6, 255],
[7, 0],
[8, 1],
[9, 255],
[10, 255],
[11, 2],
[12, 3],
[13, 4],
[14, 255],
[15, 255],
[16, 255],
[17, 5],
[18, 255],
[19, 6],
[20, 7],
[21, 8],
[22, 9],
[23, 10],
[24, 11],
[25, 12],
[26, 13],
[27, 14],
[28, 15],
[29, 255],
[30, 255],
[31, 16],
[32, 17],
[33, 18],
[-1, 255]],
"label":[
"road",
"sidewalk",
"building",
"wall",
"fence",
"pole",
"light",
"sign",
"vegetation",
"terrain",
"sky",
"person",
"rider",
"car",
"truck",
"bus",
"train",
"motocycle",
"bicycle"],
"palette":[
[128,64,128],
[244,35,232],
[70,70,70],
[102,102,156],
[190,153,153],
[153,153,153],
[250,170,30],
[220,220,0],
[107,142,35],
[152,251,152],
[70,130,180],
[220,20,60],
[255,0,0],
[0,0,142],
[0,0,70],
[0,60,100],
[0,80,100],
[0,0,230],
[119,11,32],
[0,0,0]],
"mean":[
73.158359210711552,
82.908917542625858,
72.392398761941593],
"std":[
47.675755341814678,
48.494214368814916,
47.736546325441594]
}
Loading

0 comments on commit 0e01cf3

Please sign in to comment.