Este proyecto utiliza algoritmos de inteligencia artificial y visión por computadora para procesar imágenes de actas de votaciones y obtener los resultados de votos por partido y totales relevantes (votos válidos, nulos, etc).
El flujo es sencillo: se obtiene un acta, se localizan las areas de interés, se extrae la(s) cantidad(es) de interés en cada área, y se genera un reporte (en formato .json).
TODO:
-[] Expandir el dataset MNIST con digitos de actas de la primera vuelta y digitos testados.
-[] Reconocer el área de Impugnaciones, detectar si las hubo, y el total de impugnaciones.
-[] Definir tipos de errores en procesamiento.
-[] Calibrar los algoritmos de extracción de datos.
-[] Hacer pruebas de precisión con actas de prueba.
-[] Preparar para recibir data de la página del TSE y fotos de actas y el trabajo de procesamiento esos días.
Para utilizar este repositorio, se necesitan algunas herramientas previo a ejecutar los scripts. Los scripts fueron creados para ser interpretados en Python 3.x en Ubuntu16.04.
a) Descargar este repositorio
git clone https://github.com/juanmed/eleccionesGT2019
cd eleccionesGT2019b) Crea un ambiente virtual (recomendado pero opcional)
Descarga e instala virtualenv si aun no lo tienes:
pip3 install virtualenvCrea y carga un ambiente virtual que utilice Python3.x. Por ejemplo, en este caso, python 3.5 y con nombre '.tse'.
virtualenv -p /usr/lib/python3.5 .tse
source .tse/bin/activatec) Instala los paquetes y herramientas necesarias
Los siguientes comandos instalara (casi) todos los paquetes necesarios para ejecutar los scripts (torch, torchvision, numpy, etc).
python -m pip install -r requerimientos.txtEs necesario installar tesseract (usando el código fuente) y pytesseract. En este link se puede encontrar el procedimiento. Tesseract necesita algunos archivos de extensión .traineddata para trabajar con distintos lenguajes: estos se deberían almacenar en /usr/local/share/tessdata. Cuando yo seguí este procedimiento, dicho folder estaba vacío y mi código no funcionaba. La solución es descargarlos según el lenguaje a utilizar y guardarlos en la carpeta indicada. Yo descargué y guarde en esa carpeta el archivo eng.traineddata que corresponde al idioma inglés.
-
Si hubiese algún problema con la instalación de pytesseract, seguir la información oficial.
-
Si utilizas CUDA10, por favor ver las instrucciones de instalación de Pytorch y torchvision más abajo
e) Descargar e instala pycocotools
git clone https://github.com/cocodataset/cocoapi.git
cd cocoapi/PythonAPI
python setup.py build_ext installf) Descarga el repositorio de Torchvision
En dicho repositorio se encuentran algunos scripts que este repositorio necesita.
git clone https://github.com/pytorch/vision.git
cd vision
git checkout v0.3.0
cp references/detection/utils.py ../
cp references/detection/transforms.py ../
cp references/detection/coco_eval.py ../
cp references/detection/engine.py ../
cp references/detection/coco_utils.py ../
cd ../g) (Opcional) Si tienes GPU, debes instalar CUDA10.0.
Para Ubuntu18.04 o Ubuntu16.04.
a) Crea las carpetas requeridas:
cd eleccionesGT2019
mkdir -p output/images/
mkdir -p output/json/
mkdir -p datasets/2davuelta/sim/
mkdir weightsa) Dentro de la carpeta weights guardar el archivo de pesos para la red neuronal que se encuentra en este link:
https://drive.google.com/open?id=181ygFISww_ZWK7Y1pH3awqjebhd9vrJL
b) Descarga fotos de actas (simuladas o reales) de la 2da vuelta y guardalas en la carpeta datasets/2davuelta/sim/
https://drive.google.com/open?id=1kdtIRkpx3XH-p-0PKmP3V56w5579uBRx
c) Abre una terminal y:
python preprocess.pyEl script de analisis se ejecutara, cargara las imagenes de actas endatasets/2davuelta/sim/, almacenara los resultados en las carpetas output/images y output/json las imagenes con los datos reconocidos y archivos .json con la misma informacion.
Primero desinstalar pytorch y torchvision:
pip uninstall torch
pip uninstall torchvisionInstalar de nuevo utilizando
pip install https://download.pytorch.org/whl/cu100/torch-1.1.0-cp36-cp36m-linux_x86_64.whl
pip install https://download.pytorch.org/whl/cpu/torchvision-0.3.0-cp36-cp36m-linux_x86_64.whlVerificar utilizando
>>> import torch
>>> print(torch.__version__)
1.1.0
>>> print(torch.version.cuda)
10.0.130
>>> https://github.com/pytorch/vision/blob/v0.3.0/references/detection/train.py
https://github.com/pytorch/vision/tree/v0.3.0/references/detection
https://github.com/pytorch/vision/blob/master/torchvision/models/detection/faster_rcnn.py
SVHN Dataset http://ufldl.stanford.edu/housenumbers/
SVHN Annotation in PASCAL-VOC format https://github.com/penny4860/svhn-voc-annotation-format
