Interactive Terraform visualization. State and configuration explorer.

Overview

Rover - Terraform Visualizer

Rover is a Terraform visualizer.

In order to do this, Rover:

  1. generates a plan file and parses the configuration in the root directory or uses a provided plan.
  2. parses the plan and configuration files to generate three items: the resource overview (rso), the resource map (map), and the resource graph (graph).
  3. consumes the rso, map, and graph to generate an interactive configuration and state visualization hosts on 0.0.0.0:9000.

Feedback (via issues) and pull requests are appreciated!

Rover Screenshot

Quickstart

The fastest way to get up and running with Rover is through Docker.

Run the following command in any Terraform workspace to generate a visualization. This command copies all the files in your current directory to the Rover container and exposes port :9000.

$ docker run --rm -it -p 9000:9000 -v $(pwd):/src im2nguyen/rover
2021/07/02 06:46:23 Starting Rover...
2021/07/02 06:46:23 Initializing Terraform...
2021/07/02 06:46:24 Generating plan...
2021/07/02 06:46:25 Parsing configuration...
2021/07/02 06:46:25 Generating resource overview...
2021/07/02 06:46:25 Generating resource map...
2021/07/02 06:46:25 Generating resource graph...
2021/07/02 06:46:25 Done generating assets.
2021/07/02 06:46:25 Rover is running on 0.0.0.0:9000

Once Rover runs on 0.0.0.0:9000, navigate to it to find the visualization!

Standalone mode

Standalone mode generates a rover.zip file containing all the static assets.

$ docker run --rm -it -p 9000:9000 -v $(pwd):/src im2nguyen/rover -standalone true

After all the assets are generated, unzip rover.zip and open rover/index.html in your favorite web browser.

Set environment variables

Use --env or --env-file to set environment variables in the Docker container. For example, you can save your AWS credentials to an .env file.

$ printenv | grep "AWS" > .env

Then, add it as environment variables to your Docker container with --env-file.

$ docker run --rm -it -p 9000:9000 -v $(pwd):/src --env-file ./.env im2nguyen/rover

Define tfvars and Terraform variables

Use -tfVarsFile or -tfVar to define variables. For example, you can run the following in the example/random-test directory to overload variables.

$ docker run --rm -it -p 9000:9000 -v $(pwd):/src im2nguyen/rover -tfVarsFile test.tfvars -tfVar max_length=4

Installation

You can download Rover binary specific to your system by visiting the Releases page. Download the binary, unzip, then move rover into your PATH.

Build from source

You can build Rover manually by cloning this repository, then building the frontend and compiling the binary. It requires Go v1.16+ and npm.

Build frontend

First, navigate to the ui.

$ cd ui

Then, install the dependencies.

$ npm install

Finally, build the frontend.

$ npm run build

Compile binary

Navigate to the root directory.

$ cd ..

Compile and install the binary. Alternatively, you can use go build and move the binary into your PATH.

$ go install

Build Docker image

First, compile the binary for linux/amd64.

$ env GOOS=linux GOARCH=amd64 go build .

Then, build the Docker image.

$ docker build . -t im2nguyen/rover --no-cache

Basic usage

This repository contains two example Terraform configurations in example.

Navigate into random-test example configuration. This directory contains configuration that showcases a wide variety of features common in Terraform (modules, count, output, locals, etc) with the random provider.

$ cd example/random-test

Run Rover. Rover will start running in the current directory and assume the Terraform binary lives in /usr/local/bin/terraform by default.

$ rover
2021/06/23 22:51:27 Starting Rover...
2021/06/23 22:51:27 Initializing Terraform...
2021/06/23 22:51:28 Generating plan...
2021/06/23 22:51:28 Parsing configuration...
2021/06/23 22:51:28 Generating resource overview...
2021/06/23 22:51:28 Generating resource map...
2021/06/23 22:51:28 Generating resource graph...
2021/06/23 22:51:28 Done generating assets.
2021/06/23 22:51:28 Rover is running on 0.0.0.0:9000

You can specify the working directory (where your configuration is living) and the Terraform binary location using flags.

$ rover -workingDir "example/eks-cluster" -tfPath "/Users/dos/terraform"

Once Rover runs on 0.0.0.0:9000, navigate to it to find the visualization!

