-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
irnet on coco #25
Comments
We got ~0.42 on COCO, similar with yours. I will try to upload the training code for deeplabv2 and hyper-params in this weekend. I‘m on a business trip :). |
Hi @ProjectDisR, to train the deeplabv2 with coco, please follow the steps below 1. from __future__ import absolute_import, print_function
import os.path as osp
import cv2
import numpy as np
import torch
from PIL import Image
from torch.utils import data
import torchvision.datasets
from .base import _BaseDataset, _BaseDatasetTest, _BaseDatasetCotrain
class COCO(_BaseDataset):
def __init__(self, label_dir=None, **kwargs):
self.label_dir = label_dir
super(COCO, self).__init__(**kwargs)
def _set_files(self):
if self.split in ["train", "test", "val"]:
if self.split in ["val", "test"]:
self.label_dir = osp.join(self.root, "mask", f"{self.split}2014")
self.root = osp.join(self.root, f"{self.split}2014")
ann_file = osp.join(self.root, f"../annotations/instances_{self.split}2014.json")
self.coco = torchvision.datasets.CocoDetection(
root=self.root, annFile=ann_file)
file_list = self.coco.ids
self.files = file_list
# self.file_names = [self.coco.coco.imgs[_id]['file_name'] for _id in self.files]
else:
raise ValueError("Invalid split name: {}".format(self.split))
def _load_data(self, index):
image_id = self.files[index]
# image_name = self.file_names[image_id]
image_name = self.coco.coco.imgs[image_id]['file_name']
image_path = osp.join(self.root, image_name)
if self.split in ["val", "test"]:
label_path = osp.join(self.label_dir, f"{image_id}.png")
else:
label_path = osp.join(self.label_dir, image_name.replace('.jpg', '.png'))
image = cv2.imread(image_path, cv2.IMREAD_COLOR).astype(np.float32)
label = np.asarray(Image.open(label_path), dtype=np.int32)
return str(image_id), image, label 2. ...
from .coco import COCO
def get_dataset(name):
return {
...
"coco": COCO,
}[name] 3. EXP:
ID: coco14_clims_imagenet_pretrained
OUTPUT_DIR: data
DATASET:
NAME: coco
ROOT: /path/to/your/COCO14
LABEL_DIR: /path/to/your/pseudo/labels/
LABELS: ./data/datasets/coco/labels.txt
N_CLASSES: 81
IGNORE_LABEL: 255
SCALES: [0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0]
SPLIT:
TRAIN: train
VAL: val
TEST: test
DATALOADER:
NUM_WORKERS: 0
IMAGE:
MEAN:
R: 122.675
G: 116.669
B: 104.008
SIZE:
BASE:
TRAIN: 321
TEST: 513
MODEL:
NAME: DeepLabV2_ResNet101_MSC
N_BLOCKS: [3, 4, 23, 3]
ATROUS_RATES: [6, 12, 18, 24]
INIT_MODEL: weights/deeplabv1_resnet101-imagenet.pth
SOLVER:
BATCH_SIZE:
TRAIN: 10
TEST: 1
ITER_MAX: 100000
ITER_SIZE: 2
ITER_SAVE: 5000
ITER_TB: 100
LR_DECAY: 10
LR: 2.5e-4
MOMENTUM: 0.9
OPTIMIZER: sgd
POLY_POWER: 0.9
WEIGHT_DECAY: 5.0e-4
AVERAGE_LOSS: 20
CRF:
ITER_MAX: 10
POS_W: 3
POS_XY_STD: 1
BI_W: 4
BI_XY_STD: 67
BI_RGB_STD: 3 After that, please train the deeplab for coco in the same way as for voc :) |
Sorry for the late reply. You can try the instructions above. |
Is this after applying crf to deeplab predictions ? |
It's the quality of pseudo labels. |
No description provided.
The text was updated successfully, but these errors were encountered: