Código Matlab sobre cómo entrenar un clasificador de imágenes
Paso 1: Crea un conjunto de categorías de imágenes.
Las imágenes se dividen en subconjuntos de entrenamiento y subconjuntos de prueba. La función imageDatastore se utiliza para almacenar imágenes para entrenar clasificadores. La función SplitEachLabel se puede utilizar para dividir una imagen en datos de entrenamiento y datos de prueba.
Leer imágenes de categorías y crear subconjuntos de imágenes
setDir = full file(toolbox dir(' vision '), ' visiondata ', ' imageSets '); imds = imageDatastore(setDir, ' IncludeSubfolders ', true, ' LabelSource ', ' foldernames ');
El gráfico particionado integra subconjuntos de entrenamiento y prueba. En el siguiente ejemplo, 30 se utilizan como datos de entrenamiento y el resto como datos de prueba.
[trainingSet, testSet] = splitEachLabel(imds, 0.3, 'randomize');
Paso 2: establecer una bolsa de palabras de características.
Cree un vocabulario visual o una bolsa de características extrayendo descriptores de características de imágenes representativas de cada categoría.
El objeto bagOfFeatures define características y vocabulario visual utilizando el algoritmo de agrupamiento k-means en descriptores de características extraídos del conjunto de entrenamiento. El algoritmo divide iterativamente los descriptores en k grupos mutuamente excluyentes. Los cúmulos resultantes son compactos y de características similares. Cada centro de grupo representa una característica o una palabra visual. Puede extraer funciones basadas en un detector de funciones o definir una cuadrícula para extraer descriptores de funciones. Los métodos de cuadrícula pueden perder detalles. Por lo tanto, las cuadrículas se utilizan para imágenes que no contienen características obvias, como imágenes de paisajes como playas. Utilice detectores de funciones robustas aceleradas (o SURF) para proporcionar una mayor invariancia de escala. De forma predeterminada, el algoritmo ejecuta el método de cuadrícula.
El flujo de trabajo de este algoritmo consiste en analizar la imagen en su conjunto. Las imágenes deben tener etiquetas apropiadas que describan las categorías que representan. Por ejemplo, un conjunto de imágenes de automóviles se puede etiquetar como automóviles. El flujo de trabajo no se basa en información espacial ni en el etiquetado de objetos específicos en la imagen. La tecnología de bolsa de palabras visuales se basa en tecnología de detección no localizada.
Paso 3: Entrena el clasificador de imágenes a través de la bolsa de palabras visuales.
La función es devolver un clasificador de imágenes. Este método utiliza un marco de código de salida de corrección de errores (ECOC) basado en una máquina de vectores de soporte binario (SVM) para entrenar múltiples clasificadores.
Este método codifica las imágenes del conjunto de imágenes en un histograma de palabras visuales utilizando la bolsa de palabras visuales devuelta por el objeto bagOfFeatures. Luego, los histogramas de palabras visuales se utilizan como muestras positivas y negativas para entrenar al clasificador.
1. Cada imagen del conjunto de entrenamiento se codifica utilizando el método de codificación bagOfFeature. Esta función detecta y extrae características de una imagen y luego utiliza el algoritmo del vecino más cercano para construir un histograma de características para cada imagen. La función aproxima el descriptor hacia el centro del grupo para aumentar el valor de cada contenedor en el histograma. La longitud del histograma depende de la cantidad de palabras visuales construidas a partir del objeto bagOfFeatures. Finalmente, el histograma se utiliza como vector de características de la imagen.
2. Repita el paso 1 para cada imagen del conjunto de entrenamiento para generar datos de entrenamiento.
3. Evaluar el clasificador. Utilice el método de evaluación de imagecategoryclassifier para probar el clasificador en el conjunto de imágenes de prueba. La matriz de confusión de salida puede analizar los resultados de la predicción.
El resultado de clasificación ideal es una matriz estándar en diagonal. La clasificación incorrecta da como resultado valores decimales.
Paso 4: Clasificar la imagen o conjunto de imágenes.
Finalmente, la nueva imagen se clasifica utilizando los métodos predefinidos del clasificador de imágenes para determinar su tipo.