Comments
  • runtime error: invalid memory address or nil pointer dereference (Mislabeled Resource Type)

    runtime error: invalid memory address or nil pointer dereference (Mislabeled Resource Type)

    Posting this for now as I continue to debug, but maybe others are seeing similar issues.

    Overview: Runtime error when attempting to generate graph from provided plan that points to an invalid memory address reference. Upon further debugging, it appears to be related to a Data source type being labeled as a Resource source type. At the moment I am unsure of how to reproduce.

    Release Version: 3.0

    ERROR Message:

    > rover -planPath plan.out
    2022/01/31 09:48:08 Starting Rover...
    2022/01/31 09:48:08 Using provided plan...
    2022/01/31 09:48:12 Generating resource overview...
    2022/01/31 09:48:12 Generating resource map...
    panic: runtime error: invalid memory address or nil pointer dereference
    [signal SIGSEGV: segmentation violation code=0x1 addr=0x48 pc=0x174c28e]
    
    goroutine 1 [running]:
    main.(*rover).GenerateModuleMap(0xc000187680, 0xc00009fdd0, 0xc00036ac40, 0x38)
    	/Users/joseestrada/rover/map.go:225 +0x1dae
    main.(*rover).GenerateModuleMap(0xc000187680, 0xc00009e5a0, 0xc0003a8cf0, 0x25)
    	/Users/joseestrada/rover/map.go:253 +0x2357
    main.(*rover).GenerateModuleMap(0xc000187680, 0xc00050e750, 0xc000399170, 0x12)
    	/Users/joseestrada/rover/map.go:253 +0x2357
    main.(*rover).GenerateModuleMap(0xc000187680, 0xc000535b88, 0x0, 0x0)
    	/Users/joseestrada/rover/map.go:253 +0x2357
    main.(*rover).GenerateMap(0xc000187680, 0x0, 0x0)
    	/Users/joseestrada/rover/map.go:335 +0x1ee
    main.(*rover).generateAssets(0xc000187680, 0xc000187680, 0x2)
    	/Users/joseestrada/rover/main.go:193 +0x130
    main.main()
    	/Users/joseestrada/rover/main.go:138 +0xea5
    

    Additional Context: From what I gather and understand, it appears that my generated Terraform Plan is causing a runtime error due to a resource being mislabeled. I believe that a Data source is being labeled as a Resource type and thus causing the error.

    This error is happening during the generating of the resource map where it appears to be setting the file Name of the resource as well as its line number (code link). To help deep dive into the issue a bit more I modified the code locally which is described by the following code block.

    note: forgive my naming of things in advance. I am somewhat confused still about the difference between states and configs.

    			if configured {
    				var fname string
    				ind := fmt.Sprintf("%s.%s", re.ResourceType, re.Name)
    
    				log.Printf("Resource State Type: %s",rs.Type)
    
    				if rs.Type == ResourceTypeData {
    					
    					log.Println("Resource State Type is Data")
    					
    					ind = fmt.Sprintf("data.%s", ind)
    					fname = filepath.Base(configs[parentConfig].Module.DataResources[ind].Pos.Filename)
    					re.Line = &configs[parentConfig].Module.DataResources[ind].Pos.Line
    				} else if rs.Type == ResourceTypeResource {
    					
    					log.Printf("Resource Name: %s",re.Name)
    					log.Printf("Resource Type: %s",re.ResourceType)
    					for key := range configs[parentConfig].Module.ManagedResources {
    						log.Printf("Parent Module Configs Managed Resource Key: %s",key)
    					}
    
    					fname = filepath.Base(configs[parentConfig].Module.ManagedResources[ind].Pos.Filename)
    					re.Line = &configs[parentConfig].Module.ManagedResources[ind].Pos.Line
    				}
    
    				r.AddFileIfNotExists(parent, parentModule, fname)
    
    				parent.Children[fname].Children[id] = re
    
    			}
    

    The following output here shows a bit more whats going on.

    2022/01/31 09:48:12 Parent Module State Child Resource: module.atlantis_v2.module.ecs_service.module.alb_routing.data.aws_route53_zone.private
    2022/01/31 09:48:12 Resource State Type: data
    2022/01/31 09:48:12 Resource State Type is Data
    2022/01/31 09:48:12 Parent Module State Child Resource: module.atlantis_v2.module.ecs_service.module.alb_routing.data.aws_route53_zone.public
    2022/01/31 09:48:12 Resource State Type: resource
    2022/01/31 09:48:12 Resource Name: public
    2022/01/31 09:48:12 Resource Type: aws_route53_zone
    2022/01/31 09:48:12 Parent Module Configs Managed Resource Key: aws_lb_listener_rule.this
    2022/01/31 09:48:12 Parent Module Configs Managed Resource Key: aws_route53_record.public_record_prevent_destroy
    2022/01/31 09:48:12 Parent Module Configs Managed Resource Key: aws_route53_record.public_record
    2022/01/31 09:48:12 Parent Module Configs Managed Resource Key: aws_route53_record.private_record_prevent_destroy
    2022/01/31 09:48:12 Parent Module Configs Managed Resource Key: aws_route53_record.private_record
    2022/01/31 09:48:12 Parent Module Configs Managed Resource Key: aws_lb_target_group.this_prevent_destroy
    2022/01/31 09:48:12 Parent Module Configs Managed Resource Key: aws_lb_target_group.this
    2022/01/31 09:48:12 Parent Module Configs Managed Resource Key: aws_lb_listener_rule.this_prevent_destroy
    

    First thing to note here that is worth calling out, there is a 3 depth module call in play. I don't think that matters but maybe it does. It can be seen here at the resource address module.atlantis_v2.module.ecs_service.module.alb_routing.data.aws_route53_zone.public is being labeled as a Resource as opposed to Data. The log further down confirms that the Parent module does not contain a resource for hosted zone. The odd thing here is that the resource prior is very similar, but is treated correctly as a Data type. It has an almost identical path to the impacted resource address.

    At the moment I cannot immediately tell how this type is being set because I assume that is where the problem is located or will at least tell us more information about it. FWIW this is a runtime error that is happening when allowing rover to execute the Terraform Plan as well.

    I will keep digging into this but if others see anything similar or have some tips help is appreciated.

    opened by jlestrada 28
  • [Feature Request] How can rover use an already generated plan ?

    [Feature Request] How can rover use an already generated plan ?

    Thank you for this great tool! It is really useful for a 4-eye plan checking. But it will be really cool to be able to use rover directly with an already existing plan file (json or not) since some organization (as mine) are using some automation and abstraction stuff to generate plans and then apply them. So as a for eye checking it will be very interesting.

    Cheers :)

    enhancement completed 
    opened by soubinan 16
  • Use predefined TF plan for visualization

    Use predefined TF plan for visualization

    Hi. Thanks for developing this tool. I am not able to run the tool as it tries to generate the TF plan but my configuration uses symlinked files and environment variables to generate the plan. Could you support loading the details directly from a specified plan file instead of generating it on the fly?

    opened by avarghese-sqsp 15
  • Invalid visualization

    Invalid visualization

    As was being discussed in #90, according to @JackFlukinger, there's an issue in the visualization of my AWS-based TF state.

    SVG generated by Rover is here: https://file.io/YJrw7hJXmSEp

    Let's discuss and fix this issue here instead of in the original bug meant for the panic that got fixed.

    Okay @nonbeing , definitely not intended. Where is the data.aws_iam_policy_document.webhook_sns_topic_policy supposed to be housed? Should be a simple fix.

    I'm not sure I understand, @JackFlukinger ... Could you please explain what the issue is?

    opened by nonbeing 14
  • Terraform Visualizer  - Resources in the graph are on top of each other

    Terraform Visualizer - Resources in the graph are on top of each other

    Hi,

    This could be by design, but when I go to the Rover - Terraform Visualizer, all the resources are on top of each other in the centre of the graph.

    Do I need to move these elements around manually or should it be done by Rover?

    Thank you! Dave

    bug completed 
    opened by davetustin 10
  • terraform modules in relative subdirectories

    terraform modules in relative subdirectories

    Hi, we do have the terraform modules relative to the environment related files. Is it possible to use rover with this setup? /env/env_name/main.tf /env/env_name/state.conf ... configuration.auto.tfvars.... etc /terraform_modules/mod1 /terraform_modules/mod2

    Where e.g. main.tf points to module ../../terraform_modules/module1

    Thanks

    completed 
    opened by zimmdi 9
  • [BUG] panic: runtime error: invalid memory address or nil pointer dereference v0.3.0

    [BUG] panic: runtime error: invalid memory address or nil pointer dereference v0.3.0

    Hi, thanks for that amazing tool.

    I found that version v0.3.0 doesn't work while v0.2.2 does work:

    docker run --rm -it -p 9000:9000 -v $(pwd):/src --env=AWS_ACCESS_KEY_ID="nanana" --env=AWS_SECRET_ACCESS_KEY="nununu" --env=AWS_DEFAULT_REGION="eu-west-1" --platform linux/amd64 im2nguyen/rover -tfBackendConfig lalala.s3.tfbackend -tfVarsFile lalala.tfvars -workspaceName=lalala
    2022/01/14 11:59:40 Starting Rover...
    2022/01/14 11:59:40 Initializing Terraform...
    2022/01/14 11:59:58 Running in mkyc workspace...
    2022/01/14 12:00:03 Generating plan...
    2022/01/14 12:00:34 Parsing configuration...
    2022/01/14 12:00:34 Generating resource overview...
    2022/01/14 12:00:35 Generating resource map...
    panic: runtime error: invalid memory address or nil pointer dereference
    [signal SIGSEGV: segmentation violation code=0x1 addr=0x48 pc=0xa5b0cf]
    
    goroutine 1 [running]:
    main.(*rover).GenerateModuleMap(0xc000159320, 0xc0003c87e0, {0xc00003d8d8, 0x12})
            /src/map.go:212 +0x1acf
    main.(*rover).GenerateModuleMap(0xc000159320, 0xc0006ddb88, {0x0, 0x0})
            /src/map.go:240 +0xefc
    main.(*rover).GenerateMap(0xc000159320)
            /src/map.go:319 +0x1bc
    main.(*rover).generateAssets(0xc000159320)
            /src/main.go:207 +0x176
    main.main()
            /src/main.go:142 +0xd19
    
    

    when running the same with v0.2.2 it works.

    opened by mkyc 8
  • Nested Modules and SVG Image Generation in CLI

    Nested Modules and SVG Image Generation in CLI

    This is a big one.

    Adds:

    • Full nested module support
    • RSO rewritten to support nested modules and spotty configuration
    • Graph node and edge refactor to generate from resource map instead of going back through plans, states, configs again
      • Can make changes to graph output by modifying map
    • SVG instead of PNG output -- browsers only allow downloaded images up to some unspecified size. I had some trouble with large graphs not exporting due to this. SVG format makes the images much smaller, and infinitely scalable
    • Some map updates, always shows line numbers (even in nested modules) if available
      • Nested resources and modules are indented for general readability
    • Terraform 1.1.2 support
    • SVG export support in CLI with -genImage true. Probably does not work with docker, though.

    I'm happy to go into a ton more detail, but it all works. If you don't want to PR because this is so ginormous I get it.

    Resolves #60 Resolves #57 Resolves #48 Resolves #46 Resolves #26

    opened by JackFlukinger 8
  • Rover & CDK for Terraform & Azure CLI

    Rover & CDK for Terraform & Azure CLI

    Hi,

    First of all Rover seems great!

    But, I'm trying to use Rover on a CDK for Terraform -project (CDKTF). It is understandable, that Rover does not work in the basedir of the CDK project. So, I cd to the dir where CDKTF creates the Terraform JSON. In that dir what happens is:

    % ls
    cdk.tf.json     plan
    % docker run --rm -it -p 9000:9000 -v $(pwd):/src im2nguyen/rover
    2021/09/24 07:50:10 Starting Rover...
    2021/09/24 07:50:10 Initializing Terraform...
    2021/09/24 07:50:10 Unable to parse Plan: exit status 1
    
    Error: Error building ARM Config: Please ensure you have installed Azure CLI version 2.0.79 or newer. Error parsing json result from the Azure CLI: Error launching Azure CLI: exec: "az": executable file not found in $PATH.
    
    
    % az --version                                                   
    azure-cli                         2.28.0
    
    core                              2.28.0
    telemetry                          1.0.6
    
    Python location '/usr/local/Cellar/azure-cli/2.28.0/libexec/bin/python'
    Extensions directory '/Users/andreas.asuja/.azure/cliextensions'
    
    Python (Darwin) 3.9.7 (default, Sep  3 2021, 12:37:55) 
    [Clang 12.0.5 (clang-1205.0.22.9)]
    
    Legal docs and information: aka.ms/AzureCliLegal
    
    
    Your CLI is up-to-date.
    

    I'm sorry I don't have time to dig more into this, but just to inform you.

    opened by ghost 8
  • [Feature Request] rover support to terraform workspaces

    [Feature Request] rover support to terraform workspaces

    First this tool is awesome!! we use terraform workspaces heavily and would love to have a way to pass the terraform workspace select command some how. Let me know if there is a way!

    thanks!

    enhancement completed 
    opened by vinayatnie 8
  • runtime panic issue with 0.3.0 release

    runtime panic issue with 0.3.0 release

    Still have some issue with running rover in my local

    How to reproduce

    • grab the artifact from releases page
    • create main.tf
    • run rover_0.3.0_darwin_arm64/rover_v0.3.0 -standalone -tfPath <path-to-terraform-installation>

    main.tf ref

    output "hello_world" {
      value = "Hello, World!"
    }
    

    error log

    2022/01/24 14:25:15 Starting Rover...
    2022/01/24 14:25:15 Initializing Terraform...
    2022/01/24 14:25:15 Generating plan...
    2022/01/24 14:25:15 Generating resource overview...
    open .terraform/modules/modules.json: no such file or directory
    2022/01/24 14:25:15 Generating resource map...
    panic: runtime error: invalid memory address or nil pointer dereference
    [signal SIGSEGV: segmentation violation code=0x2 addr=0xb0 pc=0x10302d520]
    
    goroutine 1 [running]:
    main.(*rover).GenerateModuleMap(0x1400000b320, 0x140003c9b68, {0x0, 0x0})
    	rover/map.go:103 +0x1e0
    main.(*rover).GenerateMap(0x1400000b320)
    	rover/map.go:322 +0x1c8
    main.(*rover).generateAssets(0x1400000b320)
    	rover/main.go:193 +0x10c
    main.main()
    	rover/main.go:138 +0xeb8
    
    opened by chenrui333 7
  • UI Improvements

    UI Improvements

    Your tool definitely makes the job! How about some improvements? Here are my suggestions:

    • ability to toggle (fold/unfold or hide/unhide) the Legend section
    • text box that will help to search for an object
    • save as PNG button
    • button to reset graph section (IMHO must have)
    opened by lkurzyniec 0
  • terraform target option

    terraform target option

    In terraform you can provide a target module to apply using -target option to only execute a particular module. Does rover support a similar option ? similarly how do you pass the additional options to terraform ?

    opened by nswamy 0
  • CI/CD Integration ideas

    CI/CD Integration ideas

    Hi,

    Great tool and benefits are immediately visible. I'm currently using it locally, outside of the CI/CD pipeline as helper before I push the code which brings me to the question of possible scenarios where this can be employed as part of the pipeline. Something like report for the PR approver. Are there such scenarios and what could be the best practice for that kind of integration?

    opened by majorku5anagi 0
  • Plan fails due to missing variable, even when passing variable with -tfVar

    Plan fails due to missing variable, even when passing variable with -tfVar

    I'm trying to use rover but getting issues with missing variables. This is the command I am using:

    docker run --rm -it -p 9000:9000 -v $(pwd):/src im2nguyen/rover -standalone true -tfVar clusterName=eu-cluster

    then I see this error:

    2022/08/26 20:38:29 Starting Rover...
    2022/08/26 20:38:29 Initializing Terraform...
    2022/08/26 20:38:36 Generating plan...
    2022/08/26 20:38:41 Unable to parse Plan: Unable to run Plan: variable "clusterName" was required but not supplied
    [[email protected] terraform]$ docker run --rm -it -p 9000:9000 -v $(pwd):/src im2nguyen/rover -standalone
    

    Is there something I am missing here?

    opened by fraserc182 1
  • Brew Terraform dependency

    Brew Terraform dependency

    Hi,

    I'd suggest Terraform is removed as a dependency in Brew since it can conflict with local setup, e.g. when tfenv is used instead managing Terraform installation with Brew.

    Cheers, Alen

    opened by alen-z 0
  • Issues with terraform versioning when using rover

    Issues with terraform versioning when using rover

    I'm trying to build a graphic while running rover (from my terraform project directory) through docker with the following command:

    docker run --rm -it -p 9000:9000 -v $(pwd):/src im2nguyen/rover:v0.3.3 -planPath terraform.tfstate

    The output would be the following:

    2022/08/24 13:54:51 Starting Rover...
    2022/08/24 13:54:51 Using provided plan...
    2022/08/24 13:54:53 Unable to parse Plan: Unable to read Plan (/src/terraform.tfstate): exit status 1
    
    Error: missing or corrupted provider plugins:
      - registry.terraform.io/hashicorp/random: there is no package for registry.terraform.io/hashicorp/random 3.3.2 cached in .terraform/providers
      - registry.terraform.io/hashicorp/time: there is no package for registry.terraform.io/hashicorp/time 0.7.2 cached in .terraform/providers
      - registry.terraform.io/hashicorp/cloudinit: there is no package for registry.terraform.io/hashicorp/cloudinit 2.2.0 cached in .terraform/providers
      - registry.terraform.io/gavinbunney/kubectl: there is no package for registry.terraform.io/gavinbunney/kubectl 1.14.0 cached in .terraform/providers
      - registry.terraform.io/hashicorp/external: there is no package for registry.terraform.io/hashicorp/external 2.2.2 cached in .terraform/providers
      - registry.terraform.io/hashicorp/aws: there is no package for registry.terraform.io/hashicorp/aws 3.75.2 cached in .terraform/providers
      - registry.terraform.io/hashicorp/null: there is no package for registry.terraform.io/hashicorp/null 3.1.1 cached in .terraform/providers
      - registry.terraform.io/hashicorp/tls: there is no package for registry.terraform.io/hashicorp/tls 4.0.1 cached in .terraform/providers
      - registry.terraform.io/hashicorp/helm: there is no package for registry.terraform.io/hashicorp/helm 2.6.0 cached in .terraform/providers
      - registry.terraform.io/hashicorp/kubernetes: there is no package for registry.terraform.io/hashicorp/kubernetes 2.12.1 cached in .terraform/providers
      - registry.terraform.io/hashicorp/http: there is no package for registry.terraform.io/hashicorp/http 3.0.1 cached in .terraform/providers
      - registry.terraform.io/hashicorp/local: there is no package for registry.terraform.io/hashicorp/local 2.2.3 cached in .terraform/providers
    

    I can however start rover through passing the plan as a json:

    docker run --rm -it -p 9000:9000 -v $(pwd):/src im2nguyen/rover:v0.3.3 -planJSONPath=plan.json

    If I access the container via CLI I can see that the terraform version used is 1.1.2 when the version used for the deployment is 1.1.9. I've tried passing the terraform path through -tfPath hoping it would take the correct one used for my deployment but to no help.

    How can I fix the versioning issue so that terraform init doesn't fail? (I'm also parsing it as a json to work because if I don't parse any plan rover will freeze during terraform init, most likely due to this issue)

    Also, is there a way to generate a graphic (since I want to include it in a pipeline) with only specific resources shown, like for example only created and updated resources without anything else (especially variables) ?

    Thanks in advance!

    opened by captaindanila 0
