IA de reconocimiento de escritura a mano coreana
Universidad de Konkuk. Senior, Programación Multimedia - Proyecto a término (Proyecto individual)
1. Introducción
"¿Se puede aprender la escritura coreana de un individuo a través de una red neuronal artificial?"
Incluso cuando se escriben las mismas letras, el estilo de escritura de cada persona parece sutilmente diferente. El estilo de escritura de las personas que se ven obligadas a escribir o que escriben eructando dejará huellas diferentes a las habituales, lo que la hace muy fiable como prueba. Esta singularidad es lo que hace que una firma sea única. En documentos y exámenes importantes, es muy importante comprobar la autenticidad de la letra.
Como se utiliza para demostrar la identidad, la escritura es única, pero si hay dos escrituras diferentes con sólo diferencias sutiles, es difícil para los humanos distinguir la diferencia a simple vista. Por lo tanto, quería implementar un modelo de inteligencia artificial para el reconocimiento de escritura a mano en coreano.
(1-1) Datos de entrada
- Escritura coreana de 10 personas.
- La imagen de arriba está escrita por una persona diferente. (Puedes ver que son las mismas letras, pero sutilmente diferentes).
(1-2) Objetivo
- 10 personas (3 familiares, 7 amigos cercanos)
- BSN(Sona Bang), CHW(Howon Choi), KBJ(Beomjun Kim), KJH(Joonhyung Kwon), LJH(Jongho Lee), LSE(Seungeon Lee), PJH(Jonghyuk Park), PSM(Sangmoon Park), SHB( Suk Hyunbin), SWS (Woosub Shin)
(1-3) Campo de aplicación esperado
- Verificación manuscrita de exámenes nacionales y documentos importantes.
- OCR (reconocimiento óptico de caracteres)
2. Creando base de datos
2-1. datos de una letra
(1) leído
- Plantilla usada proporcionada por "Ongle-leap", una empresa de diseño de fuentes
- Incluye cada combinación de letras coreanas.
(2) Máscara sin afilar
- Se utilizó una máscara sin filo para afinar la escritura.
(3) Transformación en escala de grises
(4) Examinar el histograma y aplicar el primer umbral
- El umbral se establece a través del histograma y la imagen se binariza según el umbral.
- (En este ejemplo, el umbral se establece en 150 de 0 a 255)
(5) Aplicar LPF
- Para extraer la posición de la escritura, es necesario suavizar la escritura a través de LPF para que el contorno quede expuesto.
- Establezca el tamaño del kernel adecuadamente y aplique LPF a imágenes binarizadas a través de cv2.filter2D.
- Cuanto menor sea el tamaño del Kernel, más fácil será detectar unidades más pequeñas, como vocales y consonantes, y cuanto mayor sea el tamaño del Kernel, más fácil será detectar el contorno de la letra misma.
- (El ejemplo aplica al kernel 21x21)
(6) Examinar el histograma y aplicar el segundo umbral
- Establezca el umbral a través del histograma de la imagen suavizada con LPF, luego la binarización se realiza nuevamente según el umbral.
- (Valor umbral de ejemplo: 230)
(7) Extraer contorno y coordenadas, recortar imagen
- Un pequeño esquema que no es una letra, no fue extraído.
- Las coordenadas x, y y los valores w, h se extrajeron del contorno extraído, y las coordenadas se calcularon nuevamente con un cuadrado para que las características de escritura no se perdieran tanto como fuera posible porque tuvieron que cambiar su tamaño a 64x64 más adelante.
- A través de las coordenadas calculadas, la imagen se recortó en forma cuadrada.
(8) Estoy escribiendo
- 81 datos de una letra por persona
- total: se recopilaron 810 datos de una letra,
2-2. Datos de dos letras
- Los datos de dos letras se crearon combinando diferentes datos de una sola letra, cada uno de ellos escalado adecuadamente.
- Para reducir la pérdida de información de características durante el cambio de tamaño, se creó y utilizó la función img_concat(img1, img2) para conectar las imágenes y formarlas en cuadrados.
- Adquirió 6.480 datos de dos letras por objetivo (81P2)
2-3. Datos de tres letras
- Los datos de tres letras se crearon combinando datos de una letra y datos de dos letras, cada uno de ellos escalado apropiadamente.
- Adquirió 7980 datos de tres letras por objetivo.
2-4. Datos reales escritos a mano a partir de la toma de notas.
- Los datos se adquirieron a partir de la toma de notas real del objetivo.
- Adquirió 30 datos escritos a mano reales por objetivo.
3. 1er resultado
Datos del tren: Datos de prueba = 9: 1
Datos usados = Una letra (81) + Dos letras (500) + Tres letras (500) + Escritura a mano real (30)
n.Epoch = 20, Tamaño de lote = 50, Tasa de aprendizaje = 0,01
Configuración de capa
- Resultado
- Pérdida=0,7819, Precisión=0,72
- Resultado de los datos de la prueba=0,6503
4. 2do resultado
Datos del tren: Datos de prueba = 9: 1
Datos usados = Una letra (81) + Dos letras (1000) + Tres letras (1300) + Escritura a mano real (30)
n.Epoch = 20, Tamaño de lote = 150, Tasa de aprendizaje = 0,04
Configuración de capa
- Resultado
- Pérdida=0,0397, Precisión=0,9908
- Resultado de los datos de la prueba=0,9360
5. Análisis de resultados
En comparación con el primer resultado, el segundo resultado mejoró significativamente. Creo que la razón por la que los resultados han mejorado es la siguiente.
(5-1) Incrementar los datos utilizados para el aprendizaje
- En el primer intento se utilizaron 1.111 datos por objetivo y en el segundo intento se utilizaron 2.411 datos, lo que es más del doble.
- Dado que el aprendizaje y la evaluación se llevaron a cabo a través de más datos, se podrían haber capturado características más delicadas de la escritura del objetivo.
(5-2) Cambios en la capa de red neuronal artificial
- En el segundo intento, se modificó el tamaño de la máscara de convolución y el tamaño de la agrupación.
- El tamaño de la máscara de convolución se redujo a un tamaño más pequeño que antes para capturar características de escritura muy finas.
- Se redujo la pérdida de características de escritura a mano en el proceso de aprendizaje al reducir el tamaño de la agrupación.
- Además, para contener más información sobre escritura a mano como parámetros, el número de nodos completamente conectados se incrementó de 128 a 256.
(5-3) Aumento del tamaño del lote y la tasa de aprendizaje