Latest commit

History

17 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

CustomNetworkLayers

###################################################################

Learning Energy Based Inpainting for Optical Flow

Christoph Vogel, Patrick Knoebelreiter and Thomas Pock

ACCV 2018

Copyright 2018 Graz University of Technology (Christoph Vogel)

###################################################################

About: The repository holds several custom network layers. Some of which were used in my recent optical flow project: Learning Energy Based Inpainting for Optical Flow.

The additional and necessary libraries

  • ImageUtilities
  • CUDA Programming model are not included.

To download those packages follow the links: https://developer.nvidia.com/cuda-zonehttps://github.com/VLOGroup/imageutilities and read the licensing and installation information provided there.

=====================================================================

DISCLAIMER: This software has been rewritten for the sake of providing an implementation in a recent language. Therefore, the results produced by the code may differ from those presented in the paper [1]. Results are also always subject to the training procedure, training set, etc.

=====================================================================

IMPORTANT: If you use this software you should cite the following in any resulting publication:

[1] Learning Energy Based Inpainting for Optical Flow
C. Vogel, P. Knoebelreiter and T. Pock
In ACCV, Perth, Australia, December 2018

INSTALLING & RUNNING

  1. Download and install PyTorch from https://pytorch.org/ and similarly acquire ImageUtilities from https://github.com/VLOGroup/imageutilities. Compile ImageUtilities and if desired create a system variable pointing to the installation path of the Image Utilities.

  2. Compile the custom layers by changing to the respective directory and execute 'python setup.py install' on the command line. Make sure that PyTorch and ImageUtilities are installed. Also verify the installation path to the ImageUtilities library in the file setup.py.

CONTENT

  1. The folder 'cudaTV' contains the Optimization Layer from the ACCV paper. More precisely this is the TV version. Contained is a PyTorch layer: 'TVInpainting.py' that can be used directly after compilation succeeds. Note the 'id' parameter. This one ensures that the buffers are assigned to the correct instantiation of the layer. This allows one to have multiple of these layers executed, for instance to build a hierarchical scheme as was done for optical flow computation. For now the ids are limited to 0..9 and each layer should have a different id. With a trivial change in the code (setting uniqueIds in TVInpaintFista.h to a different value) one can have more layers.
  2. The folder 'cudaTGV' contains the TGV version of the optimization layer used in the ACCV paper.
  3. The folder QuadFitting holds a version of our quadratic fitting procedure through which we can backpropagate through. That code was also used in our ACCV paper.
  4. The folder cudaMedian implements a weighted median Layer. Ie. we can learn the weights of a weighted median Filter. Such a filter is used in popular optical flow methods, eg. in Sun et al. 'Secrets of Optical Flow Estimation and Their Principles' method. Here we have a learnable version of that filter (ie. we can learn the weights).

About

The repository holds several custom network layers. Some of which were used in my recent optical flow project: Learning Energy Based Inpainting for Optical Flow.

Resources

Stars

7 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

17 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

CustomNetworkLayers

###################################################################

Learning Energy Based Inpainting for Optical Flow

Christoph Vogel, Patrick Knoebelreiter and Thomas Pock

ACCV 2018

Copyright 2018 Graz University of Technology (Christoph Vogel)

###################################################################

About: The repository holds several custom network layers. Some of which were used in my recent optical flow project: Learning Energy Based Inpainting for Optical Flow.

The additional and necessary libraries

  • ImageUtilities
  • CUDA Programming model are not included.

To download those packages follow the links: https://developer.nvidia.com/cuda-zonehttps://github.com/VLOGroup/imageutilities and read the licensing and installation information provided there.

=====================================================================

DISCLAIMER: This software has been rewritten for the sake of providing an implementation in a recent language. Therefore, the results produced by the code may differ from those presented in the paper [1]. Results are also always subject to the training procedure, training set, etc.

=====================================================================

IMPORTANT: If you use this software you should cite the following in any resulting publication:

