/KeypointDetectAndroid

App for comparing traditional and learned techniques of feature detection and description on Android

Primary LanguageKotlinApache License 2.0Apache-2.0

KeypointDetectAndroid

Android app for comparing traditional and learned techniques of feature detection and description.

Available modes:

  • File analysis: detect keypoints on an image file with detailed logging for statistical analysis
  • Camera analysis: detect keypoints on camera snapshots in soft-realtime

Supported algorithms:

App GUI

Library

App uses its original library consisting of two parts:

  • Native (traditional algorithms as implemented in OpenCV)
  • JVM (learned algorithms based on PyTorch for Android)

Getting started

Follow these steps to build the app:

  1. Configure traditional algorithms: run BuildOpenCV script to automatically download and install OpenCV for the required Android ABI. Read more about this script and its arguments in the native README.
  2. Configure learned algorithms:
# In any of the the project directories
pip install pytorch          # Installs PyTorch
git submodule update --init  # Initializes SuperPoint Git submodule

# In `utils` subdirectory
python save_for_mobile.py    # Converts SuperPoint to mobile and saves it to library's assets
  1. Build the project with Gradle for the required ABI (this must be the same ABI you built OpenCV for).

App usage

The app is very easy to use in both of its modes, no configuration needed.

⠀Main menu⠀ File analysis Camera analysis
Main menu File analysis Camera analysis

File analysis

  • Select a keypoint detection algorithm in the bottom menu (by default, None is selected, in which no detection is performed)
  • Pick an image to analyze in the bottom menu: Files… - Pick image
  • (Optional) Pick a file to write logs into in the bottom menu: Files… - Pick log
  • Press Start and enter the number of runs to perform
  • Mean detection time and error (unbiased estimation of standard deviation) will be shown and updated after each run — these are reset after each new start

Logs have the following format: [algorithm] [image width]x[image height] [number of keypoints] [detection time in milliseconds] for each detection run

Camera analysis

Give the app camera permission, and you are free to analyze everything around you with it!

  • Select a keypoint detection algorithm in the bottom menu (by default, None is selected, in which no detection is performed)
  • (Optional) Select a camera resolution in the bottom menu
  • Point the camera at the scene of interest, the detected keypoints and their detection time will be displayed