Giter Club home page Giter Club logo

movie-analyzer's Introduction

Instituto Tecnológico de Costa Rica
Campus Tecnológico Local San Carlos
Principios de Sistemas Operativos - II Semestre 2021

Proyecto creado por:

  • Github LinkedIn
  • Github LinkedIn
  • GithubLinkedIn

Analizador de peliculas con YOLO V3

Al realizar este proyecto, se esperaba crear alguna forma de analizar peliculas con el fin de obtener escenas que contengan cierto tipo de imagenes buscadas. En este repositorio en particular se buscan imagenes que puedan llegar a ser sensibles para una audiencia menor de edad. Siendo ejemplo de esta problematica las pistolas, el fuego y los rifles.

Con esta idea en mente, se empezo a indagar en la herramienta yolo y en como mejorarla mediante la aplicacion de hilos, y fueron obtenidos dos metodos.

Division del video en frames

La idea de este metodo es primeramente dividir el video en cuestion en frames que seran almacenados en una lista, para posteriormente hacer un recorrido concurrente de la lista. Por lo cual cada hilo se encargara de un porcentaje equitativo del total de frames obtenidos del video.

Sin embargo, una vez implementada esta posible solución, nos percatamos que no importaba cuantos hilos se agregaran o que porcentaje de los frames se asignaran a cada hilo, no hubo mejora con respecto a la forma secuencial de analizar los videos.

Multiples videos de forma concurrente

Con este metodo lo que se busca es ejecutar multiples videos con YOLOv3 para de esta forma obtener una reducción de tiempo con respecto a la forma secuencial. Por lo cual, el tiempo de cada video como tal no se ve reducido, sino que al estar ejecutándose de forma paralela, el resultado en tiempo total de ejecución es menor a que si sumasemos individualmente la duracion de analisis del primer video con el analisis del segundo.

En esta estrategia, es importante mencionar que no se guarda una imagen cada vez que se detecta un arma, puesto que en una misma escena se guardaría una gran cantidad de imágenes que representarían lo mismo y por lo tanto no sería adecuado. Lo que se realizó fue una estrategia en la cual si se detecta una pistola/rifle/fuego, se guarda la imagen solamente si en los últimos 120 frames no se ha detectado nada, en caso contrario de que ya se haya detectado un arma en los 120 frames anteriores, se procede a reiniciar el contador de frames. De esta forma en una escena de mucha acción violenta, solamente se guardaría una imagen con el tiempo en segundos en el cual fue detectada.

Para nuestra sorpresa, con este metodo se obtuvo una mejora significativa en el tiempo de analisis. La cual queda documentada en la seccion de mejoras.

Comparativa entre análisis secuencial vs paralelo.

Como se puede observar, el tiempo de ejecucion de manera secuencial en comparacion con la concurrente, tiene un porcentaje de mejora de ~26%, puesto que de forma secuencial la suma de los analisis de los videos es de 2:30, y de forma concurrente es de 1:52.

Resultados de Detección

Los resultados que genera el proyecto se estaran almacenando en la carpeta Results que se encuentra dentro del proyecto

Tutorial

1: Clonar este repositorio de forma local.
Vía http

https://github.com/EdBinns/movie-analyzer.git

Vía SSH

[email protected]:EdBinns/movie-analyzer.git

2: Con este comando, se instala OpenCv en el proyecto, el cual es necesario para el analisis de imagenes.

pip install opencv-python

3: Ingresar los videos de interés en la carpeta "Videos" del proyecto.
4: Con este comando, el programa buscara la carpeta videos dentro del proyecto y utlizara todos los videos que se encuentren en está.

 python main.py --play_video True

movie-analyzer's People

Contributors

anthonygriffithg avatar amorabarrantes avatar edbinns avatar

Stargazers

Sebastian Rojas Vargas avatar

Watchers

 avatar

Forkers

amorabarrantes

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.