Proyecto Final "Introducción a la Inteligencia Artificial" - Sistema de Reconocimiento de Flores Basado en CNN

Tabla de contenido

1. Requisitos y análisis de casos de uso

análisis de la demanda:

Análisis de casos de uso:

2. Diseño e Implementación

diseño:

lograr:

3. Recopilación de datos

4. Tecnología del proyecto

Análisis del algoritmo de aprendizaje profundo de CNN

5. Método de Evaluación de Resultados

1. Evaluación cualitativa:

2. Evaluación cuantitativa:

3. Método de análisis estadístico:

6. Referencias

Demostración del proyecto del sistema floral

1. Entrena el modelo a través de train_model

2. Prueba de precisión a través de test_modal


prefacio

El problema que se estudia en este proyecto es el reconocimiento de flores, que consiste en clasificar y reconocer imágenes de flores utilizando técnicas de visión artificial y aprendizaje profundo. Al entrenar el modelo, la computadora puede identificar automáticamente los tipos de flores, proporcionando así una solución de identificación de flores automatizada.

En la práctica, la identificación de flores tiene una amplia gama de escenarios de aplicación, incluidos, entre otros, los siguientes aspectos:

1. Investigación botánica: la identificación de flores se puede utilizar en la clasificación de plantas, la identificación de especies y la investigación de recursos vegetales en la investigación botánica. Los investigadores pueden utilizar la tecnología de identificación de flores para identificar y registrar rápidamente plantas silvestres y promover el progreso de la investigación en taxonomía y ecología de plantas.

2. Industria de las flores: en la industria de las flores, la identificación de flores se puede utilizar para la producción, venta y gestión automatizadas de flores. Por ejemplo, los productores de flores pueden usar la tecnología de identificación para clasificar e inspeccionar las flores, mejorando así la eficiencia de la producción y la gestión de la calidad de las flores.

3. Protección y conservación del medio ambiente: la identificación de flores se puede aplicar en el campo de la protección y conservación del medio ambiente, ayudando a monitorear y proteger especies de flores raras y en peligro de extinción. Al identificar y documentar las especies de flores, los investigadores y las organizaciones conservacionistas pueden realizar encuestas de existencias florales, monitorear las poblaciones y distribuciones de especies y evaluar la salud de los ecosistemas.

4. Educación y ciencia popular: la identificación de flores se puede utilizar con fines educativos y de ciencia popular, ayudando a los estudiantes y amantes de las flores a comprender los tipos y características de las flores. A través de la aplicación interactiva de reconocimiento de flores, los usuarios pueden cargar imágenes de flores y obtener resultados de reconocimiento, mejorando así el aprendizaje y la cognición del conocimiento de las flores.

1. Requisitos y análisis de casos de uso

análisis de la demanda:


1. El programa de reconocimiento de flores debe poder aceptar la imagen de la flor de entrada y generar la categoría de flor correspondiente.
2. El programa debe tener alta precisión y solidez, ser capaz de procesar imágenes de flores bajo diferentes ángulos y condiciones de iluminación y realizar un reconocimiento preciso.
3. El programa debe tener una buena interfaz de usuario, que sea conveniente para que los usuarios carguen imágenes de flores y vean los resultados del reconocimiento.
4. El programa debe tener una velocidad de identificación rápida y ser capaz de completar la identificación de flores dentro de un marco de tiempo razonable.

Análisis de casos de uso:


1. Cargar una imagen para reconocimiento:
   - El usuario abre la interfaz del programa y elige cargar una imagen de flor.
   - Después de que el programa recibe la imagen, realiza el preprocesamiento, como el escalado de la imagen, la normalización y otras operaciones.
   - El programa utiliza el modelo basado en TensorFlow 2.3 capacitado para clasificar y predecir imágenes.
   - El programa devuelve los resultados de la predicción al usuario, mostrando las categorías de flores reconocidas.

2. Maneje las excepciones:
   - La imagen cargada por el usuario no es una imagen de una flor, o la calidad de la imagen es deficiente.
   - El programa debe poder determinar y recordar al usuario que vuelva a cargar una imagen de flor adecuada.
   - El programa puede juzgar si una imagen es adecuada para la identificación de flores mediante la evaluación de la calidad de la imagen u otros medios.

