Comments (2)
maybe a newer version of tensroRT and ONNX will support this ?
anyway, your problem is that current anti-aliasing layer uses 'reflect' padding (this is what the original article suggested):
def forward(self, input):
input_pad = F.pad(input, (1, 1, 1, 1), 'reflect')
return F.conv2d(input_pad, self.filt, stride=self.stride, padding=0, groups=input.shape[1])
you can use an implementation of anti-aliasing without padding:
class AntiAliasDownsampleLayerD(nn.Module):
def __init__(self, channels):
super(AntiAliasDownsampleLayerD, self).__init__()
self.channels = channels
a = torch.tensor([1., 2., 1.])
filt = (a[:, None] * a[None, :]).clone().detach()
filt = filt / torch.sum(filt)
self.filt = filt[None, None, :, :].repeat((self.channels, 1, 1, 1)).cuda().half()
def forward(self, input):
if input.type() != self.filt.type():
self.filt = self.filt.to(device=input.device, dtype=input.dtype)
return F.conv2d(input, self.filt, stride=2, padding=1, groups=input.shape[1])
notice that this change is not bit-accurate, so you will need to retrain your models. however, you should reach the same accuracy, the 'reflect' padding doesn't contribute a lot
from asl.
maybe a newer version of tensroRT and ONNX will support this ?
anyway, your problem is that current anti-aliasing layer uses 'reflect' padding (this is what the original article suggested):
def forward(self, input): input_pad = F.pad(input, (1, 1, 1, 1), 'reflect') return F.conv2d(input_pad, self.filt, stride=self.stride, padding=0, groups=input.shape[1])
you can use an implementation of anti-aliasing without padding:
class AntiAliasDownsampleLayerD(nn.Module): def __init__(self, channels): super(AntiAliasDownsampleLayerD, self).__init__() self.channels = channels a = torch.tensor([1., 2., 1.]) filt = (a[:, None] * a[None, :]).clone().detach() filt = filt / torch.sum(filt) self.filt = filt[None, None, :, :].repeat((self.channels, 1, 1, 1)).cuda().half() def forward(self, input): if input.type() != self.filt.type(): self.filt = self.filt.to(device=input.device, dtype=input.dtype) return F.conv2d(input, self.filt, stride=2, padding=1, groups=input.shape[1])
notice that this change is not bit-accurate, so you will need to retrain your models. however, you should reach the same accuracy, the 'reflect' padding doesn't contribute a lot
It work! Thank you very much.
from asl.
Related Issues (20)
- How can I normalize these datasets NUS-WIDE and Open Image?
- Some questions about the 'clamp' operation
- Can this be used for multilabel dataset in classification HOT 1
- Unit tests are invalid
- 怎么样多卡训练,谢谢。
- question about data augmentation HOT 3
- What is the best practice to increase the number of tags of an existing model without retraining the whole model again?
- How to pass weights to ASL?
- the problem of shifted probability HOT 1
- 如何能够实现自适应的超参数?
- Some questions about openimages v6 datasets? HOT 1
- Do you have Tensorflow implementation? HOT 1
- Hello
- In my task,it alwasy return nan,May be it is not as wide use as BCE? HOT 3
- Maybe a Bug HOT 1
- How to multi-GPU training
- ResNet101+ASL in MS-COCO HOT 7
- target by object area
- bug: this class equals to nn.CrossEntropyLoss with labelsoothing
- Adaptive Asymmetry
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 asl.