[1] Learning Energy Based Inpainting for Optical Flow
C. Vogel, P. Knoebelreiter and T. Pock
In ACCV, Perth, Australia, December 2018

INSTALLING & RUNNING

  1. Download and install PyTorch from https://pytorch.org/ and similarly acquire ImageUtilities from https://github.com/VLOGroup/imageutilities. Compile ImageUtilities and if desired create a system variable pointing to the installation path of the Image Utilities.

  2. Compile the custom layers by changing to the respective directory and execute 'python setup.py install' on the command line. Make sure that PyTorch and ImageUtilities are installed. Also verify the installation path to the ImageUtilities library in the file setup.py.

CONTENT

  1. The folder 'cudaTV' contains the Optimization Layer from the ACCV paper. More precisely this is the TV version. Contained is a PyTorch layer: 'TVInpainting.py' that can be used directly after compilation succeeds. Note the 'id' parameter. This one ensures that the buffers are assigned to the correct instantiation of the layer. This allows one to have multiple of these layers executed, for instance to build a hierarchical scheme as was done for optical flow computation. For now the ids are limited to 0..9 and each layer should have a different id. With a trivial change in the code (setting uniqueIds in TVInpaintFista.h to a different value) one can have more layers.
  2. The folder 'cudaTGV' contains the TGV version of the optimization layer used in the ACCV paper.
  3. The folder QuadFitting holds a version of our quadratic fitting procedure through which we can backpropagate through. That code was also used in our ACCV paper.
  4. The folder cudaMedian implements a weighted median Layer. Ie. we can learn the weights of a weighted median Filter. Such a filter is used in popular optical flow methods, eg. in Sun et al. 'Secrets of Optical Flow Estimation and Their Principles' method. Here we have a learnable version of that filter (ie. we can learn the weights).

About

The repository holds several custom network layers. Some of which were used in my recent optical flow project: Learning Energy Based Inpainting for Optical Flow.

Resources

Stars

7 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

17 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

CustomNetworkLayers

###################################################################

Learning Energy Based Inpainting for Optical Flow

Christoph Vogel, Patrick Knoebelreiter and Thomas Pock

ACCV 2018

Copyright 2018 Graz University of Technology (Christoph Vogel)

###################################################################

About: The repository holds several custom network layers. Some of which were used in my recent optical flow project: Learning Energy Based Inpainting for Optical Flow.

The additional and necessary libraries

  • ImageUtilities
  • CUDA Programming model are not included.

To download those packages follow the links: https://developer.nvidia.com/cuda-zonehttps://github.com/VLOGroup/imageutilities and read the licensing and installation information provided there.

=====================================================================

DISCLAIMER: This software has been rewritten for the sake of providing an implementation in a recent language. Therefore, the results produced by the code may differ from those presented in the paper [1]. Results are also always subject to the training procedure, training set, etc.

=====================================================================

IMPORTANT: If you use this software you should cite the following in any resulting publication:

[1] Learning Energy Based Inpainting for Optical Flow
C. Vogel, P. Knoebelreiter and T. Pock
In ACCV, Perth, Australia, December 2018

INSTALLING & RUNNING

  1. Download and install PyTorch from https://pytorch.org/ and similarly acquire ImageUtilities from https://github.com/VLOGroup/imageutilities. Compile ImageUtilities and if desired create a system variable pointing to the installation path of the Image Utilities.

  2. Compile the custom layers by changing to the respective directory and execute 'python setup.py install' on the command line. Make sure that PyTorch and ImageUtilities are installed. Also verify the installation path to the ImageUtilities library in the file setup.py.