3. Actualice el modelo:
   - Para mejorar la precisión del reconocimiento de flores, el programa necesita actualizar el modelo periódicamente.
   - El programa puede descargar el último modelo buscando una nueva versión del modelo en el servidor o interactuando con un servidor remoto.
   - Después de actualizar el modelo, el programa puede cargar y reemplazar el modelo en segundo plano para garantizar que el nuevo modelo surta efecto en el próximo reconocimiento.

4. Optimización del rendimiento:
   - Para conjuntos de datos de imágenes a gran escala, el procesamiento por lotes se puede utilizar para el reconocimiento de flores para mejorar la eficiencia del procesamiento.
   - El programa puede optimizar el modelo, como poda, cuantización y otras técnicas, para reducir el tamaño del modelo y mejorar la velocidad de inferencia.
   - El programa puede usar GPU y otras tecnologías de aceleración de hardware para mejorar la velocidad y el rendimiento del reconocimiento de flores.

2. Diseño e Implementación

diseño:


1. Diseño de interfaz de usuario:
   - Cree una aplicación de interfaz gráfica de usuario (GUI) utilizando la biblioteca PyQt5.
   - Contiene un botón de carga de imágenes y una etiqueta que muestra el resultado del reconocimiento.

2. Diseño del modelo de reconocimiento de flores:
   - Use TensorFlow 2.3.0 para crear y entrenar un modelo de reconocimiento de flores.
   - Puede optar por utilizar modelos preentrenados, como InceptionV3, ResNet, etc., o diseñar y entrenar sus propios modelos.

lograr:


1. Instale las dependencias requeridas:
   - Use pip para instalar las dependencias requeridas: tensorflow-cpu==2.3.0, PyQt5, Pillow, opencv-python, matplotlib.

2. Escriba el código de la interfaz de usuario:
   - Use la biblioteca PyQt5 para escribir una aplicación GUI simple, que incluya un botón de carga y una etiqueta para mostrar los resultados del reconocimiento.
   - Enlace el evento de clic del botón de carga para que pueda seleccionar y cargar la imagen de la flor.

3. Escriba el código de preprocesamiento de la imagen:
   - Use la biblioteca Pillow y opencv-python para preprocesar la imagen de la flor cargada, como el escalado, la normalización y otras operaciones.

4. Cargue y use el modelo entrenado:
   - Use TensorFlow 2.3.0 para cargar el modelo de reconocimiento de flores entrenado.
   - Ingrese la imagen preprocesada en el modelo para la predicción y obtenga el resultado del reconocimiento.

5. Muestre los resultados del reconocimiento:
   - Muestre la información de la categoría de flores predicha por el modelo en la etiqueta de la interfaz GUI.

6. Ejecute la aplicación:
   - Cree una instancia del objeto de la aplicación GUI en el programa principal y ejecute la aplicación.

3. Recopilación de datos

Para entrenar y evaluar el modelo de reconocimiento de flores, se debe recopilar un conjunto de datos que contenga imágenes de flores y las etiquetas de clase correspondientes.

1. Conjuntos de datos de imágenes de flores:
   - Al recopilar datos de imágenes de flores, puede usar una variedad de métodos:
     - Obtener de conjuntos de datos públicos: hay algunos conjuntos de datos de imágenes de flores públicas, como el conjunto de datos de flores Oxford 102, el conjunto de datos Flower-17 espera. Estos conjuntos de datos se pueden descargar y utilizar como datos de capacitación y evaluación.
     - Auto-recopilación: las imágenes de flores se pueden tomar con una cámara o un teléfono móvil. Las imágenes de flores se pueden tomar en diferentes lugares, desde diferentes ángulos y bajo diferentes condiciones de iluminación para obtener datos más diversos.
     - Crowdsourcing de datos: a través de una plataforma o aplicación en línea, se encarga a las personas que tomen y carguen imágenes de flores para aumentar el conjunto de datos.

2. Etiquetas de categoría:
   - Para cada imagen de flor, debe haber una etiqueta de categoría correspondiente que indique a qué flor pertenece la imagen.
   - Si usa un conjunto de datos público, generalmente se proporcionan etiquetas de clase predefinidas.
   - Si recopila datos usted mismo, puede etiquetar manualmente la categoría de cada imagen.

