Projects

Deep Image Homography Estimation

Python/Pytorch/OpenCV/Numpy/Matplotlib
  • This project is the unofficial implementation of the paper Deep Image Homography Estimation
  • A homography is a mapping from a projective space (image) P to Q
  • From this network, it will estimate a 4-point homography parameterization which maps the four corners from one image into the second image
  • As a result, the average corner error is
    • 6.003 for the train set
    • 6.034 for the validation set
  • origin

    Example

  • result

    Result

  • patch

    Patch

  • groundTruth

    Ground Truth

  • predicted

    Predicted Result

  • origin

    Example

  • result

    Result

  • patch

    Patch

  • groundTruth

    Ground Truth

  • predicted

    Predicted Result

Deep Essential Matrix Estimation without Correspondences

Python/Pytorch/OpenCV/Numpy/Matplotlib
  • Estimating the essential matrix between two frames obtained by a monocular camera in the epipolar geometry.
  • The designed ConvNet can directly estimate the essential matrix without detecting feature points (correlations) between the two input images.
  • In the test set, the visualizing results looked incredible
demo

AI Chess

Python/Numpy/Reinforcement Learning
  • Training an agent that can play chess v.s human players by using reinforcement learning.
  • The agent was trained on both sides of the player, which reduces the training time by half.
  • As a result, the agent wins 100/100 games v.s the Random agent
demo

AI MineSweeper

Python/Numpy/Reinforcement Learning
  • Training an agent that can play minesweeper itself by using reinforcement learning.
  • The state in the Q-matrix is re-defined so that the agent trained in small sizes of the grid can play on grids with larger sizes.
  • As a result, the agent trained in random 5x5 grids with three mines can win 16/1000 random games of 9x9 grids with ten mines
demo

Color ID

Swift/K-mean
  • An iOS application gives the name of the most dominant color in the given image, which is obtained from the photo gallery or camera on the iOS devices.
  • It utilizes a machine learning algorithm called k-mean to cluster colors into groups, then takes the average of color values in the most popular group to give the color result.
  • Its extension being developed is to provide the palette of the n-dominant colors from the given image

Flappy Bird AI

Python/NEAT
  • Using Neuroevolution of augmenting topologies - NEAT to train the agent that can play Flappy Bird itself
  • After four generations, the agent can play the Flappy Bird game well without losing
demo

Imager

ReactJS/Django/OpenCV/Heroku/Computer Vision
  • The full-stack web application for image processing
  • It has two main functions: generate a palette for and apply filters to the given images
    • Palette generation detects n-most dominant colors
    • The applying filters are Gaussian, detail enhances, and grayscale
  • Palette
  • Filter