youngwanLEE / centermask2

[CVPR 2020] CenterMask : Real-time Anchor-Free Instance Segmentation
Other
778 stars 159 forks source link

ERROR: python train_net.py #70

Closed KangolHsu closed 3 years ago

KangolHsu commented 3 years ago

I run in cmd : python train_net.py --config-file "configs/centermask/centermask_R_50_FPN_ms_3x.yaml" --num-gpus 1 error :

Traceback (most recent call last): File "train_net.py", line 230, in args=(args,), File "d:\segmentation\detectron2-0.3\detectron2\engine\launch.py", line 62, in launch main_func(args) File "train_net.py", line 212, in main trainer = Trainer(cfg) File "train_net.py", line 46, in init data_loader = self.build_train_loader(cfg) File "train_net.py", line 112, in build_train_loader return build_detection_train_loader(cfg, mapper) File "d:\segmentation\detectron2-0.3\detectron2\config\config.py", line 201, in wrapped explicit_args = _get_args_from_config(from_config, args, *kwargs) File "d:\segmentation\detectron2-0.3\detectron2\config\config.py", line 236, in _get_args_from_config ret = from_config_func(args, **kwargs) TypeError: _train_loader_from_config() takes 1 positional argument but 2 were given

Why this error occurred?

Laulian commented 3 years ago

@KangolHsu the same error occurred,have you solved it yet?

Peter-weng commented 3 years ago

i think it's detectron2 update some core so that make this error! if your used old version maybe solve this problem,if you dont know how to fix it

haderalim commented 3 years ago

Have you solved it yet?

ghost commented 3 years ago

return build_detection_train_loader(cfg=cfg,mapper= mapper) it works for me

KangolHsu commented 3 years ago

@Peter-weng Maybe you are right, I use the latest version :v0.3 @doduythanh021199 I tried ,did not work for v0.3

KangolHsu commented 3 years ago

@doduythanh021199 new error: Traceback (most recent call last): File "D:/实例分割/github/centermask2-master/train_net.py", line 232, in args=(args,), File "d:\实例分割\detectron2-0.3\detectron2\engine\launch.py", line 62, in launch main_func(*args) File "D:/实例分割/github/centermask2-master/train_net.py", line 214, in main trainer = Trainer(cfg) File "D:/实例分割/github/centermask2-master/train_net.py", line 53, in init super(DefaultTrainer, self).init(model, data_loader, optimizer) TypeError: init() takes 1 positional argument but 4 were given

Peter-weng commented 3 years ago

@KangolHsu ok you meet the same error as me,so i can help you! you just need to delete some core in train_net.py just like this, it work for me.

`class Trainer(DefaultTrainer):

def __init__(self, cfg):

    super().__init__(cfg)`
ghost commented 3 years ago

@doduythanh021199 new error: Traceback (most recent call last): File "D:/实例分割/github/centermask2-master/train_net.py", line 232, in args=(args,), File "d:\实例分割\detectron2-0.3\detectron2\engine\launch.py", line 62, in launch main_func(*args) File "D:/实例分割/github/centermask2-master/train_net.py", line 214, in main trainer = Trainer(cfg) File "D:/实例分割/github/centermask2-master/train_net.py", line 53, in init super(DefaultTrainer, self).init(model, data_loader, optimizer) TypeError: init() takes 1 positional argument but 4 were given

I wrote new train_net.py without the class Trainer and it runs 👍

haderalim commented 3 years ago

@doduythanh021199 new error: Traceback (most recent call last): File "D:/实例分割/github/centermask2-master/train_net.py", line 232, in args=(args,), File "d:\实例分割\detectron2-0.3\detectron2\engine\launch.py", line 62, in launch main_func(*args) File "D:/实例分割/github/centermask2-master/train_net.py", line 214, in main trainer = Trainer(cfg) File "D:/实例分割/github/centermask2-master/train_net.py", line 53, in init super(DefaultTrainer, self).init(model, data_loader, optimizer) TypeError: init() takes 1 positional argument but 4 were given

I wrote new train_net.py without the class Trainer and it runs 👍

Can you share with us the new train_net.py? And is the training process was completely successful without "Trainer" or there are other errors happen with you?

KangolHsu commented 3 years ago

This is my Solution by changing code in 'train_net.py':

  1. replace 'super(DefaultTrainer, self).init(model, data_loader, optimizer)' with 'super().init(cfg)' 2.replace 'return build_detection_train_loader(cfg,mapper)' with 'return build_detection_train_loader(cfg, mapper=mapper)'
Peter-weng commented 3 years ago

@KangolHsu Actually,number 2.replace 'return build_detection_train_loader(cfg,mapper)' with 'return build_detection_train_loader(cfg, mapper=mapper) maybe not necessary to change. Have you ever test your train model ? maybe the model cant work normal

Traderain commented 3 years ago

Fixed it in my fork if anyone needs it.

Peter-weng commented 3 years ago

@Traderain hi,i see your fork,you seem like just change only one place. super(DefaultTrainer, self).__init__(model, data_loader, optimizer) -> super().__init__(model, data_loader, optimizer) and i dont know why this is work.it see the same job to init the defaultTrainer class,thank your to reply.

Traderain commented 3 years ago

@Peter-weng it works now

abubakar2141731 commented 3 years ago

Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved

Modified by Youngwan Lee (ETRI), 2020. All Rights Reserved.

import logging import os from collections import OrderedDict import torch from torch.nn.parallel import DistributedDataParallel from detectron2.data.datasets import register_coco_instances

import detectron2.utils.comm as comm from detectron2.data import MetadataCatalog, build_detection_train_loader from detectron2.engine import DefaultTrainer, default_argument_parser, default_setup, hooks, launch from detectron2.utils.events import EventStorage from detectron2.evaluation import ( CityscapesInstanceEvaluator, COCOPanopticEvaluator, DatasetEvaluators, LVISEvaluator, PascalVOCDetectionEvaluator, SemSegEvaluator, verify_results, ) from centermask.evaluation import COCOEvaluator from detectron2.modeling import GeneralizedRCNNWithTTA

from detectron2.data.dataset_mapper import DatasetMapper from centermask.config import get_cfg from centermask.checkpoint import AdetCheckpointer

if name == 'main':

Register Datasets

name = "foodtrain" json_file = "/content/data/DETR/d_training_segmentation/aggregated_coco.json" image_root = "/content/data/DETR/d_training_segmentation/images"

test data

name_val = "foodtest" json_file_val = "/content/data/DETR/d_training_segmentation/aggregated_coco.json" image_root_val = "/content/data/DETR/d_training_segmentation/images" register_coco_instances(name_val, {} ,json_file_val,image_root_val) register_coco_instances(name, {} ,json_file,image_root)

Visualizing datasets

train_dicts = get_train_dicts()

for d in random.sample(train_dicts, 30):

print(d)

img = cv2.imread(d["file_name"])

visualizer = Visualizer(img[:,:,::-1], metadata=openimages_train_metadata, scale=0.5)

vis = visualizer.draw_dataset_dict(d)

cv2.imshow("image", vis.get_image()[:,:,::-1])

cv2.waitKey()

cfg = get_cfg() cfg.merge_from_file("/content/drive/MyDrive/centermask2/configs/centermask/centermask_lite_V_19_slim_eSE_FPN_ms_4x.yaml") cfg.DATASETS.TRAIN = ("foodtrain",) cfg.DATASETS.TEST = ("foodtest")

os.makedirs(cfg.OUTPUT_DIR, exist_ok=True) trainer = DefaultTrainer(cfg) trainer.resume_or_load(resume=False) trainer.train()

abubakar2141731 commented 3 years ago

use this its is working!

youngwanLEE commented 3 years ago

This problem is fixed.

Please open this issue again if you find another problem.