3. División del conjunto de datos:
   - Divida el conjunto de datos completo en conjunto de entrenamiento, conjunto de validación y conjunto de prueba para el entrenamiento, ajuste y evaluación del modelo.
   - Una forma común de dividir es dividir el conjunto de datos proporcionalmente en conjunto de entrenamiento (aproximadamente 70-80 %), conjunto de validación (10-15 %) y conjunto de prueba (10-15 %).

Recopile conjuntos de datos de imágenes de flores y las etiquetas de categoría correspondientes, que se pueden obtener mediante conjuntos de datos públicos, autorecopilación o mediante colaboración colectiva de datos. Garantice un conjunto de datos equilibrado y preprocese las imágenes para reducir el ruido y aumentar la diversidad de datos.

El siguiente es el paquete de compresión de datos de flores.

https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz

4. Tecnología del proyecto

Métodos aplicados y algoritmos técnicos para el proyecto.

  1. Red neuronal convolucional (CNN): CNN es un algoritmo de aprendizaje profundo ampliamente utilizado en tareas de visión por computadora, especialmente para problemas de clasificación de imágenes. Presentaré en detalle la arquitectura, la jerarquía y la configuración de parámetros del modelo CNN adoptado, así como el proceso de entrenamiento y la estrategia de optimización.
  2. Aumento de datos: el aumento de datos es una técnica que aumenta los datos de entrenamiento mediante la transformación aleatoria de la imagen original para aumentar la solidez y las capacidades de generalización del modelo. Puede describir los métodos de aumento de datos utilizados, como recorte aleatorio, rotación, escalado, inversión, etc., y explicar su impacto en el rendimiento del modelo.
  3. Métodos explicativos y de visualización: para comprender mejor el proceso de toma de decisiones y la confiabilidad del modelo, se pueden utilizar métodos explicativos y de visualización para explicar los resultados de predicción del modelo. Por ejemplo, puede usar técnicas como Grad-CAM, Class Activation Mapping, etc. para visualizar las regiones de atención del modelo en la imagen de entrada y explicar la base de las predicciones del modelo.
  4.  Evaluación de rendimiento y métricas: es necesaria una evaluación de rendimiento del modelo de reconocimiento de flores completo. Puede introducir métricas de evaluación comunes, como exactitud, precisión, recuperación, puntuación F1, etc., así como los resultados de la evaluación del rendimiento del modelo utilizando el conjunto de pruebas.
  5. Ejemplos de aplicación: Proporcione algunos ejemplos prácticos de aplicación para demostrar el efecto de aplicación del modelo de reconocimiento de flores en escenarios del mundo real. Por ejemplo, se dan algunos ejemplos de reconocimiento de imágenes de flores reales y se muestran los resultados de predicción y la precisión del modelo.

Análisis del algoritmo de aprendizaje profundo de CNN

En el proyecto de reconocimiento de flores, la red neuronal convolucional (CNN) es un algoritmo de aprendizaje profundo muy utilizado para tareas de clasificación y reconocimiento de imágenes. La siguiente es una descripción detallada de la aplicación de la red neuronal convolucional en este proyecto:

1. Arquitectura de red:
   - En el proyecto de reconocimiento de flores, puede optar por utilizar la arquitectura de red neuronal convolucional clásica, como LeNet, AlexNet, VGGNet, ResNet, etc., o personalizar la arquitectura de red según los requisitos de la tarea.
   - En términos generales, una red neuronal convolucional consta de una serie de capas convolucionales, capas de agrupación y capas totalmente conectadas. La capa convolucional se utiliza para extraer características locales de la imagen, la capa de agrupación se utiliza para reducir la dimensión de la característica y la capa totalmente conectada Se utiliza para asignar las características extraídas a categorías de flores específicas.

2. Procesamiento de imágenes de entrada:
   - Las imágenes de flores de entrada suelen tener diferentes tamaños y canales de color.
   - Antes de ingresar a la red neuronal convolucional, generalmente es necesario preprocesar la imagen, como escalar la imagen a un tamaño fijo, normalizar los valores de píxeles, etc., para garantizar que la imagen de entrada tenga el mismo tamaño y rango.

3. Operaciones de convolución y agrupación:
   - La capa de convolución es el componente central de la red neuronal convolucional. Realiza operaciones de convolución en la imagen de entrada a través del kernel de convolución para extraer las características locales de la imagen.
   - La capa de agrupación se utiliza para reducir el tamaño del mapa de características, extraer las características principales y reducir la cantidad de cálculo. Las operaciones comunes de agrupación incluyen la agrupación máxima y la agrupación promedio.