CONTENT

  1. The folder 'cudaTV' contains the Optimization Layer from the ACCV paper. More precisely this is the TV version. Contained is a PyTorch layer: 'TVInpainting.py' that can be used directly after compilation succeeds. Note the 'id' parameter. This one ensures that the buffers are assigned to the correct instantiation of the layer. This allows one to have multiple of these layers executed, for instance to build a hierarchical scheme as was done for optical flow computation. For now the ids are limited to 0..9 and each layer should have a different id. With a trivial change in the code (setting uniqueIds in TVInpaintFista.h to a different value) one can have more layers.
  2. The folder 'cudaTGV' contains the TGV version of the optimization layer used in the ACCV paper.
  3. The folder QuadFitting holds a version of our quadratic fitting procedure through which we can backpropagate through. That code was also used in our ACCV paper.
  4. The folder cudaMedian implements a weighted median Layer. Ie. we can learn the weights of a weighted median Filter. Such a filter is used in popular optical flow methods, eg. in Sun et al. 'Secrets of Optical Flow Estimation and Their Principles' method. Here we have a learnable version of that filter (ie. we can learn the weights).

About

The repository holds several custom network layers. Some of which were used in my recent optical flow project: Learning Energy Based Inpainting for Optical Flow.

Resources

Stars

7 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

17 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

CustomNetworkLayers

###################################################################

Learning Energy Based Inpainting for Optical Flow

Christoph Vogel, Patrick Knoebelreiter and Thomas Pock

ACCV 2018

Copyright 2018 Graz University of Technology (Christoph Vogel)

###################################################################

About: The repository holds several custom network layers. Some of which were used in my recent optical flow project: Learning Energy Based Inpainting for Optical Flow.

The additional and necessary libraries

  • ImageUtilities
  • CUDA Programming model are not included.

To download those packages follow the links: https://developer.nvidia.com/cuda-zonehttps://github.com/VLOGroup/imageutilities and read the licensing and installation information provided there.

=====================================================================

DISCLAIMER: This software has been rewritten for the sake of providing an implementation in a recent language. Therefore, the results produced by the code may differ from those presented in the paper [1]. Results are also always subject to the training procedure, training set, etc.

=====================================================================

IMPORTANT: If you use this software you should cite the following in any resulting publication:

[1] Learning Energy Based Inpainting for Optical Flow
C. Vogel, P. Knoebelreiter and T. Pock
In ACCV, Perth, Australia, December 2018

INSTALLING & RUNNING

  1. Download and install PyTorch from https://pytorch.org/ and similarly acquire ImageUtilities from https://github.com/VLOGroup/imageutilities. Compile ImageUtilities and if desired create a system variable pointing to the installation path of the Image Utilities.

  2. Compile the custom layers by changing to the respective directory and execute 'python setup.py install' on the command line. Make sure that PyTorch and ImageUtilities are installed. Also verify the installation path to the ImageUtilities library in the file setup.py.

CONTENT

  1. The folder 'cudaTV' contains the Optimization Layer from the ACCV paper. More precisely this is the TV version. Contained is a PyTorch layer: 'TVInpainting.py' that can be used directly after compilation succeeds. Note the 'id' parameter. This one ensures that the buffers are assigned to the correct instantiation of the layer. This allows one to have multiple of these layers executed, for instance to build a hierarchical scheme as was done for optical flow computation. For now the ids are limited to 0..9 and each layer should have a different id. With a trivial change in the code (setting uniqueIds in TVInpaintFista.h to a different value) one can have more layers.
  2. The folder 'cudaTGV' contains the TGV version of the optimization layer used in the ACCV paper.
  3. The folder QuadFitting holds a version of our quadratic fitting procedure through which we can backpropagate through. That code was also used in our ACCV paper.
  4. The folder cudaMedian implements a weighted median Layer. Ie. we can learn the weights of a weighted median Filter. Such a filter is used in popular optical flow methods, eg. in Sun et al. 'Secrets of Optical Flow Estimation and Their Principles' method. Here we have a learnable version of that filter (ie. we can learn the weights).

About

The repository holds several custom network layers. Some of which were used in my recent optical flow project: Learning Energy Based Inpainting for Optical Flow.

Resources

Stars

