Skip to content
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

Open
ProjectDisR opened this issue Jun 13, 2023 · 6 comments
Open

irnet on coco #25

ProjectDisR opened this issue Jun 13, 2023 · 6 comments

Comments

@ProjectDisR
Copy link

ProjectDisR commented Jun 13, 2023

No description provided.

@Sierkinhane
Copy link
Member

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 :).

@Sierkinhane
Copy link
Member

@Tiiiktak

@Tiiiktak
Copy link

Hi @ProjectDisR, to train the deeplabv2 with coco, please follow the steps below

1.
add a dataset code in deeplabv2/libs/datasets/coco.py like

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.
And dont forget import it in deeplabv2/libs/datasets/__init__.py, like

...
from .coco import COCO

def get_dataset(name):
    return {
        ...
        "coco": COCO,
    }[name]

3.
We provide a template config file for coco, you should specify the data path before use

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 :)

@Sierkinhane
Copy link
Member

Sorry for the late reply. You can try the instructions above.

@Bala93
Copy link

Bala93 commented Jun 23, 2023

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 :).

Is this after applying crf to deeplab predictions ?

@Sierkinhane
Copy link
Member

It's the quality of pseudo labels.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants