-
Notifications
You must be signed in to change notification settings - Fork 321
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
Enhancing Object Detection #340
Labels
Milestone
Comments
oke-aditya
added
enhancement
New feature or request
help wanted
Extra attention is needed
labels
Nov 6, 2020
I think option 1 is better as well and I think it's better aligned with the design principles of PyTorch Lightning (and I think it makes a lot of sense w.r.t. #286 as you mentioned). I would love to get involved in this effort. What's the status on this so far? |
Unsure if it would go to bolts. But this API is implemented in Quickvision ! |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
🚀 Feature
As discussed. The following can be added.
F1. Support for backbones with FPNs. There is torchvision
resnet_fpn_support
which we can use directly.F2. Support for Non FPN backbones. I have a hacky way to do this which won't support
trainable_backbone_layers_parameter
Motivation
resnet_50
. But with F1 it would be possible to useresnet101, resnext, etc
.Pitch
There are 2 ways to support this, I feel both are equally good it's a matter of design choice.
Pitch 1 (A simpler interface to user)
Where we define
create_fastercnn_backbone
function. This involves handling bothresnet_fpn_backbone
and a very hacky way ofnon_fpns
. We can support backbone asnn.Module
too, this will involve additional if statement.This is kind of parameter overloading might not be very wise, but does the job with simple APIs.
Pitch 2 (Little bit pythonic but slightly complex)
Use a staticmethod to create backbone and allow to pass Backbone as
nn.Module
This involves 2 steps but some people consider this more organized.
API would be.
This is tricky API. But I'm not sure what convention does lightning follow.
1 is simpler to user. We can re-use it, as it is a function which can be outside the
model
file.2 is slightly involved, also couples this part of backbone with FRCNN, thus for newer models we would need this static method to be defined again. (E.g. for retinanet)
Alternatives
I think the other way is to start creating abstract classes and inheriting them for such stuff. But again this makes API very complex and hard to maintain. People would be bound to use them over and over.
IMHO
Additional context
Hmm, I am considering to couple this with #286 . The Non backbone code can be used in transfer learning as well. (I have made it work)
cc @ananyahjha93 @Borda
The text was updated successfully, but these errors were encountered: