1 votos

Qué modelo de detección de objetos dará el mejor resultado en las imágenes cuando la velocidad no es un problema para las imágenes de texto

Quiero desarrollar un modelo para recortar las ecuaciones de las preguntas de Matemáticas, ya que la gente como yo está luchando mucho por hacerlo manualmente para el propósito de la investigación. Quiero saber si se puede hacer esto y, en caso de que se pueda, cuál de todas las soluciones posibles para los modelos de reconocimiento de objetos producirá los mejores resultados. Texto imágenes.

Como existe la API de reconocimiento de objetos de tensorflow, RCNN, Fast RCNN, Faster RCNN, YOLO (v-1,2,3,4,5).

Y si hay algún otro, por favor, sugiéralo. Lo que quiero hacer es detectar las zonas grises de las ecuaciones en esta imagen .

enter image description here

Nota : La región gris que se muestra en la imagen es sólo para demostrar. Mis imágenes reales son simples preguntas recortadas de libros con fondo y letras negras (la mayoría de los libros)

0voto

Paul Mulligan Puntos 6

Tenga en cuenta que hay dos problemas en este caso: la segmentación y la clasificación. Una red neuronal podría ser una solución para ambos pasos en este caso, ya que se pueden generar fácilmente millones de imágenes de prueba etiquetadas. Sin embargo, un enfoque clásico debería dar resultados comparables con mucho menos esfuerzo:

  1. Utilizar un simple aloritmo de segmentación de páginas como runlength smearing o bounding box merging para segmentar la imagen en regiones
  2. Clasificar cada región con un clasificador arbitrario. Para ello se puede utilizar una NN sobre todos los píxeles de entrada normalizados, pero otros clasificadores como kNN también deberían funcionar con histogramas de gradiente como características (los gradientes se calculan sobre imágenes en cuasi escala de grises, que se generan a partir de las imágenes onbitas mediante desenfoque). Los histogramas de gradiente eran las características más avanzadas antes del renacimiento de las redes neuronales.

Por curiosidad, he probado el paso uno con la librería python Gamera ( gamera.sf.net ) con el siguiente código:

from gamera.core import *
init_gamera()

img = load_image("MathExpressionInputExample.png")
img = img.to_onebit()

img.remove_border()
segments = img.runlength_smearing()

# now you could process each segment (e.g. saving it to a file)
for seg in segments:
    # do some stuff

# visualize the result
color_ccs = img.graph_color_ccs(segments)
color_ccs.save_PNG("segments.png")

El resultado me parece razonable (nótese que los colores sólo indican la segmentación, y los segmentos adyacentes tienen colores diferentes):

Segmentation result

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X