A large-image collection explorer and fast classification tool

Related tags

Deep Learningimax
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
Owner
Matias Carrasco Kind
Data Science Research Services @giesdsrs director at UIUC. Astrophysicist and former Senior Research Scientist at @ncsa
Matias Carrasco Kind
Instance-wise Feature Importance in Time (FIT)

Instance-wise Feature Importance in Time (FIT) FIT is a framework for explaining time series perdiction models, by assigning feature importance to eve

Sana 46 Dec 25, 2022
2nd solution of ICDAR 2021 Competition on Scientific Literature Parsing, Task B.

TableMASTER-mmocr Contents About The Project Method Description Dependency Getting Started Prerequisites Installation Usage Data preprocess Train Infe

Jianquan Ye 298 Dec 21, 2022
Wordplay, an artificial Intelligence based crossword puzzle solver.

Wordplay, AI based crossword puzzle solver A crossword is a word puzzle that usually takes the form of a square or a rectangular grid of white- and bl

Vaibhaw 4 Nov 16, 2022
A state of the art of new lightweight YOLO model implemented by TensorFlow 2.

CSL-YOLO: A New Lightweight Object Detection System for Edge Computing This project provides a SOTA level lightweight YOLO called "Cross-Stage Lightwe

Miles Zhang 54 Dec 21, 2022
PyTorch implementation of the paper: Label Noise Transition Matrix Estimation for Tasks with Lower-Quality Features

Label Noise Transition Matrix Estimation for Tasks with Lower-Quality Features Estimate the noise transition matrix with f-mutual information. This co

<a href=[email protected]"> 1 Jun 05, 2022
Portfolio asset allocation strategies: from Markowitz to RNNs

Portfolio asset allocation strategies: from Markowitz to RNNs Research project to explore different approaches for optimal portfolio allocation starti

Luigi Filippo Chiara 1 Feb 05, 2022
VolumeGAN - 3D-aware Image Synthesis via Learning Structural and Textural Representations

VolumeGAN - 3D-aware Image Synthesis via Learning Structural and Textural Representations 3D-aware Image Synthesis via Learning Structural and Textura

GenForce: May Generative Force Be with You 116 Dec 26, 2022
LaneDetectionAndLaneKeeping - Lane Detection And Lane Keeping

LaneDetectionAndLaneKeeping This project is part of my bachelor's thesis. The go

5 Jun 27, 2022
Created as part of CS50 AI's coursework. This AI makes use of knowledge entailment to calculate the best probabilities to win Minesweeper.

Minesweeper-AI Created as part of CS50 AI's coursework. This AI makes use of knowledge entailment to calculate the best probabilities to win Minesweep

Beckham 0 Jul 20, 2022
Wordle Env: A Daily Word Environment for Reinforcement Learning

Wordle Env: A Daily Word Environment for Reinforcement Learning Setup Steps: git pull [email&#

2 Mar 28, 2022
Keras implementation of PersonLab for Multi-Person Pose Estimation and Instance Segmentation.

PersonLab This is a Keras implementation of PersonLab for Multi-Person Pose Estimation and Instance Segmentation. The model predicts heatmaps and vari

OCTI 160 Dec 21, 2022
A PyTorch implementation of unsupervised SimCSE

A PyTorch implementation of unsupervised SimCSE

99 Dec 23, 2022
Multi Agent Path Finding Algorithms

MATP-solver Simulator collision check path step random initial states or given states Traditional method Seperate A* algorithem Confict-based Search S

30 Dec 12, 2022
:hot_pepper: R²SQL: "Dynamic Hybrid Relation Network for Cross-Domain Context-Dependent Semantic Parsing." (AAAI 2021)

R²SQL The PyTorch implementation of paper Dynamic Hybrid Relation Network for Cross-Domain Context-Dependent Semantic Parsing. (AAAI 2021) Requirement

huybery 60 Dec 31, 2022
A curated list of awesome Machine Learning frameworks, libraries and software.

Awesome Machine Learning A curated list of awesome machine learning frameworks, libraries and software (by language). Inspired by awesome-php. If you

Joseph Misiti 57.1k Jan 03, 2023
Much faster than SORT(Simple Online and Realtime Tracking), a little worse than SORT

QSORT QSORT(Quick + Simple Online and Realtime Tracking) is a simple online and realtime tracking algorithm for 2D multiple object tracking in video s

Yonghye Kwon 8 Jul 27, 2022
Flax is a neural network ecosystem for JAX that is designed for flexibility.

Flax: A neural network library and ecosystem for JAX designed for flexibility Overview | Quick install | What does Flax look like? | Documentation See

Google 3.9k Jan 02, 2023
Fast, general, and tested differentiable structured prediction in PyTorch

Fast, general, and tested differentiable structured prediction in PyTorch

HNLP 1.1k Dec 16, 2022
ppo_pytorch_cpp - an implementation of the proximal policy optimization algorithm for the C++ API of Pytorch

PPO Pytorch C++ This is an implementation of the proximal policy optimization algorithm for the C++ API of Pytorch. It uses a simple TestEnvironment t

Martin Huber 59 Dec 09, 2022
Python and Julia in harmony.

PythonCall & JuliaCall Bringing Python® and Julia together in seamless harmony: Call Python code from Julia and Julia code from Python via a symmetric

Christopher Rowley 414 Jan 07, 2023