def train_image_gen(train_list, batch_size=4, image_size=[1024, 384], crop_offset=690):
    # Arrange all indexes
    all_batches_index = np.arange(0, len(train_list))
    out_images = []
    out_masks = []
    image_dir = np.array(train_list['image'])
    label_dir = np.array(train_list['label'])
    while True:
        # Random shuffle indexes every epoch
        np.random.shuffle(all_batches_index)
        for index in all_batches_index:
            if os.path.exists(image_dir[index]):
                ori_image = cv2.imread(image_dir[index])
                ori_mask = cv2.imread(label_dir[index], cv2.IMREAD_GRAYSCALE)
                # Crop the top part of the image
                # Resize to train size
                train_img, train_mask = crop_resize_data(ori_image, ori_mask, image_size, crop_offset)
                # Encode
                train_mask = encode_labels(train_mask)

                # verify_labels(train_mask)
                out_images.append(train_img)
                out_masks.append(train_mask)
                if len(out_images) >= batch_size:
                    out_images = np.array(out_images)
                    out_masks = np.array(out_masks)
                    out_images = out_images[:, :, :, ::-1].transpose(0, 3, 1, 2).astype(np.float32) / (255.0 / 2) - 1
                    out_masks = out_masks.astype(np.int64)
                    yield out_images, out_masks
                    out_images, out_masks = [], []
            else:
                print(image_dir, 'does not exist.')
예제 #2
0
def val_image_gen(val_list,
                  batch_size=4,
                  image_size=[1024, 384],
                  crop_offset=690):
    all_batches_index = np.arange(0, len(val_list))

    out_images = []
    out_masks = []
    image_dir = np.array(val_list['image'])
    label_dir = np.array(val_list['label'])
    while True:
        np.random.shuffle(all_batches_index)
        for index in all_batches_index:
            if os.path.exists(image_dir[index]):
                ori_image = cv2.imread(image_dir[index])
                ori_mask = cv2.imread(label_dir[index], cv2.IMREAD_GRAYSCALE)
                val_img, val_mask = crop_val_resize_data(
                    ori_image, ori_mask, image_size, crop_offset)
                val_mask = encode_labels(val_mask)
                out_images.append(val_img)
                out_masks.append(val_mask)
                if len(out_images) >= batch_size:
                    out_images = np.array(out_images)
                    out_masks = np.array(out_masks)
                    out_images = out_images[:, :, :, ::-1].transpose(
                        0, 3, 1, 2).astype(np.float32) / (255.0 / 2) - 1
                    out_masks = out_masks.astype(np.int64)
                    yield out_images, out_masks
                    out_images, out_masks = [], []
            else:
                print(image_dir, 'does not exist.')
예제 #3
0
 def __getitem__(self, idx):
     ori_image = cv2.imread(self.images[idx])
     ori_mask = cv2.imread(self.labels[idx], cv2.IMREAD_GRAYSCALE)
     train_img, train_mask = crop_resize_data(ori_image, ori_mask)
     train_mask = encode_labels(train_mask)
     sample = [train_img.copy(), train_mask.copy()]
     if self.transform:
         sample = self.transform(sample)
     return sample
예제 #4
0
 def __getitem__(self, idx):
     img = self.data_list[idx]
     label = self.label_list[idx]
     img = cv2.imread(img)
     label = cv2.imread(label,0)
     img,label = crop_resize_data(img,label,self.crop_size,self.offset )
     img = tfs.ToTensor()(img)
     label = encode_labels(label)
     olabel = onehot_label(label)
     return img,olabel,label
    def get_lane_image(self, idx):
        #  self.img
        #  self.label_img 语义分割标签
        #  self.ins_img   嵌入空间,每个类一个平面
        ln = self.labels[idx]
        img_name = self.images[idx]

        self.img = cv2.imread(img_name, 1)  #uint8
        self.label_img = cv2.imread(ln, 0)  #uint8
        # self.label_img = np.array(self.label_img, dtype=np.int32)
        self.label_img = encode_labels(self.label_img)
예제 #6
0
def main(label_paths):
    out_array = AverageMeter()
    area_dict = {}
    for i in range(8):
        area_dict[i] = 0
    # num_dict = {}
    for s, path in enumerate(tqdm(label_paths)):
        ori_mask = cv2.imread(path, cv2.IMREAD_GRAYSCALE)
        encode_mask = encode_labels(ori_mask).astype('uint8')
        get_one_hot = np.eye(8)[encode_mask]
        get_one_hot = np.sum(np.sum(get_one_hot, 0), 0)
        out_array.update(get_one_hot.copy())
    return out_array.avg/100
 def __getitem__(self, idx):
     # log_file = open("logs/debug.txt", 'a+')
     # # print("\nimage: {}\nlabel: {}".format(self.images[idx], self.labels[idx]))
     # log_file.writelines("\nimage: {}\nlabel: {}".format(self.images[idx], self.labels[idx]))
     # log_file.close()
     ori_image = cv2.imread(self.images[idx])
     ori_mask = cv2.imread(self.labels[idx], cv2.IMREAD_GRAYSCALE)
     train_img, train_mask = crop_resize_data(ori_image, ori_mask)
     # Encode
     train_mask = encode_labels(train_mask)
     sample = [train_img.copy(), train_mask.copy()]
     if self.transform:
         sample = self.transform(sample)
     return sample
 def __getitem__(self, idx):
     pd.DataFrame(self.images).to_csv(
         'C:/Users/Yan/Desktop/项目1/car_lane_detection/logs/image.csv',
         index=True)
     print(idx)
     ori_image = cv2.imread(self.images[idx])
     ori_mask = cv2.imread(self.labels[idx], cv2.IMREAD_GRAYSCALE)
     train_img, train_mask = crop_resize_data(ori_image, ori_mask)
     # Encode
     train_mask = encode_labels(train_mask)
     sample = [train_img.copy(), train_mask.copy()]
     if self.transform:
         sample = self.transform(sample)
     return sample
    def __getitem__(self, idx):

        ori_image = cv2.imread(self.images[idx])
        if (ori_image is None):
            print("idx:{},path:{}".format(idx, self.images[idx]))
        ori_mask = cv2.imread(self.labels[idx], cv2.IMREAD_GRAYSCALE)
        if (ori_mask is None):
            print("idx:{},path:{}".format(idx, self.labels[idx]))
        train_img, train_mask = crop_resize_data(ori_image, ori_mask)
        # Encode
        train_mask = encode_labels(train_mask)
        sample = [train_img.copy(), train_mask.copy()]
        if self.transform:
            sample = self.transform(sample)
        return sample
    def __getitem__(self, idx):

        image_bytes = self.txn.get(self.images[idx].encode())
        image_bytes = np.array(bytearray(image_bytes), dtype=np.uint8)
        mask_bytes = self.txn.get(self.labels[idx].encode())
        mask_bytes = np.array(bytearray(mask_bytes), dtype=np.uint8)
        train_img = cv2.imdecode(image_bytes, cv2.IMREAD_COLOR)
        train_mask = cv2.imdecode(mask_bytes, cv2.IMREAD_GRAYSCALE)

        train_img, train_mask = crop_resize_data(train_img, train_mask)
        # Encode
        train_mask = encode_labels(train_mask)
        sample = [train_img.copy(), train_mask.copy()]
        if self.transform:
            sample = self.transform(sample)
        return sample
예제 #11
0
 def __getitem__(self, idx):
     # __getitem__函数,单张读取图片
     # 输入:图片的idx, 输出:经过裁剪、放缩、数据增强以及对label转换id的train_image,train_mask
     # 按照地址读入ori_image ori_label
     ori_image = cv2.imread(self.images[idx])
     if (ori_image is None):
         print("idx:{},path:{}".format(idx, self.images[idx]))
     ori_mask = cv2.imread(self.labels[idx], cv2.IMREAD_GRAYSCALE)
     if (ori_mask is None):
         print("idx:{},path:{}".format(idx, self.labels[idx]))
     # 对ori_image和ori_mask都进行裁剪和放缩得到理想size的图片,train_img,train_mask
     train_img, train_mask = crop_resize_data(ori_image, ori_mask)
     # 对mask进行id 转换--->train_mask
     train_mask = encode_labels(train_mask)
     # 复制train_img,train_mask 放入sample列表
     sample = [train_img.copy(), train_mask.copy()]
     # 有数据增强就做增强
     if self.transform:
         sample = self.transform(sample)
     return sample
예제 #12
0
    def __getitem__(self, idx):

        # image 数据读入
        ori_image = cv2.imread(self.images[idx])
        if ori_image is None:
            print('NoneTpye Object ori_image')
            time.sleep(60)
            ori_image = cv2.imread(self.images[idx])

        # label 数据读入
        ori_mask = cv2.imread(self.labels[idx], cv2.IMREAD_GRAYSCALE)
        if ori_mask is None:
            print('NoneTpye Object ori_mask')
            time.sleep(60)
            ori_mask = cv2.imread(self.labels[idx], cv2.IMREAD_GRAYSCALE)

        train_img, train_mask = crop_resize_data(ori_image, ori_mask)
        # Encode
        train_mask = encode_labels(train_mask)
        sample = [train_img.copy(), train_mask.copy()]
        if self.transform:
            sample = self.transform(sample)
        return sample