This repository contains the segmentation user interface from the OpenSurfaces project, extracted as a lightweight tool

Overview

OpenSurfaces Segmentation UI

This repository contains the segmentation user interface from the OpenSurfaces project, extracted as a lightweight tool. A dummy server backend is included to run the demo.

You can also view the demo online.

To run the demo, there are two versions: one with django, and one with no framework. The django version uses a dummy django server and compiles the website live as necessary. The non-django version is a flat html file extracted from the django version.

If you find this tool helpful, please cite our project:

@inproceedings{bell13opensurfaces,
	author = "Sean Bell and Paul Upchurch and Noah Snavely and Kavita Bala",
	title = "OpenSurfaces: A Richly Annotated Catalog of Surface Appearance",
	booktitle = "SIGGRAPH Conf. Proc.",
	volume = "32",
	number = "4",
	year = "2013",
}

and report any bugs using the GitHub issue tracker. Also, please "star" this project on GitHub; it's nice to see how many people are using our code.

Version 1: Run with Django (Ubuntu Linux)

  1. Install dependencies (coffee-script, django, django-compressor, ua-parser, BeautifulSoup):

    Note: this will change your django current installation if you are not somewhere between 1.4.* and 1.6.*. I suggest looking into the virtualenv package if this is a problem for you.

./django-setup-demo.sh
  1. Start the local webserver:
./django-run-demo.sh
  1. Visit localhost:8000 in a web browser

To get the demo to work on Mac and Windows, you will have to look at the above scripts and run the equivalent commands for your system.

After drawing 6 polygons, the submit button will show you the POST data that would have been sent to the server.

Version 2: Run without Django (Linux or Mac)

  1. Install npm and node.js. On Ubuntu, this is:
sudo apt-get install npm nodejs
  1. Install coffee-script:
sudo npm install -g coffee-script
  1. Build static files (js, css, img) and then start a local python-based webserver:
./python-run-demo.sh
  1. Visit localhost:8000 in a web browser

To get the demo to work on Windows, you will have to look at the above scripts and run the equivalent commands for your system.

Project Notes

POST data

When a user submits, the client will POST the data to the same URL. On success, the client expects the JSON response {"message": "success", "result": "success"}. The client will then notify the MTurk server that the task is completed. For more details, see example_project/segmentation/views.py.

When a user submits, the POST will contain these fields:

results: a dictionary mapping from the photo ID (which is just "1" in
	this example) to a list of polygons.  Example:
	{"1": [[x1,y1,x2,y2,x3,y3,...], [x1,y1,x2,y2,...]]}.
	Coordinates are scaled with respect to the source photo dimensions, so both
	x and y are in the range 0 to 1.

time_ms: amount of time the user spent (whether or not they were active)

time_active_ms: amount of time that the user was active in the current window

action_log: a JSON-encoded log of user actions

screen_width: user screen width

screen_height: user screen height

version: always "1.0"

feedback: omitted if there is no feedback; JSON encoded dictionary of the form:
{
	'thoughts': user's response to "What did you think of this task?",
	'understand': user's response to "What parts didn't you understand?",
	'other': user's response to "Any other feedback, improvements, or suggestions?"
}

Feedback survey

When the user finishes the task, a popup will ask for feedback. In the django version, disable this by setting ask_for_feedback to 'false' in the file example_project/segmentation/vies.py. In the non-django verfsion, update the window.ask_for_feedback variable in index.html.

I recommend asking for feedback after the 2nd or 3rd time a user has submitted, not the first time, and then not asking again (otherwise it gets annoying). Users usually don't have feedback until they have been working for a little while.

Compiling from coffeescript

The javascript for the tool is automatically compiled from coffeescript files by django-compressor and accessed by the client at a url of the form /static/cache/js/*.js. This is set up already if using django.

If not using django, the python-run-demo.sh does this for you by manually compiling coffeescript files and storing them in the /static/ folder.

Browser compatibility

This UI works in Chrome and Firefox only. The Django version includes a browser check that shows an error page if the user is not on Chrome or Firefox or is on a mobile device.

Local /static/ folder

After you run the demo setup, the directory /static/ will contain compiled css and javascript files.

If you are usikng django and change any part of the static files (js, css, images, coffeescript), you will need to repopulate the static folder with this command:

example_project/manage.py collectstatic --noinput

If you are building on top of this repository:

In example_project/settings.py:

  1. Change SECRET_KEY to some random string.
  2. Fill in the rest of the values (admin name, database, etc).

If you want to add this demo to your own (separate) Django project:

In your settings.py file, make the following changes:

  1. Make sure STATIC_ROOT is set to an absolute writable path.

  2. Add this to the STATICFILES_FINDERS tuple:

	'compressor.finders.CompressorFinder',
  1. Add this to the INSTALLED_APPS tuple:
	'django.contrib.humanize',
	'compressor',
	'segmentation',
  1. Add this to settings.py (e.g. at the end):
	# Django Compressor
	COMPRESS_ENABLED = True
	COMPRESS_OUTPUT_DIR = 'cache'
	COMPRESS_PRECOMPILERS = (
		('text/coffeescript', 'coffee --bare --compile --stdio'),
		('text/less', 'lessc -x {infile} {outfile}'),
	)
Owner
Sean Bell
CEO and Co-Founder, GrokStyle Inc. PhD, Cornell University
Sean Bell
DFM: A Performance Baseline for Deep Feature Matching

DFM: A Performance Baseline for Deep Feature Matching Python (Pytorch) and Matlab (MatConvNet) implementations of our paper DFM: A Performance Baselin

143 Jan 02, 2023
PiCIE: Unsupervised Semantic Segmentation using Invariance and Equivariance in clustering (CVPR2021)

PiCIE: Unsupervised Semantic Segmentation using Invariance and Equivariance in Clustering Jang Hyun Cho1, Utkarsh Mall2, Kavita Bala2, Bharath Harihar

Jang Hyun Cho 164 Dec 30, 2022
nn_builder lets you build neural networks with less boilerplate code

nn_builder lets you build neural networks with less boilerplate code. You specify the type of network you want and it builds it. Install pip install n

Petros Christodoulou 157 Nov 20, 2022
Provide baselines and evaluation metrics of the task: traffic flow prediction

Note: This repo is adpoted from https://github.com/UNIMIBInside/Smart-Mobility-Prediction. Due to technical reasons, I did not fork their code. Introd

Zhangzhi Peng 11 Nov 02, 2022
A Pytorch Implementation of [Source data‐free domain adaptation of object detector through domain

A Pytorch Implementation of Source data‐free domain adaptation of object detector through domain‐specific perturbation Please follow Faster R-CNN and

1 Dec 25, 2021
NExT-QA: Next Phase of Question-Answering to Explaining Temporal Actions (CVPR2021)

NExT-QA We reproduce some SOTA VideoQA methods to provide benchmark results for our NExT-QA dataset accepted to CVPR2021 (with 1 'Strong Accept' and 2

Junbin Xiao 50 Nov 24, 2022
An implementation for the loss function proposed in Decoupled Contrastive Loss paper.

Decoupled-Contrastive-Learning This repository is an implementation for the loss function proposed in Decoupled Contrastive Loss paper. Requirements P

Ramin Nakhli 71 Dec 04, 2022
HiFi-GAN: High Fidelity Denoising and Dereverberation Based on Speech Deep Features in Adversarial Networks

HiFiGAN Denoiser This is a Unofficial Pytorch implementation of the paper HiFi-GAN: High Fidelity Denoising and Dereverberation Based on Speech Deep F

Rishikesh (ऋषिकेश) 134 Dec 27, 2022
We propose a new method for effective shadow removal by regarding it as an exposure fusion problem.

Auto-exposure fusion for single-image shadow removal We propose a new method for effective shadow removal by regarding it as an exposure fusion proble

Qing Guo 146 Dec 31, 2022
Hso-groupie - A pwnable challenge in Real World CTF 4th

Hso-groupie - A pwnable challenge in Real World CTF 4th

Riatre Foo 42 Dec 05, 2022
LibMTL: A PyTorch Library for Multi-Task Learning

LibMTL LibMTL is an open-source library built on PyTorch for Multi-Task Learning (MTL). See the latest documentation for detailed introductions and AP

765 Jan 06, 2023
Repository For Programmers Seeking a platform to show their skills

Programming-Nerds Repository For Programmers Seeking Pull Requests In hacktoberfest ❓ What's Hacktoberfest 2021? Hacktoberfest is the easiest way to g

42 Oct 29, 2022
🤗 Transformers: State-of-the-art Natural Language Processing for Pytorch, TensorFlow, and JAX.

English | 简体中文 | 繁體中文 State-of-the-art Natural Language Processing for Jax, PyTorch and TensorFlow 🤗 Transformers provides thousands of pretrained mo

Hugging Face 77.2k Jan 02, 2023
Deep Reinforcement Learning for Keras.

Deep Reinforcement Learning for Keras What is it? keras-rl implements some state-of-the art deep reinforcement learning algorithms in Python and seaml

Keras-RL 0 Dec 15, 2022
Data for "Driving the Herd: Search Engines as Content Influencers" paper

herding_data Data for "Driving the Herd: Search Engines as Content Influencers" paper Dataset description The collection contains 2250 documents, 30 i

0 Aug 17, 2021
Demo code for paper "Learning optical flow from still images", CVPR 2021.

Depthstillation Demo code for "Learning optical flow from still images", CVPR 2021. [Project page] - [Paper] - [Supplementary] This code is provided t

130 Dec 25, 2022
Code accompanying "Dynamic Neural Relational Inference" from CVPR 2020

Code accompanying "Dynamic Neural Relational Inference" This codebase accompanies the paper "Dynamic Neural Relational Inference" from CVPR 2020. This

Colin Graber 48 Dec 23, 2022
Time-series-deep-learning - Developing Deep learning LSTM, BiLSTM models, and NeuralProphet for multi-step time-series forecasting of stock price.

Stock Price Prediction Using Deep Learning Univariate Time Series Predicting stock price using historical data of a company using Neural networks for

Abdultawwab Safarji 7 Nov 27, 2022
Code release for Local Light Field Fusion at SIGGRAPH 2019

Local Light Field Fusion Project | Video | Paper Tensorflow implementation for novel view synthesis from sparse input images. Local Light Field Fusion

1.1k Dec 27, 2022
A Framework for Encrypted Machine Learning in TensorFlow

TF Encrypted is a framework for encrypted machine learning in TensorFlow. It looks and feels like TensorFlow, taking advantage of the ease-of-use of t

TF Encrypted 0 Jul 06, 2022