Releases(v0.3.3)
Owner
Tu Nguyen
Tu Nguyen
GLM (General Language Model)

GLM GLM is a General Language Model pretrained with an autoregressive blank-filling objective and can be finetuned on various natural language underst

THUDM 421 Jan 04, 2023
PyTorch implementation of the Flow Gaussian Mixture Model (FlowGMM) model from our paper

Flow Gaussian Mixture Model (FlowGMM) This repository contains a PyTorch implementation of the Flow Gaussian Mixture Model (FlowGMM) model from our pa

Pavel Izmailov 124 Nov 06, 2022
Code for "Diffusion is All You Need for Learning on Surfaces"

Source code for "Diffusion is All You Need for Learning on Surfaces", by Nicholas Sharp Souhaib Attaiki Keenan Crane Maks Ovsjanikov NOTE: the linked

Nick Sharp 247 Dec 28, 2022
Not All Points Are Equal: Learning Highly Efficient Point-based Detectors for 3D LiDAR Point Clouds (CVPR 2022, Oral)

Not All Points Are Equal: Learning Highly Efficient Point-based Detectors for 3D LiDAR Point Clouds (CVPR 2022, Oral) This is the official implementat

Yifan Zhang 259 Dec 25, 2022
Code for Dual Contrastive Learning for Unsupervised Image-to-Image Translation, NTIRE, CVPRW 2021.

