Comments (6)
I think it's better for you to report results with Deeplabv2(should not be difficult). The mainstream choice of segmentation is Deeplabv2, like SDCA, FADA paper.
from proda.
Hi, this modified ASPP is borrowed from IJCAI (2020) and IJCV paper and is not the same as the modified ASPP in Deeplabv3 or Deeplabv3+.
Also, as the ablation study in the Deeplabv3 paper, the most effective modification in ASPP is image-level features pooling with the multi-grid method. And their effective modification is not included in our code. So we think the modified ASPP in our code will not change the result.
Why we do not use the original ASPP in Deeplabv2? Because we need to calculate the prototype, this needs a feature point(dim:1xC) to represent a pixel in the image, that is to say, we need an FC layer or 1x1 Conv layer as a classifier. So we borrow this block from IJCAI (2020) and IJCV paper
from proda.
And we can see the ablation study in our paper. The conventional self-training is trained by our modified ASPP, the performance is similar to the original ASPP in deeplabv2(45.9 mIoU reported in CRST).
from proda.
Why not modify the out_channels=256
of Conv2d
in ASPP and add an extra Conv2d
with in_channels=256, out_channels=num_classes
to achieve this? I think this is the easiest way to get a feature point of each pixel in an image. Have you tried and proved useless of this way?
Please forgive me if this is a stupid question. 😀
class MultiOutASPP(nn.Module):
def __init__(self, inplanes, dilation_series=[6, 12, 18, 24], padding_series=[6, 12, 18, 24], outplanes=19):
super(MultiOutASPP, self).__init__()
self.conv2d_list = nn.ModuleList()
for dilation, padding in zip(dilation_series, padding_series):
self.conv2d_list.append(
nn.Conv2d(inplanes, 256, kernel_size=3, stride=1, padding=padding, dilation=dilation, bias=True))
self.classifier = nn.Conv2d(256, outplanes, kernel_size=1, padding=0, dilation=1, bias=True)
for m in self.conv2d_list:
m.weight.data.normal_(0, 0.01)
self.classifier.weight.data.normal_(0, 0.01)
def forward(self, x):
feat = self.conv2d_list[0](x)
for i in range(len(self.conv2d_list) - 1):
feat += self.conv2d_list[i + 1](x)
out = self.classifier(feat)
return {'feat': feat, 'out': out}
from proda.
If we modify the out_channels=256 of Conv2d in ASPP, the capability of ASPP will smaller than standard ASPP(out_channels=1024). For a fair comparison with Seg_Uncertainty, we borrow this block from it.
from proda.
Anything new? Is there anyone that has reproduced ProDA with minimum changes of ASPP?
from proda.
Related Issues (20)
- Discriminator model
- Missing key(s) when loading the pre-trained simclr model parameters in stage 3 HOT 7
- Training Stage Loss HOT 2
- pretrained/simclr/r101_1x_sk0.pth
- two GPUs HOT 1
- About the function full2weak() and label_strong_T() HOT 5
- source-only pretrained model
- Exact command line of warmup stage HOT 3
- The kl_div loss of self distillation HOT 1
- About the flip Image HOT 1
- About the mIoU metric HOT 1
- Good job! Some questions about the file calc_prototype.py, thanks!
- the training in Synthia - > cityscapes warmup
- Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu! HOT 1
- Potential Bug issue
- Which pictures of Cityscapes dataset are use to make _qualitative results of semantic segmentation_? HOT 1
- UMAP visualization
- calc_prototype.py HOT 1
- about settings
- How can I experiment with ProDA for 13classes?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from proda.