Giter VIP home page Giter VIP logo

Comments (5)

Chan-Sun avatar Chan-Sun commented on August 18, 2024

I think i've found the problem. type=mmfewshot.TFA in config file cannot be recognized as well as other repo algorithms, for example type=mmdet.retinanet.

Maybe It's mainly due to different file structure between mmfewshot and the other openmmlab repo such as mmdetection. So builder.py in mmfewshotcannot be correctly found for Registry(model) class.

Also mmfewshot is mainly built on mmcls and mmdet, so components in model TFA in repo mmfewshot, for example Faster RCNN are originally buildt and registered in mmdet, which makes Registry function fail to find them under mmfewshot

Switch to type=TFA and applying mmfewshot builder function to build models directly in MMFewShotArchitecture works fine for me currently.

from mmrazor.

pppppM avatar pppppM commented on August 18, 2024

Can you make a PR so we can develop it together? @Chan-Sun

from mmrazor.

Chan-Sun avatar Chan-Sun commented on August 18, 2024

Can you make a PR so we can develop it together? @Chan-Sun

that's cool, but i only use only detection part from mmfewshot and kd part from mmrazor. i'm not sure if it works well for other parts.

i'll try to make a PR when finishing this work.

from mmrazor.

pppppM avatar pppppM commented on August 18, 2024

Welcome!

from mmrazor.

Chan-Sun avatar Chan-Sun commented on August 18, 2024

This problem seems to be common on other openmmlab repo, for example mmocr.

Here is my solution.Take TFA model in mmfewshot as an example.

  1. for architecture code. Add class MMFewShotArchitecture and slightly modify the original BaseArchitecture code
# Copyright (c) OpenMMLab. All rights reserved.
from mmcv.cnn import MODELS
from mmcv.runner import BaseModule


class BaseArchitecture(BaseModule):
    """Base class for architecture.

    Args:
        model (:obj:`torch.nn.Module`): Model to be slimmed, such as
            ``DETECTOR`` in MMDetection.
    """

    def __init__(self, model, **kwargs):
        super(BaseArchitecture, self).__init__(**kwargs)
        #### modification code
        if isinstance(model,dict):
            self.model = MODELS.build(model)
        else:
            self.model = model
        

# Copyright (c) OpenMMLab. All rights reserved.
from mmrazor.models.builder import ARCHITECTURES
from mmfewshot.detection.models.builder import build_detector

@ARCHITECTURES.register_module()
class MMFewShotArchitecture(BaseArchitecture):
    """Architecture based on MMFewShot."""

    def __init__(self,**kwargs):

        #### This is for student model

        model = build_detector(kwargs["model"])
        super(MMFewShotArchitecture, self).__init__(model)
  1. for config code
model = dict(
 type='TFA',
………………
  1. For distillation framework in mmrazor, take SingleTeacherDistiller as example
    do not forget to modify build_teacher function
from mmfewshot.detection.models import build_detector
@DISTILLERS.register_module()
class SingleTeacherDistiller(BaseDistiller):
    def __init__(self,
                 teacher,
                 teacher_trainable=False,
                 teacher_norm_eval=True,
                 components=tuple(),
                 **kwargs):
        super().__init__(**kwargs)
        self.teacher = self.build_teacher(teacher)
    def build_teacher(self, cfg):

       ###This is for teacher model

        """Build a model from the `cfg`."""
        teacher = build_detector(cfg)
        return teacher

from mmrazor.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.