arXiv Dual Contrastive Learning Adversarial Generative Networks (DCLGAN) We provide our PyTorch implementation of DCLGAN, which is a simple yet powerf

119 Dec 04, 2022
3D-printable hand-strapped keyboard

Note: This repo has not been cleaned up and prepared for general consumption at all. This is just a dump of the project files. If there is any interes

Wojciech Baranowski 41 Dec 31, 2022
An Image compression simulator that uses Source Extractor and Monte Carlo methods to examine the post compressive effects different compression algorithms have.

ImageCompressionSimulation An Image compression simulator that uses Source Extractor and Monte Carlo methods to examine the post compressive effects o

James Park 1 Dec 11, 2021
Brax is a differentiable physics engine that simulates environments made up of rigid bodies, joints, and actuators

Brax is a differentiable physics engine that simulates environments made up of rigid bodies, joints, and actuators. It's also a suite of learning algorithms to train agents to operate in these enviro

Google 1.5k Jan 02, 2023
3D ResNet Video Classification accelerated by TensorRT

Activity Recognition TensorRT Perform video classification using 3D ResNets trained on Kinetics-400 dataset and accelerated with TensorRT P.S Click on

Akash James 39 Nov 21, 2022
It's like Shape Editor in Maya but works with skeletons (transforms).