4. Extracción y aprendizaje de características:
   - Las redes neuronales convolucionales extraen y aprenden gradualmente las características de las imágenes apilando múltiples capas convolucionales y de agrupación.
   - Las capas convolucionales más bajas generalmente pueden capturar la textura local y la información de los bordes, mientras que las capas convolucionales más altas pueden aprender características más abstractas y avanzadas, como formas de flores, texturas y colores.

5. Clasificación y capa completamente conectada:
   - Después de la etapa de extracción de características, generalmente se agrega una capa completamente conectada para asignar las características extraídas a categorías de flores específicas.
   - La última capa suele ser una capa totalmente conectada con una función de activación softmax, que se utiliza para calcular la distribución de probabilidad de cada categoría y hacer predicciones de clasificación.

6. Entrenamiento y optimización:
   - En la fase de entrenamiento del modelo, use imágenes de flores con etiquetas conocidas como conjunto de entrenamiento y actualice los parámetros de la red a través del algoritmo de retropropagación y el algoritmo de optimización (como el descenso de gradiente estocástico), para que la red puede aprender Características y relaciones de clase de las flores.
   - Durante el proceso de entrenamiento, la función de pérdida de entropía cruzada se puede utilizar para medir la diferencia entre el resultado previsto y la etiqueta real, y la función de pérdida se puede minimizar mediante un algoritmo de optimización.

7. Validación y ajuste:
   - Durante el entrenamiento, parte del conjunto de datos suele utilizarse como conjunto de validación para evaluar el rendimiento del modelo en datos no vistos.
   - Puede juzgar el rendimiento del modelo monitoreando la tasa de precisión, el valor de pérdida y otros indicadores en el conjunto de verificación, y realizar ajustes de hiperparámetros (como tasa de aprendizaje, parámetros de regularización, etc.) para mejorar la capacidad de generalización del modelo.

8. Prueba y evaluación:
   - Después de completar las fases de capacitación y validación, se utiliza un conjunto de prueba independiente para evaluar el rendimiento del modelo en aplicaciones reales.
   - Mida la capacidad de clasificación y el rendimiento del modelo calculando indicadores de evaluación como exactitud, precisión, recuperación y puntaje F1 en el conjunto de prueba.

9. Predicción y aplicación:
   - Después de completar el entrenamiento y la evaluación, el modelo de red neuronal convolucional entrenado se puede utilizar para predecir y reconocer nuevas imágenes de flores.
   - Ingrese una nueva imagen de flor en el modelo entrenado, emita la distribución de probabilidad de categoría pronosticada a través de la capa softmax y seleccione la categoría con la probabilidad más alta como resultado pronosticado.

Resumir:

La red neuronal convolucional (CNN) se utiliza en el proyecto de reconocimiento de flores para extraer características locales de imágenes, aprender características abstractas y de alto nivel y clasificar a través de capas completamente conectadas. En el proceso de entrenamiento y optimización, el conjunto de entrenamiento con etiquetas conocidas se utiliza para la actualización de parámetros, y la evaluación del rendimiento y el ajuste del modelo se realizan a través del conjunto de verificación. Finalmente, el rendimiento del modelo se evalúa en el conjunto de prueba y el modelo entrenado se aplica para predecir y reconocer nuevas imágenes de flores.

5. Método de Evaluación de Resultados

1. Evaluación cualitativa:


   - Visualización de gráficos e imágenes: dibuje gráficos e imágenes como matriz de confusión, mapa de distribución de probabilidad de predicción, curva de recuperación de precisión (Curva de recuperación de precisión), curva ROC, etc., para mostrar visualmente los resultados de clasificación y el rendimiento del modelo.
   - Ejemplo de visualización: seleccione varias muestras representativas de imágenes de flores y muestre los resultados de la clasificación y las probabilidades previstas de los modelos para estas muestras, a fin de observar la precisión y la incertidumbre del modelo.

2. Evaluación cuantitativa:


   - Precisión: calcule la precisión del modelo en el conjunto de prueba, es decir, la relación entre el número de muestras correctamente clasificadas y el número total de muestras, lo que refleja el rendimiento de clasificación general del modelo.
   - Precisión y recuperación: calcule la precisión y la recuperación del modelo en cada categoría y mida la capacidad de clasificación del modelo para diferentes categorías.
   - Puntuación F1 (F1 Score): La media armónica de precisión y recuperación se considera para evaluar el rendimiento general del modelo.
   - Area Under the Receiver Operating Characteristic Curve (AUC-ROC): Se utiliza para medir el desempeño del modelo en problemas de clasificación binaria, especialmente para conjuntos de datos no balanceados.

3. Método de análisis estadístico:


   - Experimento comparativo: si hay varios modelos o métodos para comparar, se pueden usar métodos estadísticos (como la prueba t, ANOVA, etc.) para evaluar la diferencia significativa entre ellos.
   - Validación cruzada: la robustez del modelo se evalúa utilizando el método de validación cruzada, que divide el conjunto de datos en múltiples subconjuntos, utiliza cada subconjunto a su vez como un conjunto de validación y calcula el índice de rendimiento promedio.
   - Intervalos de confianza: Los intervalos de confianza se calculan para las métricas de desempeño para estimar la confiabilidad y la capacidad de generalización de las métricas.

En general, los resultados cualitativos esperados incluyen matriz de confusión, mapa de distribución de probabilidad de predicción, curva de recuperación de precisión, etc., para comprender intuitivamente los resultados de clasificación del modelo. Los resultados cuantitativos incluyen indicadores como tasa de exactitud, precisión, tasa de recuperación, puntuación F1 y AUC-ROC, que se utilizan para evaluar cuantitativamente el rendimiento de clasificación del modelo. Al mismo tiempo, el método de análisis estadístico se utiliza para comparar los resultados experimentales, y la confiabilidad y la capacidad de generalización de los resultados se evalúan mediante el intervalo de confianza.

6. Referencias

1. Disertaciones y artículos de investigación:

  •    - Alex Krizhevsky, Ilya Sutskever y Geoffrey E. Hinton. "Clasificación de ImageNet con redes neuronales convolucionales profundas". Avances en Sistemas de Procesamiento de Información Neural. 2012.
  •    - Karen Simonyan y Andrew Zisserman. "Redes convolucionales muy profundas para el reconocimiento de imágenes a gran escala". preimpresión de arXiv arXiv:1409.1556. 2014.
  •    - Kaiming He, Xiangyu Zhang, Shaoqing Ren y Jian Sun. "Aprendizaje residual profundo para el reconocimiento de imágenes". Actas de la Conferencia IEEE sobre visión artificial y reconocimiento de patrones. 2016.

2. Conjunto de datos:

  •    - Conjunto de datos de flores de Oxford 102 (conjunto de datos de flores de Oxford 102): contiene 102 categorías diferentes de imágenes de flores, a menudo utilizadas como un conjunto de datos de referencia para el reconocimiento de flores.
  •    - Conjunto de datos de ImageNet: una base de datos de imágenes a gran escala que contiene millones de imágenes etiquetadas que se pueden usar para entrenar y evaluar modelos de aprendizaje profundo.

3. Antecedentes de la investigación y descripción general del campo:

  •    - "Aprendizaje profundo en visión por computadora: una revisión" por Shanmuganathan Raman. preimpresión de arXiv arXiv:2004.12858. 2020.
  •    - "Técnicas de aprendizaje profundo para la clasificación de imágenes" por Rajendra Prajapat y Veenu. Revista internacional de investigación avanzada en informática e ingeniería de software. 2017.
  •    - "Una revisión completa sobre la red neuronal convolucional en el aprendizaje profundo" por Mehdi Noori, Meysam Abolghasemi y Morteza Ghahremani. Revista Internacional de Ciencias de la Computación y Seguridad de la Información. 2018.

Demostración del proyecto del sistema floral

1. Entrena el modelo a través de train_model

Preste atención a la ubicación de almacenamiento del modelo. 

Se puede ver en el siguiente código que el modelo debe almacenarse en data/flower_photos en el directorio de nivel superior del proyecto 

Obtener el resultado del entrenamiento después de completar el entrenamiento

Resultado del modelo CNN:

 Resultados del modelo Mobilenet:

2. Prueba de precisión a través de test_modal

 Se puede obtener una precisión del 89 %

 3. Prueba de aplicación del módulo de ventana

Supongo que te gusta

Origin blog.csdn.net/weixin_73961973/article/details/131494651
Recomendado
Clasificación