7 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

17 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

CustomNetworkLayers

###################################################################

Learning Energy Based Inpainting for Optical Flow

Christoph Vogel, Patrick Knoebelreiter and Thomas Pock

ACCV 2018

Copyright 2018 Graz University of Technology (Christoph Vogel)

###################################################################

About: The repository holds several custom network layers. Some of which were used in my recent optical flow project: Learning Energy Based Inpainting for Optical Flow.

The additional and necessary libraries

  • ImageUtilities
  • CUDA Programming model are not included.

To download those packages follow the links: https://developer.nvidia.com/cuda-zonehttps://github.com/VLOGroup/imageutilities and read the licensing and installation information provided there.

=====================================================================

DISCLAIMER: This software has been rewritten for the sake of providing an implementation in a recent language. Therefore, the results produced by the code may differ from those presented in the paper [1]. Results are also always subject to the training procedure, training set, etc.

=====================================================================

IMPORTANT: If you use this software you should cite the following in any resulting publication:

[1] Learning Energy Based Inpainting for Optical Flow
C. Vogel, P. Knoebelreiter and T. Pock
In ACCV, Perth, Australia, December 2018

INSTALLING & RUNNING

  1. Download and install PyTorch from https://pytorch.org/ and similarly acquire ImageUtilities from https://github.com/VLOGroup/imageutilities. Compile ImageUtilities and if desired create a system variable pointing to the installation path of the Image Utilities.

  2. Compile the custom layers by changing to the respective directory and execute 'python setup.py install' on the command line. Make sure that PyTorch and ImageUtilities are installed. Also verify the installation path to the ImageUtilities library in the file setup.py.

CONTENT

  1. The folder 'cudaTV' contains the Optimization Layer from the ACCV paper. More precisely this is the TV version. Contained is a PyTorch layer: 'TVInpainting.py' that can be used directly after compilation succeeds. Note the 'id' parameter. This one ensures that the buffers are assigned to the correct instantiation of the layer. This allows one to have multiple of these layers executed, for instance to build a hierarchical scheme as was done for optical flow computation. For now the ids are limited to 0..9 and each layer should have a different id. With a trivial change in the code (setting uniqueIds in TVInpaintFista.h to a different value) one can have more layers.
  2. The folder 'cudaTGV' contains the TGV version of the optimization layer used in the ACCV paper.
  3. The folder QuadFitting holds a version of our quadratic fitting procedure through which we can backpropagate through. That code was also used in our ACCV paper.
  4. The folder cudaMedian implements a weighted median Layer. Ie. we can learn the weights of a weighted median Filter. Such a filter is used in popular optical flow methods, eg. in Sun et al. 'Secrets of Optical Flow Estimation and Their Principles' method. Here we have a learnable version of that filter (ie. we can learn the weights).

About

The repository holds several custom network layers. Some of which were used in my recent optical flow project: Learning Energy Based Inpainting for Optical Flow.

Resources

Stars

7 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

17 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

CustomNetworkLayers

###################################################################

Learning Energy Based Inpainting for Optical Flow

Christoph Vogel, Patrick Knoebelreiter and Thomas Pock

ACCV 2018

Copyright 2018 Graz University of Technology (Christoph Vogel)

###################################################################

About: The repository holds several custom network layers. Some of which were used in my recent optical flow project: Learning Energy Based Inpainting for Optical Flow.

The additional and necessary libraries

  • ImageUtilities
  • CUDA Programming model are not included.

To download those packages follow the links: https://developer.nvidia.com/cuda-zonehttps://github.com/VLOGroup/imageutilities and read the licensing and installation information provided there.

=====================================================================

DISCLAIMER: This software has been rewritten for the sake of providing an implementation in a recent language. Therefore, the results produced by the code may differ from those presented in the paper [1]. Results are also always subject to the training procedure, training set, etc.

=====================================================================

IMPORTANT: If you use this software you should cite the following in any resulting publication:

