All Projects → cyrildiagne → Instagram 3d Photo

cyrildiagne / Instagram 3d Photo

A Chrome extension that adds a 3d photo effect to instagram pages.

Projects that are alternatives of or similar to Instagram 3d Photo

Single Cell Tutorial
Single cell current best practices tutorial case study for the paper:Luecken and Theis, "Current best practices in single-cell RNA-seq analysis: a tutorial"
Stars: ✭ 594 (-2.78%)
Mutual labels:  jupyter-notebook
Deep learning cookbook
Deep Learning Cookbox
Stars: ✭ 601 (-1.64%)
Mutual labels:  jupyter-notebook
Challenges
PyBites Code Challenges
Stars: ✭ 604 (-1.15%)
Mutual labels:  jupyter-notebook
Basic model scratch
Implementation of some classic Machine Learning model from scratch and benchmarking against popular ML library
Stars: ✭ 595 (-2.62%)
Mutual labels:  jupyter-notebook
Courses
fast.ai Courses
Stars: ✭ 5,253 (+759.74%)
Mutual labels:  jupyter-notebook
Sqlitebiter
A CLI tool to convert CSV / Excel / HTML / JSON / Jupyter Notebook / LDJSON / LTSV / Markdown / SQLite / SSV / TSV / Google-Sheets to a SQLite database file.
Stars: ✭ 601 (-1.64%)
Mutual labels:  jupyter-notebook
Kobert
Korean BERT pre-trained cased (KoBERT)
Stars: ✭ 591 (-3.27%)
Mutual labels:  jupyter-notebook
Info8010 Deep Learning
Lectures for INFO8010 - Deep Learning, ULiège
Stars: ✭ 608 (-0.49%)
Mutual labels:  jupyter-notebook
Neuraltalk2
Efficient Image Captioning code in Torch, runs on GPU
Stars: ✭ 5,263 (+761.37%)
Mutual labels:  jupyter-notebook
Tutorial
Stars: ✭ 602 (-1.47%)
Mutual labels:  jupyter-notebook
Takehomedatachallenges
My solution to the book <A collection of Data Science Take-home Challenges>
Stars: ✭ 596 (-2.45%)
Mutual labels:  jupyter-notebook
Time Series Classification And Clustering
Time series classification and clustering code written in Python.
Stars: ✭ 599 (-1.96%)
Mutual labels:  jupyter-notebook
Fastai dev
fast.ai early development experiments
Stars: ✭ 604 (-1.15%)
Mutual labels:  jupyter-notebook
Yolov3 Complete Pruning
提供对YOLOv3及Tiny的多种剪枝版本,以适应不同的需求。
Stars: ✭ 596 (-2.45%)
Mutual labels:  jupyter-notebook
K Nearest Neighbors With Dynamic Time Warping
Python implementation of KNN and DTW classification algorithm
Stars: ✭ 604 (-1.15%)
Mutual labels:  jupyter-notebook
Python Deepdive
Python Deep Dive Course - Accompanying Materials
Stars: ✭ 590 (-3.44%)
Mutual labels:  jupyter-notebook
Machine learning tutorials
Code, exercises and tutorials of my personal blog ! 📝
Stars: ✭ 601 (-1.64%)
Mutual labels:  jupyter-notebook
Ubuntu Ranking Dataset Creator
A script that creates train, valid and test datasets for the ranking task from Ubuntu corpus dialogs.
Stars: ✭ 609 (-0.33%)
Mutual labels:  jupyter-notebook
Stock Analysis Engine
Backtest 1000s of minute-by-minute trading algorithms for training AI with automated pricing data from: IEX, Tradier and FinViz. Datasets and trading performance automatically published to S3 for building AI training datasets for teaching DNNs how to trade. Runs on Kubernetes and docker-compose. >150 million trading history rows generated from +5000 algorithms. Heads up: Yahoo's Finance API was disabled on 2019-01-03 https://developer.yahoo.com/yql/
Stars: ✭ 605 (-0.98%)
Mutual labels:  jupyter-notebook
Cs231n spring 2017 assignment
My implementations of cs231n 2017
Stars: ✭ 603 (-1.31%)
Mutual labels:  jupyter-notebook

A chrome extension that adds depth parallax (an effect similar to Facebook 3D photos) on images from instagram profile pages.

It uses 3d-photo-inpainting running in Colab (free GPU) and Cloud pubsub/storage for communication.

More info: https://twitter.com/cyrildiagne/status/1251920177782042624

Demo

Original Paper: 3D Photography using Context-aware Layered Depth Inpainting Meng-Li Shih, Shih-Yang Su, Johannes Kopf, Jia-Bin Huang

⚠️ Word of caution!

🧪 This project is highly experimental and requires a strong knowledge of the Google Cloud Platform to setup & run.

Architecture

architecture

This extension works by communicating with a Colab notebook running as GPU worker to compute the 3D inpainting videos.

For this extension to work, there are 2 other applications that must be running:

  1. The Colab notebook. It must be openned in another tab with the last cell running.
  2. The proxy service. It must be running (either remotely or on your computer) to receive HTTP requests from the extension and turn them into PubSub messages that the Colab listens to.

Setup the GCP Project

Create a GCP project

First create a project on the Google Cloud Platform. Then install the Cloud SDK and initialize it in your local machine with gcloud init.

Alternatively, you can also use Cloud Shell.

In a terminal window, set the local default project:

export PROJECT_ID=<your gcp project id>
gcloud config set project $PROJECT_ID

Create a service account for colab to be able to access cloud pubsub & storage.

It will create a insta3d-colab-key.json file that you must upload on the Colab to authenticate the notebook with your project.

export COLAB_SA=insta3d-colab
export COLAB_KEY_FILE=./insta3d-colab-key.json
./scripts/create_colab_key.sh

Create the Pubsub topic and subscription

export TOPIC_NAME=insta3d
./scripts/create_pubsub.sh

Enable CORS on your bucket

For the extension to be able to load the images generated by the colab, the CORS must be enabled on a Cloud Storage Bucket.

One way to do so is to create a file cors.json

[
  {
    "origin": ["*"],
    "responseHeader": ["Content-Type"],
    "method": ["GET"],
    "maxAgeSeconds": 3600
  }
]

And apply it to your bucket by running:

export BUCKET_NAME=<your-bucket-name>
gsutil cors set cors.json gs://$BUCKET_NAME

/!\ This will enable the CORS on the entire bucket.

Run the proxy service locally

(Recommended) Create a virtual environment

virtualenv venv
source venv/bin/activate

Install the dependencies:

pip install -r proxy/requirements.txt

Start the proxy:

export GOOGLE_APPLICATION_CREDENTIALS=$(pwd)/insta3d-colab-key.json
python proxy/main.py

Run the Colab

Open the notebook in Colab and follow the instructions. Make sure you've activated a GPU Runtime.

Load the extension & enjoy

Phew, when all that is done, it's time to load the extension and profit!

  • Navigate to chrome://extensions
  • Click the Load unpacked button
  • Select the "extension" folder from this repo.

It should add a new icon in your extensions bar that you can use to trigger the extension. Keep an eye on the console to check for eventual errors.

Changes with the original 3d-photo-inpainting

  • Update argument.yml to use custom path + smaller size + custom fps/duration
  • Update straight-line and circle paths in utils.py
  • Set ffmpeg to create 1 keyframe per frame in mesh.py

Thanks and acknowledgements

3d-photo-inpainting The original paper, code and notebook.

@derek-xia for the help improving the documentation.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].