Code Monkey home page Code Monkey logo

jasag / phytoliths-recognition-system Goto Github PK

View Code? Open in Web Editor NEW
1.0 6.0 0.0 80.25 MB

Phytoliths recognition system and labeling tool built in python

License: BSD 3-Clause "New" or "Revised" License

Jupyter Notebook 97.58% Python 2.39% CSS 0.01% Ruby 0.01% HTML 0.01% CoffeeScript 0.01% JavaScript 0.01%
archeobotany phytoliths phytoliths-recognition python labeling-tool object-recognition real-time machine-learning image-processing tensorflow skimage sklearn json jupyter-notebook

phytoliths-recognition-system's Introduction

Phytoliths recognition system

Este proyecto contiene un sistema de reconocimiento automático de fitolitos y un etiquetador de los mismos.


Prerrequisitos

Los prerrequisitos necesarios para poder instalar las aplicaciones realizadas en este proyecto son:

  • Windows o Linux.
  • Google Chrome.
  • Anaconda.
  • La ultima release de este proyecto o repositorio.

Instalación

Debemos de seguir los dos siguientes pasos para para poder ejecutar las aplicaciones:

1. Instalación de Ipython File Upload

Ipython File Upload es la extensión que nos permitirá subir imágenes al etiquetador. Para instalarlo con pip, seguimos los siguientes pasos:

pip install --user fileupload
jupyter nbextension install --py --user fileupload
jupyter nbextension enable --py --user fileupload

2. Instalación de Jupyter Dashboards

Jupyter Dashboards es la extensión que nos permitirá mostrar el etiquetador con una mejor experiencia de usuario. Para instalarlo con pip, seguimos los siguientes pasos:

pip install --user jupyter_dashboards
jupyter dashboards quick-setup --user
jupyter nbextension enable jupyter_dashboards --py

Otras librerías

El resto de librerías se pueden instalar mediante las herramientas pip o conda:

  • scikit-learn
  • scikit-image
  • Matplotlib
  • numpy
  • traitlets
  • ipywidgets
  • Pillow

Uso del etiquetador

Una vez completados satisfactoriamente los pasos anteriores, ejecutamos la aplicación Jupyter Notebook. Y desde esta aplicación, abrimos el notebook Image_Labeler.ipynb, en la carpeta code/notebooks dentro de la carpeta de este proyecto. Con el notebook ya abierto, tendremos que navegar por la barra de navegación de este para llevar a cabo los dos siguientes pasos:

  1. Ejecutar todas las celdas del notebook Image_Labeler.ipynb en la carpeta code/notebooks. Para ello, navegamos por Cell y clicamos en Run All.

  2. Activar Dashboard Preview. Para ello, navegamos por View y clicamos en Dashboard Preview.

Ya tenemos listo el etiquetador de fitolitos para su funcionamiento.

Sistema de reconocimiento automático de fitolitos

Los pasos anteriores son también aplicables para este notebook. En este caso, su nombre es Phytoliths_Recognition_UI.ipynb, en la carpeta code/notebooks.

Documentación

Este repositorio forma parte del trabajo fin de grado de ingeniería informática desarrollado para la Universidad de Burgos (UBU). Para obtener información más detallada sobre el proyecto, véase la memoria y anexos del proyecto.

Autores

  • Jaime Sagüillo Revilla

Tutores:

  • D. Álvar Arnaiz González
  • Dr. José Francisco Diez Pastor
  • D.ª Virginia Ahedo García

Licencia

BSD 3-Clause License

Copyright (c) 2017, Jaime Sagüillo All rights reserved.

phytoliths-recognition-system's People

Contributors

jasag avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

phytoliths-recognition-system's Issues

Añadir más clasificadores

En concreto, vamos a añadir dos clasificadores durante este sprint:

  • Clasificador bayesiano.
  • Clasificador mediante regresión logística.

Probar LaTeX

Probar la herramienta de composición de textos LaTeX.
Así como decidir el editor que se utilizará.

Reorganizar los Jupyter notebooks

  • Serializar los objetos que requieran de un tiempo de computación alto, como el clasificador.
  • Subdividir el notebook "Face_detection" en varios notebooks, así como refactorizar el código.

Implementación de controles de usuario

Se quiere añadir un control de usuario, slider, para que podamos filtrar las ventanas de nuestros clasificadores, en función de las probabilidades de que las ventanas contengan el objeto que deseamos.

Implementar la funcionalidad de obtención de imágenes en el etiquetador de imágenes (Widget)

Una vez el usuario etiquete las imágenes, el etiquetador de imágenes (Widget) debe ser capaz de guardar esas etiquetas como imágenes de manera persistente. Y, además, las partes de la imagen que no han sido seleccionadas también deben de generar imágenes. Todo ello para generar un conjunto de entrenamiento para nuestro clasificador formado por los fitolitos y no-fitolitos.

Tratar de rentrenar YOLO

Se tratará de rentrenar a YOLO, el cual es un sistema de detección de objetos en tiempo real con muy buenos resultados.

Implementar un File chooser

Deseamos añadir un selector de archivos a nuestro Jupyter Notebook principal. Con el mero objetivo de poder escoger imágenes que se encuentren en cualquier parte de nuestro sistema operativo.

Documentación: README

Añadir las distintas explicaciones e indicaciones adecuadas en el README del repositorio.

Estudiar los widgets personalizados de jupyter/ipython

Se podría intentar añadir un widget que permitiese al usuario etiquetar las imágenes, marcando fitolítos o corrigiendo detecciones mal realizadas.
Un punto de partida es el tutorial de la página oficial http://ipywidgets.readthedocs.io/en/latest/examples/Widget%20Custom.html

En oficial hay IPython.display.Image para mostrar imágenes

En github he encontrado un proyecto https://github.com/Who8MyLunch/ipynb_widget_canvas
que es un canvas que tiene tambien eventos de ratón

Estudiar Bag of Words

Se pretende estudiar la técnica Bag of Words por si fuese interesante su aplicación a esta problemática.

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.