[1] Learning Energy Based Inpainting for Optical Flow
C. Vogel, P. Knoebelreiter and T. Pock
In ACCV, Perth, Australia, December 2018

INSTALLING & RUNNING

  1. Download and install PyTorch from https://pytorch.org/ and similarly acquire ImageUtilities from https://github.com/VLOGroup/imageutilities. Compile ImageUtilities and if desired create a system variable pointing to the installation path of the Image Utilities.

  2. Compile the custom layers by changing to the respective directory and execute 'python setup.py install' on the command line. Make sure that PyTorch and ImageUtilities are installed. Also verify the installation path to the ImageUtilities library in the file setup.py.

CONTENT

  1. The folder 'cudaTV' contains the Optimization Layer from the ACCV paper. More precisely this is the TV version. Contained is a PyTorch layer: 'TVInpainting.py' that can be used directly after compilation succeeds. Note the 'id' parameter. This one ensures that the buffers are assigned to the correct instantiation of the layer. This allows one to have multiple of these layers executed, for instance to build a hierarchical scheme as was done for optical flow computation. For now the ids are limited to 0..9 and each layer should have a different id. With a trivial change in the code (setting uniqueIds in TVInpaintFista.h to a different value) one can have more layers.
  2. The folder 'cudaTGV' contains the TGV version of the optimization layer used in the ACCV paper.
  3. The folder QuadFitting holds a version of our quadratic fitting procedure through which we can backpropagate through. That code was also used in our ACCV paper.
  4. The folder cudaMedian implements a weighted median Layer. Ie. we can learn the weights of a weighted median Filter. Such a filter is used in popular optical flow methods, eg. in Sun et al. 'Secrets of Optical Flow Estimation and Their Principles' method. Here we have a learnable version of that filter (ie. we can learn the weights).

About

The repository holds several custom network layers. Some of which were used in my recent optical flow project: Learning Energy Based Inpainting for Optical Flow.

Resources

Stars

7 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

17 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

CustomNetworkLayers

###################################################################

Learning Energy Based Inpainting for Optical Flow

Christoph Vogel, Patrick Knoebelreiter and Thomas Pock

ACCV 2018

Copyright 2018 Graz University of Technology (Christoph Vogel)

###################################################################

About: The repository holds several custom network layers. Some of which were used in my recent optical flow project: Learning Energy Based Inpainting for Optical Flow.

The additional and necessary libraries

  • ImageUtilities
  • CUDA Programming model are not included.

To download those packages follow the links: https://developer.nvidia.com/cuda-zonehttps://github.com/VLOGroup/imageutilities and read the licensing and installation information provided there.

=====================================================================

DISCLAIMER: This software has been rewritten for the sake of providing an implementation in a recent language. Therefore, the results produced by the code may differ from those presented in the paper [1]. Results are also always subject to the training procedure, training set, etc.

=====================================================================

IMPORTANT: If you use this software you should cite the following in any resulting publication:

[1] Learning Energy Based Inpainting for Optical Flow
C. Vogel, P. Knoebelreiter and T. Pock
In ACCV, Perth, Australia, December 2018

INSTALLING & RUNNING

  1. Download and install PyTorch from https://pytorch.org/ and similarly acquire ImageUtilities from https://github.com/VLOGroup/imageutilities. Compile ImageUtilities and if desired create a system variable pointing to the installation path of the Image Utilities.

  2. Compile the custom layers by changing to the respective directory and execute 'python setup.py install' on the command line. Make sure that PyTorch and ImageUtilities are installed. Also verify the installation path to the ImageUtilities library in the file setup.py.

