-
Notifications
You must be signed in to change notification settings - Fork 4
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
[RFC] Layers API in Quickvision #61
Comments
It seems that this will make this repo a little complicated 🤔 Although detection models (yolo/ssd/retinanet) have shard obstruct modules ( Or another thing to be determined is which layers we should add here? |
Yes, what would happen at places is our If we could collectively place them under layers, it would be easier to maintain and test. For detection and segementation models, if we decompose. as you metioned. These are bit high level blocks, and this abstraction is achieved by components, making them re-usable, but still they are model specific . E.g. Let me illustrate where layers can be helpful. Layers can provide simple Maybe the word layers doesn't make sense? Registration mechanisms are confusing, and not even used in torchvision / bolts. |
Question is how to determine if certain block is A high level logic. If we are pretty sure that a block of PyTorch
Model specific layers are something innovative in the paper, and appears very rare in literature. |
Agree here, |
Yes, Detr is using
Our discussion about YOLO did have this point, #48 and we decided to avoid hub there 😄 |
I suggest when people add new models, they might not have idea of how these stuff work.
I don't think people might need any additional file, if they need they can create it but these are bare minimum. Currently we don't have Later we can refactor as we need, since we need to maintain the repo, |
Somehow I understand that decomposition kind of distributes our code here and there, but I think it will be only upto this level. But this keeps flexibility, again authors who want to add model can simple write all code in a folder, we can refactor it. |
One question here, add In other words, people can simply use Or equivalently, we should determine the principle of adding a new layer? |
Again @zhiqwang aim is not to go into such super hyper details, we use layers which are used by papers, most use a simple version of mish and not so experimenal. These are really hard decisions for end user too. We can keep simpler versions E.g it can simply be Possibilities are really endless. We can provide stuff that is used by papers, or something common, But if we get sufficient user requests we can add these (already we are adding layers which pytorch didn't so there is some limit to how much users might demand). |
@oke-aditya You can add support for Echo. We will be releasing beta version soon (New Year's eve) containing optimizers, activations and attention layers. Subsequent releases will contain all custom layers (Conv, Regularizers, etc...) |
Let's go ahead and see what happens next! |
@digantamisra98 people are free to use Echo along with this, since adding Echo will add it's sub depedencies which will probably bulk up this library. It would also be hard to keep consistent API of this library and echo implementations. So as of now, I'm not quite sure how it will work out. |
@oke-aditya Absolutely understandable. |
Another point with this API.
|
🚀 Feature
A layers API for set of re-usable layers.
Motivation
Most models tend to re-use Layers. Note that this is different from components that we currently have.
Components are FPNs, Backbones, Heads such as YOLO Head, etc.
Layers are fundamentally small and less complicated.
E.g. Activation Functions, Small building blocks such as CSP Layer, simple Tranformer layers,
Squeeze-Excite Block.
We would need to commonly re-use layers across various tasks. E.g. Heads and FPNs are specific to Object Detection / Segmentation, but layers are quite generic. These can be re-used in any NN architecture.
Pitch
We do have layers folder, I think it's time to populate it.
Thinking of some minor stuff e.g. Should we decompose layers to Activation, blocks etc ?
I think we can avoid this for now and later introduce this if the API needs it.
Alternatives
I think this feature addition is great, these will allow us to easily decompose models, re-use, test and maitain code easily.
Additional context
Let's start simple by adding activations and simple blocks, we can move further.
cc @zhiqwang @hassiahk
The text was updated successfully, but these errors were encountered: