Code Monkey home page Code Monkey logo

poke-pi-dex's Introduction

Contributors Forks License Stargazers Downloads Issues Poke-Pi-Dex
Raspberry Pi Python nVIDIA Keras TensorFlow Open CV


Poké-Pi-Dex

Poké-Pi-Dex is our deep learning / computer vision related project for nostalgic poké-weebs.

We recreated a Pokédex clone, which recognizes pictures of Pokémon from the first generation, using a Convolutional Neural Network. It's built on Raspberry Pi4 with LCD display, PiCamera, speaker and some other components attached.
The case is made of recycled cardboard. 🌱

View Report · Presentation · Project Work · Request Feature|Report Bug · Italiano



Table of Contents

  1. Demo
  2. Features
  3. Usage
  4. Tools
  5. Resources
  6. Roadmap
  7. License
  8. Contacts

Demo

Watch our demo on YouTube!

Demo Video
Demo video

Features

  • Main menu with functionalities and About panel.
  • Pokémon-image acquisition from app.
  • Pokémon prediction of captured pic, with an excellent accuracy, using a Convolutional Neural Network.
  • Different objects recognition, such as cards, plushies, figures.
  • Pokémon info (name, id, types, description and stats) and the previous and following evolution stages of Pokémon recognized.
  • Audio description of the predicted Pokémon.
  • Play Pokémon cry.
  • Settings view where users can edit parameters, such as language (English and Italian), fullscreen, volume.
  • Debug mode to check the values of the prediction.
  • Easter egg, try and find it!

Usage

To use the application follow these steps: TO-DO

Prerequisites

TO-DO

Installation

TO-DO

Resources

Roadmap

  • Dataset
    • find a decent dataset for the neural network
    • fix (cut pictures) and extend it
  • Classifier
    • CNN with 3 conv layers and 2 FC layers
    • data augmentation (random flip, rotation, contrast, brightness)
    • try dropout
    • try batch norm
    • loss and accuracy graphs
    • test real life pics
    • improve old CNN
  • Application
    • Pokémon repository
      • find .json file and load it into a dictionary
      • check and fix it
      • create Pokémon class
    • video input
      • create a separate class
      • make a function that can take a frame from the picamera (to test)
      • display the image inside a canvas
    • GUI structure
      • create a main menu
      • create an about panel
      • create a main app view divided in 2 (left-side for video input, right-side for Pokémon details)
      • create a settings panel
    • button to get the current frame
    • labels and entry for the Pokémon details (stats with dynamic bars and different colors)
    • add buttons to scroll between multiple evolutions (example: Eevee has different evolutions)
    • change the "type(s)" entry (from text to image)
    • button to play cry
      • collect cry audio files
    • description voice reading
      • collect description audio files with a bot
    • different language update
    • debug mode
  • Raspberry Setup
    • buy components
      • LDC display
      • PiCamera
      • power supply (powerbank)
      • speaker
      • push buttons
      • type-C elbow adapter
      • A/D converter (ADS1115)
    • integrate components
      • LCD display
      • PiCamera
      • power supply
      • speaker
      • buttons
      • analog joystick
    • prepare OS (disable password, enable interfaces, ...)
  • App Deployment
    • prepare environment (install python3 and required packages)
    • clone the repo
    • test the app
  • Case Prototype
    • project
    • cardboard cutout
    • painting
  • Report
    • setup a LaTeX document
    • draft a possible subdivision into chapters
    • write the report
  • Presentation
  • Demo Video
  • Extra & Future Developments
    • use a more comples neural network with the new dataset
    • use new form of data augmentation
    • add an amplifier to speaker
    • insert one or more white LEDs near the camera lens
    • add settings option to enable/disable the video freezing after taking a picture
    • finish the 3D model and print it
    • extend the Pokédex to the following Pokémon generations
    • porting of the application to mobile systems (Android, iOS) - Flutter + Firebase

License

Distributed under the GPLv3 License. See LICENSE for more information.

Contacts

poke-pi-dex's People

Contributors

mikyll avatar trykatchup avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

poke-pi-dex's Issues

Fix app and documentation for better reproducibility

Some fixes for better reproducibility

1. An installation guide

2. Specify which packets we need + python version + packets version

pip install tensorflow opencv-python pillow pygame pyautogui sklearn tflite scikit-learn tflite-runtime

3. Windows

Note that from python 3.10 tflite-runtime manual build is required.
A possible fix is to use Python 3.9.

4. Model upload

In the release would be great to have tflite model. The correct model directory must be Poke-Pi-Dex-main\app\resources\classifier_model. Remember to check the model filename (see pokemon_classifier_tflite.py).

5. Path fix

best_classes.npy must be moved from pokemon-classifier/src a /app/resources/classifier_model

If using the tflite model converted from PyTorch decomment the following line

img = np.transpose(img, [0, 3, 1, 2])

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.