CONTENT

  1. The folder 'cudaTV' contains the Optimization Layer from the ACCV paper. More precisely this is the TV version. Contained is a PyTorch layer: 'TVInpainting.py' that can be used directly after compilation succeeds. Note the 'id' parameter. This one ensures that the buffers are assigned to the correct instantiation of the layer. This allows one to have multiple of these layers executed, for instance to build a hierarchical scheme as was done for optical flow computation. For now the ids are limited to 0..9 and each layer should have a different id. With a trivial change in the code (setting uniqueIds in TVInpaintFista.h to a different value) one can have more layers.
  2. The folder 'cudaTGV' contains the TGV version of the optimization layer used in the ACCV paper.
  3. The folder QuadFitting holds a version of our quadratic fitting procedure through which we can backpropagate through. That code was also used in our ACCV paper.
  4. The folder cudaMedian implements a weighted median Layer. Ie. we can learn the weights of a weighted median Filter. Such a filter is used in popular optical flow methods, eg. in Sun et al. 'Secrets of Optical Flow Estimation and Their Principles' method. Here we have a learnable version of that filter (ie. we can learn the weights).

About

The repository holds several custom network layers. Some of which were used in my recent optical flow project: Learning Energy Based Inpainting for Optical Flow.

Resources

Stars

7 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

17 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

CustomNetworkLayers

###################################################################

Learning Energy Based Inpainting for Optical Flow

Christoph Vogel, Patrick Knoebelreiter and Thomas Pock

ACCV 2018

Copyright 2018 Graz University of Technology (Christoph Vogel)

###################################################################

About: The repository holds several custom network layers. Some of which were used in my recent optical flow project: Learning Energy Based Inpainting for Optical Flow.

The additional and necessary libraries

  • ImageUtilities
  • CUDA Programming model are not included.

To download those packages follow the links: https://developer.nvidia.com/cuda-zonehttps://github.com/VLOGroup/imageutilities and read the licensing and installation information provided there.

=====================================================================

DISCLAIMER: This software has been rewritten for the sake of providing an implementation in a recent language. Therefore, the results produced by the code may differ from those presented in the paper [1]. Results are also always subject to the training procedure, training set, etc.

=====================================================================

IMPORTANT: If you use this software you should cite the following in any resulting publication:

[1] Learning Energy Based Inpainting for Optical Flow
C. Vogel, P. Knoebelreiter and T. Pock
In ACCV, Perth, Australia, December 2018

INSTALLING & RUNNING

  1. Download and install PyTorch from https://pytorch.org/ and similarly acquire ImageUtilities from https://github.com/VLOGroup/imageutilities. Compile ImageUtilities and if desired create a system variable pointing to the installation path of the Image Utilities.

  2. Compile the custom layers by changing to the respective directory and execute 'python setup.py install' on the command line. Make sure that PyTorch and ImageUtilities are installed. Also verify the installation path to the ImageUtilities library in the file setup.py.

CONTENT

  1. The folder 'cudaTV' contains the Optimization Layer from the ACCV paper. More precisely this is the TV version. Contained is a PyTorch layer: 'TVInpainting.py' that can be used directly after compilation succeeds. Note the 'id' parameter. This one ensures that the buffers are assigned to the correct instantiation of the layer. This allows one to have multiple of these layers executed, for instance to build a hierarchical scheme as was done for optical flow computation. For now the ids are limited to 0..9 and each layer should have a different id. With a trivial change in the code (setting uniqueIds in TVInpaintFista.h to a different value) one can have more layers.
  2. The folder 'cudaTGV' contains the TGV version of the optimization layer used in the ACCV paper.
  3. The folder QuadFitting holds a version of our quadratic fitting procedure through which we can backpropagate through. That code was also used in our ACCV paper.
  4. The folder cudaMedian implements a weighted median Layer. Ie. we can learn the weights of a weighted median Filter. Such a filter is used in popular optical flow methods, eg. in Sun et al. 'Secrets of Optical Flow Estimation and Their Principles' method. Here we have a learnable version of that filter (ie. we can learn the weights).

About

The repository holds several custom network layers. Some of which were used in my recent optical flow project: Learning Energy Based Inpainting for Optical Flow.

Resources

Stars

7 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages