Skip to content
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

feature request: "a trou" (with hole algorithm) #1815

Closed
laurentk67 opened this issue Apr 7, 2016 · 13 comments
Closed

feature request: "a trou" (with hole algorithm) #1815

laurentk67 opened this issue Apr 7, 2016 · 13 comments
Assignees
Labels
stat:contribution welcome Status - Contributions welcome type:feature Feature requests

Comments

@laurentk67
Copy link

To generate dense feature maps (e.g. semantic segmentation) the convolution and the maxpooling operators should have the option to define "holes" in the kernel.
The concept is used in the paper:
Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs
(Liang-Chieh Chen, George Papandreou, Iasonas Kokkinos, Kevin Murphy, Alan L. Yuille)

and it is implemented in the excellent deeplab library based on Caffe.

@martinwicke
Copy link
Member

I believe this is a duplicate of #889, which contains a workaround. I'll close this one, but we still have to fix it.

@vrv
Copy link

vrv commented Apr 8, 2016

It's not a duplicate, atrous convolution is adding holes in the input patch, whereas #889 is about dense patches but large strides.

@vrv vrv reopened this Apr 8, 2016
@martinwicke martinwicke added enhancement stat:contribution welcome Status - Contributions welcome labels Apr 8, 2016
@laurentk67
Copy link
Author

Hello Martin,

Thanks for the super quick reply.
I attached a short PPT to illustrate the a-trou Algorithm.

Let me know if you need additional details.
Your tutorial on deep dream was great !!

On Thu, Apr 7, 2016 at 5:12 PM, Martin Wicke notifications@github.com
wrote:

I believe this is a duplicate of #889
#889, which contains a
workaround. I'll close this one, but we still have to fix it.


You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHub
#1815 (comment)

@fyu
Copy link

fyu commented Apr 8, 2016

For future reference, this is supported in Caffe master branch now and it is one of the features in Caffe rc3 https://github.com/BVLC/caffe/releases/tag/rc3. It is called dilation in convolution parameter and added by pull request BVLC/caffe#3487.

There was detailed discussion about whether this feature should be named dilation, hole or atrous in this pull request BVLC/caffe#3452. Relevant discussion started on Dec 18, 2015 in the pull request. This feature is eventually called dilation in convolution or dilated convolution following the term in Holschneider et al. (1987). The Caffe developers concluded that "dilated convolution" is a historically more accurate name than "à trous convolution".

@martinwicke
Copy link
Member

@gpapan I assigned you based on your email to @yaroslavvb. Thanks!

@gpapan
Copy link

gpapan commented Apr 15, 2016

Thanks. This will be ready in the next few days.

@gpapan
Copy link

gpapan commented Apr 22, 2016

The change is in the process of being committed to github's Tensorflow.

@vrv vrv closed this as completed in c1aa642 Apr 22, 2016
@fyu
Copy link

fyu commented Apr 22, 2016

Thank @gpapan for adding this to TensorFlow!

@gpapan
Copy link

gpapan commented Apr 27, 2016

You are very welcome @fyu! Hope that people find this feature useful.

@laurentk67
Copy link
Author

Hi,
Thank you for having implemented the new feature. I'm doing some test and so far it looks great. What is the reason the regular stride parameter has been removed from the API ?
Does it make sense to have dilated input map processed with different overlapped receptive field (stride parameter) ?

all the best
Laurent
Sent from my iPhone

On Apr 27, 2016, at 8:16 PM, George Papandreou notifications@github.com wrote:

You are very welcome @fyu! Hope that people find this feature useful.


You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHub

@gpapan
Copy link

gpapan commented Apr 28, 2016

@laurentk67
I have not yet come across a use case that needs both stride > 1 and rate > 1, so I decided to omit the stride parameter from the API:
You typically use atrous_conv2d() in order to preserve the spatial resolution of your input feature map, whereas conv2d() with stride greater than one lowers the resolution. Not exposing conv2d's stride parameter thus prevents the user from using atrous convolution incorrectly. If some legitimate use case of atrous convolution comes up where both stride and rate may be greater than one, we can easily add a stride parameter and pass it along to conv2d().

@chris-scott
Copy link

Having atrous convolution in TensorFlow is great - thank you @gpapan. I'd like access to strides for learning multi-scale raw audio filters, where using a stride of 1 is computationally infeasible.

@martinwicke
Copy link
Member

You should file a new issue with that feature request, I doubt it will be seen hidden in this thread.

@aselle aselle added type:feature Feature requests and removed enhancement labels Feb 9, 2017
fsx950223 pushed a commit to fsx950223/tensorflow that referenced this issue Nov 28, 2023
fsx950223 pushed a commit to fsx950223/tensorflow that referenced this issue Nov 28, 2023
…velop-upstream-roctracer-piptest

follow-up tensorflow#1815 to fix SWDEV-352934
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
stat:contribution welcome Status - Contributions welcome type:feature Feature requests
Projects
None yet
Development

No branches or pull requests

7 participants