Skeleposer What is Skeleposer? Briefly, it's like Shape Editor in Maya, but works with transforms and joints. It can be used to make complex facial ri

Alexander Zagoruyko 1 Nov 11, 2022
(CVPR2021) ClassSR: A General Framework to Accelerate Super-Resolution Networks by Data Characteristic

ClassSR (CVPR2021) ClassSR: A General Framework to Accelerate Super-Resolution Networks by Data Characteristic Paper Authors: Xiangtao Kong, Hengyuan

Xiangtao Kong 308 Jan 05, 2023
PointRCNN: 3D Object Proposal Generation and Detection from Point Cloud, CVPR 2019.

PointRCNN PointRCNN: 3D Object Proposal Generation and Detection from Point Cloud Code release for the paper PointRCNN:3D Object Proposal Generation a

Shaoshuai Shi 1.5k Dec 27, 2022
A setup script to generate ITK Python Wheels

ITK Python Package This project provides a setup.py script to build ITK Python binary packages and infrastructure to build ITK external module Python

Insight Software Consortium 59 Dec 14, 2022
This is an official implementation for "DeciWatch: A Simple Baseline for 10x Efficient 2D and 3D Pose Estimation"

DeciWatch: A Simple Baseline for 10× Efficient 2D and 3D Pose Estimation This repo is the official implementation of "DeciWatch: A Simple Baseline for

