A large-image collection explorer and fast classification tool

Related tags

Deep Learning imax
Overview

IMAX: Interactive Multi-image Analysis eXplorer

This is an interactive tool for visualize and classify multiple images at a time. It written in Python and Javascript. It is based on Leaflet and it reads the images from a single directory and there is no need for multiple resolutions folders as images are scaled dynamically when zooming in/out. It runs an asyncio server in the back end and supports up 10,000 images reasonable well. It can load more images but it will slower. It runs using multiple cores and has been tested with over 50K images.

You can move and label images all from the keyboard.

You can see a (not very good) gif demo ot the tool in action, a live demo or a better video is here

Demo

Deployment

Simple deployment

Clone this repository:

	git clone https://github.com/mgckind/imax.git
	cd imax/python_server

Create a config file template:

	cp config_template.yaml config.yaml

Edit the config.yaml file to have the correct parameters, see Configuration for more info.

Start the server:

   python3 server.py

Start the client and visit the url printed python_server:

   python3 client.py

If you are running locally you can go to http://localhost:8000/

Docker

  1. Create image from Dockerfile

     cd imax
     docker build -t imax .
    
  2. Create an internal network so server/client can talk through the internal network (is not need for now as we are exposing both services at the localhost)

     docker network create --driver bridge imaxnet
    
  3. Create local config file to be mounted inside the containers. Create config.yaml based on the template, and replace the image location.

  4. Start the server container and attach the volume with images, connect to network and expose port 8888 to localhost

        docker run -d --name server -p 8888:8888 -v {PATH TO CONFIG FILE}:/home/explorer/server/config.yaml -v {PATH TO LOCAL IMAGES}:{PATH TO CONTAINER IMAGES} --network imaxnet imax python server.py
    
  5. Start the client container, connect to network and expose the port 8000 to local host

        docker run -d --name client -p 8000:8000 -v {PATH TO CONFIG FILE}:/home/explorer/server/config.yaml  --network imaxnet imax python client.py
    

Now the containers can talk at the localhost. If you are running locally you can go to http://localhost:8000/

Usage

This is the Help window displayed


Help


-> Fullscreen
-> Invert colors
/ -> Toggle On/Off classified tiles.
First time it reads from DB.

-> Random. Show a new random subsample (if available data is larger)
-> Apply filter to the displayed data.
Use the checkboxes on the left bottom side. -1 means no classified.
-> Reset filters and view. Do not display deleted images.

Move around with mouse and keyboard , use the mouse wheel to zoom in/out and double click to focus on one image.

Keyboard

Use "w","a","s","d" to move the selected tile and the keyboard numbers to apply a class as defined in the configuration file
Use "+", "-" to zoom in/out
Use "c" to clear any class selection
Use "t" to toggle on/off the classes
Use "h" to toggle on/off the Help
Use "f" to toggle on/off Full screen
Defined classes will appear at the bottom right side of the map

Configuration

This is the template config file to use:

#### DISPLAY
display:
  dataname: '{FILL ME}' #Name for the sqlite DB and config file
  path: '{FILL ME}'
  nimages: 1200 #Number of objects to be displayed even if there are more in the folder
  xdim: 40 #X dimension for the display
  ydim: 30 #Y dimension for the display
  tileSize: 256 #Size of the tile for which images are resized at max zoom level
  minXrange: 0
  minYrange: 0
  deltaZoom: 3 #default == 3
#### SERVER
server:
  ssl: false #use ssl, need to have certificates
  sslName: test #prefix of .crt and .key files inside ssl/ folder e.g., ssl/{sslName.key}
  host: 'http://localhost' #if using ssl, change to https
  port: 8888
  rootUrl: '/cexp' #root url for server, e.g. request are made to /cexp/, if None use "/"
  #workers: None # None will default to the workers in the machine
#### CLIENT
client:
  host: 'http://localhost'
  port: 8000
#### OPERATIONS options
operation:
  updates: true #allows to update and/or remove classes to images, false and classes are fixed.
#### CLASSES
#### classes, use any classes from 0 to 9, class 0 is for hidden! class -1 is no class
classes:
    - Delete: 0
    - Spiral: 8
    - Elliptical: 9
    - Other: 7
You might also like...
A fast, scalable, high performance Gradient Boosting on Decision Trees library, used for ranking, classification, regression and other machine learning tasks for Python, R, Java, C++. Supports computation on CPU and GPU.
A fast, scalable, high performance Gradient Boosting on Decision Trees library, used for ranking, classification, regression and other machine learning tasks for Python, R, Java, C++. Supports computation on CPU and GPU.

Website | Documentation | Tutorials | Installation | Release Notes CatBoost is a machine learning method based on gradient boosting over decision tree

Hl classification bc - A Network-Based High-Level Data Classification Algorithm Using Betweenness Centrality
Hl classification bc - A Network-Based High-Level Data Classification Algorithm Using Betweenness Centrality

A Network-Based High-Level Data Classification Algorithm Using Betweenness Centr

A fast, distributed, high performance gradient boosting (GBT, GBDT, GBRT, GBM or MART) framework based on decision tree algorithms, used for ranking, classification and many other machine learning tasks.

Light Gradient Boosting Machine LightGBM is a gradient boosting framework that uses tree based learning algorithms. It is designed to be distributed a

Library for fast text representation and classification.

fastText fastText is a library for efficient learning of word representations and sentence classification. Table of contents Resources Models Suppleme

A fast poisson image editing implementation that can utilize multi-core CPU or GPU to handle a high-resolution image input.
A fast poisson image editing implementation that can utilize multi-core CPU or GPU to handle a high-resolution image input.

Poisson Image Editing - A Parallel Implementation Jiayi Weng (jiayiwen), Zixu Chen (zixuc) Poisson Image Editing is a technique that can fuse two imag

MINIROCKET: A Very Fast (Almost) Deterministic Transform for Time Series Classification

MINIROCKET: A Very Fast (Almost) Deterministic Transform for Time Series Classification

 Revisiting Oxford and Paris: Large-Scale Image Retrieval Benchmarking
Revisiting Oxford and Paris: Large-Scale Image Retrieval Benchmarking

Revisiting Oxford and Paris: Large-Scale Image Retrieval Benchmarking We revisit and address issues with Oxford 5k and Paris 6k image retrieval benchm

[ICLR 2021, Spotlight] Large Scale Image Completion via Co-Modulated Generative Adversarial Networks
[ICLR 2021, Spotlight] Large Scale Image Completion via Co-Modulated Generative Adversarial Networks

Large Scale Image Completion via Co-Modulated Generative Adversarial Networks, ICLR 2021 (Spotlight) Demo | Paper [NEW!] Time to play with our interac

This implements one of result networks from Large-scale evolution of image classifiers
This implements one of result networks from Large-scale evolution of image classifiers

Exotic structured image classifier This implements one of result networks from Large-scale evolution of image classifiers by Esteban Real, et. al. Req

Owner
Matias Carrasco Kind
Data Science Research Services @giesdsrs director at UIUC. Astrophysicist and former Senior Research Scientist at @ncsa
Matias Carrasco Kind
Simple-Image-Classification - Simple Image Classification Code (PyTorch)

Simple-Image-Classification Simple Image Classification Code (PyTorch) Yechan Kim This repository contains: Python3 / Pytorch code for multi-class ima

Yechan Kim 8 Oct 29, 2022
Interactive Terraform visualization. State and configuration explorer.

Rover - Terraform Visualizer Rover is a Terraform visualizer. In order to do this, Rover: generates a plan file and parses the configuration in the ro

Tu Nguyen 2.3k Jan 7, 2023
Official implementation of "Towards Good Practices for Efficiently Annotating Large-Scale Image Classification Datasets" (CVPR2021)

Towards Good Practices for Efficiently Annotating Large-Scale Image Classification Datasets This is the official implementation of "Towards Good Pract

Sanja Fidler's Lab 52 Nov 22, 2022
A collection of SOTA Image Classification Models in PyTorch

A collection of SOTA Image Classification Models in PyTorch

sithu3 85 Dec 30, 2022
FPGA: Fast Patch-Free Global Learning Framework for Fully End-to-End Hyperspectral Image Classification

FPGA & FreeNet Fast Patch-Free Global Learning Framework for Fully End-to-End Hyperspectral Image Classification by Zhuo Zheng, Yanfei Zhong, Ailong M

Zhuo Zheng 92 Jan 3, 2023
PyTorch-LIT is the Lite Inference Toolkit (LIT) for PyTorch which focuses on easy and fast inference of large models on end-devices.

PyTorch-LIT PyTorch-LIT is the Lite Inference Toolkit (LIT) for PyTorch which focuses on easy and fast inference of large models on end-devices. With

Amin Rezaei 157 Dec 11, 2022
Implement face detection, and age and gender classification, and emotion classification.

YOLO Keras Face Detection Implement Face detection, and Age and Gender Classification, and Emotion Classification. (image from wider face dataset) Ove

Chloe 10 Nov 14, 2022
An optimization and data collection toolbox for convenient and fast prototyping of computationally expensive models.

An optimization and data collection toolbox for convenient and fast prototyping of computationally expensive models. Hyperactive: is very easy to lear

Simon Blanke 422 Jan 4, 2023
Collection of tasks for fast prototyping, baselining, finetuning and solving problems with deep learning.

Collection of tasks for fast prototyping, baselining, finetuning and solving problems with deep learning Installation

Pytorch Lightning 1.6k Jan 8, 2023
A fast, scalable, high performance Gradient Boosting on Decision Trees library, used for ranking, classification, regression and other machine learning tasks for Python, R, Java, C++. Supports computation on CPU and GPU.

Website | Documentation | Tutorials | Installation | Release Notes CatBoost is a machine learning method based on gradient boosting over decision tree

CatBoost 6.9k Jan 4, 2023