117 Dec 24, 2022
Supervised Contrastive Learning for Downstream Optimized Sequence Representations

SupCL-Seq 📖 Supervised Contrastive Learning for Downstream Optimized Sequence representations (SupCS-Seq) accepted to be published in EMNLP 2021, ext

Hooman Sedghamiz 18 Oct 21, 2022
A Robust Non-IoU Alternative to Non-Maxima Suppression in Object Detection

Confluence: A Robust Non-IoU Alternative to Non-Maxima Suppression in Object Detection 1. 介绍 用以替代 NMS,在所有 bbox 中挑选出最优的集合。 NMS 仅考虑了 bbox 的得分,然后根据 IOU 来

44 Sep 15, 2022
CR-Fill: Generative Image Inpainting with Auxiliary Contextual Reconstruction. ICCV 2021

crfill Usage | Web App | | Paper | Supplementary Material | More results | code for paper ``CR-Fill: Generative Image Inpainting with Auxiliary Contex

182 Dec 20, 2022
Offical implementation of Shunted Self-Attention via Multi-Scale Token Aggregation

Shunted Transformer This is the offical implementation of Shunted Self-Attention via Multi-Scale Token Aggregation by Sucheng Ren, Daquan Zhou, Shengf

156 Dec 27, 2022
My implementation of DeepMind's Perceiver

DeepMind Perceiver (in PyTorch) Disclaimer: This is not official and I'm not affiliated with DeepMind. My implementation of the Perceiver: General Per

Louis Arge 55 Dec 12, 2022
Implementation of: "Exploring Randomly Wired Neural Networks for Image Recognition"

RandWireNN Unofficial PyTorch Implementation of: Exploring Randomly Wired Neural Networks for Image Recognition. Results Validation result on Imagenet

Seung-won Park 684 Nov 02, 2022