$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
El conjunto de datos utilizado en este artículo fue adquirido del campo AS/RS del Departamento de Logística de Longyan Tobacco Industry Co., Ltd. Este estudio no involucró participantes humanos ni animales. No se requería aprobación ética.
Adquisición y configuración de conjuntos de datos
Configuración de hardware: Montar una cámara industrial (por ejemplo, MV-CA013-A0GM) equipada con un objetivo de 8 mm de distancia focal (por ejemplo, MVL-HF0828M-6MPE) sobre la plataforma de carga de la grúa apiladora. Conecta la cámara a un PC de control mediante un cable GigE y un dispositivo de acceso inalámbrico (por ejemplo, BH-ANT5158S-14HV, BH-MS-AC1600HWH). Coloca una tira de luz LED (por ejemplo, MV-LLDS-1002-38-W) alrededor de la cámara para asegurar una iluminación uniforme.
Configuración de parámetros de la cámara: Configura la cámara usando el software del fabricante (por ejemplo, MVS). Ajusta la resolución de adquisición a 1280 x 1024 píxeles. Configura el modo de disparo en Disparador Hardware y sincronízalo con el sistema de posicionamiento de la grúa apiladora. Ajusta el tiempo de exposición a 100 ms y la ganancia a 5 dB para minimizar el desenfoque de movimiento y el ruido. La distancia de trabajo entre la cámara y las cajas de cigarrillos es de aproximadamente 550 mm.
Recogida de imágenes: Una cámara industrial con disparador captura una imagen automáticamente cada vez que se coloca una bandeja durante el almacenamiento y recogida de las cajas de cigarrillos. Recopilar un total de 4.835 imágenes en bruto; las imágenes típicas se muestran en la Figura 1.
Anotación de imágenes: Utiliza la herramienta de código abierto LabelImg. Para cada imagen, dibuja cuadros delimitados alrededor de cada característica visible de la marca de cigarrillos. Asigna el nombre de marca correcto (por ejemplo, Hongzhuang, Gutian) como etiqueta de clase para cada cuadro delimitador. Guarda las anotaciones en un formato estándar de detección de una sola etapa, con un archivo txt por imagen.
Control de calidad: Un segundo anotador revisa al azar el 20% de las imágenes anotadas. Cualquier discrepancia se discute y resuelve, asegurando la coherencia del etiquetado.
Estrategia de aumento de datos
Esta sección detalla tanto técnicas tradicionales como avanzadas de aumento aplicadas a los conjuntos de datos. Los datos iniciales y los datos aumentados se combinan en un nuevo conjunto de datos, que luego se divide en conjunto de entrenamiento, conjunto de validación y conjunto de pruebas para garantizar la equidad en la evaluación.
Aumento tradicional de datos32: Estas transformaciones se aplican en tiempo real por la tubería de entrenamiento (por ejemplo, usando las librerías de Albumentations o PyTorch Transforms) con una probabilidad definida para cada lote.
Transformaciones geométricas: Rotación: Gira aleatoriamente las imágenes con un ángulo entre -45° y +45°. Escalado: Escala aleatoriamente las imágenes por un factor entre 0,8 y 1,2. Volteo horizontal: Invertir imágenes aleatoriamente en horizontal con un 100% de probabilidad. Recorte aleatorio: Recorta aleatoriamente una sección entre el 80% y el 100% del área original de la imagen.
Transformaciones fotométricas: Brillo y contraste: Ajustar brillo y contraste mediante un factor elegido aleatoriamente de [0,6, 1,4]. Ruido gaussiano: Añade ruido gaussiano con una desviación estándar elegida aleatoriamente entre [0, 0,01 * 255] al 10% de las imágenes. Desenfoque gaussiano: Aplica un desenfoque gaussiano con un tamaño de núcleo de 3x3 al 10% de las imágenes.
Simulación de oclusión: Colocar aleatoriamente de 1 a 3 parches rectangulares de oclusión (cubriendo hasta un 5% del área de la imagen cada uno) en las imágenes. Los parches se llenan de ruido aleatorio o valores medios de píxeles de imagen.
Aumento avanzado de datos: copiar y pegar específico por región
Motivación e impacto: La motivación principal de este aumento dirigido fue abordar un problema crítico de datos: varias marcas de cigarrillos tuvieron muy pocos casos (tan solo una imagen). Una división estándar aleatoria de prueba de validación de trenes podría potencialmente asignar todas las instancias de una marca rara a un solo conjunto (por ejemplo, todas al conjunto de prueba), resultando en que el modelo no tenga oportunidad de aprender o validar esa marca. Este método aumentó artificialmente el tamaño de la muestra para estas marcas subrepresentadas, asegurando que cada marca tenga un número suficiente de instancias distribuidas entre los conjuntos de formación, validación y prueba. Este paso fundamental previene fallos catastróficos en categorías raras y es un requisito previo para cualquier rendimiento significativo del modelo y su generalización en el conjunto completo de marcas.
Este paso requiere un modelo segmental preentrenado sobre el conjunto de datos inicial y el Modelo de Segmento de Cualquier Cosa (SAM)33.
Segmentar objetos fuente: Para imágenes de cajas de cigarrillos de marcas infrarrepresentadas, utiliza el modelo SAM para generar máscaras de segmentación precisas. Utiliza el modo de indicación puntual, haciendo clic en la Característica de Marca de la Caja de Cigarrillos para iniciar la segmentación. Valida y refina manualmente las máscaras generadas para garantizar la precisión. Guarda las imágenes segmentadas de las cajas de cigarrillos con fondos transparentes como archivos PNG. Esto crea una biblioteca de instancias de objetos aislados.
Generar máscaras de fondo: Utiliza el modelo segmental de línea base preentrenado para realizar la segmentación de instancias sobre un conjunto de imágenes de fondo (imágenes con espacio libre amplio o fondos simples). El modelo generará máscaras binarias que indican las regiones ya ocupadas por los objetos.
Máscaras de proceso y pegar objetos: Para cada máscara de fondo, utiliza la biblioteca OpenCV (función 'cv2.approxPolyDP' con un factor épsilon de 0,02 * perímetro de contorno) para realizar ajustes de curva y linealizar los bordes de la máscara, obteniendo una representación poligonal simplificada del espacio libre. Identifica el área de polígonos contiguos más grande dentro de la máscara de fondo como la región de la pasta objetivo. Selecciona aleatoriamente un objeto fuente segmentado de la biblioteca. Redimensionarla (manteniendo la relación de aspecto) y aplicar una transformación afín (rotación menor entre -5° y +5°, y ligera cizalladura) para que encaje de forma natural dentro de la región de la pasta objetivo, asegurando que no se solapen con los límites de los objetos existentes. Utiliza la mezcla alfa para pegar el objeto transformado de forma fluida sobre la imagen de fondo en la ubicación calculada. El marco general de la tecnología de aumento de datos basada en la técnica de copiar y pegar en áreas específicas se muestra en la Figura 2. Genera programáticamente un nuevo archivo de anotación txt correspondiente para el objeto pegado, actualizando las coordenadas del cuadro delimitador y la etiqueta de clase.
Conjunto de datos final aumentado: Este proceso offline genera 600 nuevas imágenes sintéticas. Combínalas con las 4.835 imágenes originales y otras 1.167 imágenes generadas aplicando las técnicas tradicionales de aumento descritas anteriormente para formar el conjunto final de datos de 6.602 imágenes. Divide el conjunto de datos final en conjuntos de entrenamiento (70%, 4.621 imágenes), validación (20%, 1.320 imágenes) y test (10%, 661 imágenes), asegurando que las imágenes de la misma secuencia original se mantengan dentro de la misma división para evitar fugas de datos.
Modificación del modelo para construir el detector mejorado propuesto
Los algoritmos optimizados de detecciónde objetos 34 han logrado avances notables en la inspección industrial en los últimos años. Esta sección proporciona un procedimiento detallado paso a paso para modificar la arquitectura del modelo base para crear el modelo propuesto. Las modificaciones se implementan editando el archivo de configuración del modelo (por ejemplo, config.yaml) y asegurando que las definiciones de módulos personalizados correspondientes se incluyan en la base de código. La justificación de cada modificación se proporciona para esclarecer su papel en la resolución de desafíos específicos de detección. La estructura del modelo propuesto se muestra en la Figura 3.
Sustitución de módulos de muestreo descendente por el módulo ADown: El módulo estándar Convolution-BatchNorm-SiLU (CBS) utilizado para el muestreo reducido emplea una convolución en estratificación única, que puede actuar como cuello de botellade información 35, descartando potencialmente características detalladas cruciales para reconocer cajas pequeñas de cigarrillos y logotipos detallados de marca. El módulo ADown está diseñado para aliviar esto implementando una estructura de doble rama que captura y preserva un conjunto más rico de características durante la reducción de resolución espacial. Una rama prioriza la retención de detalles locales de alta frecuencia, mientras que la otra captura una visión más amplia y rica en contexto. La fusión de estas características complementarias da lugar a una representación más robusta e informativa para las capas posteriores.
Pasos de acción y implementación
Definición de módulo: Asegúrese de que un módulo personalizado de PyTorch llamado ADown esté definido dentro de los archivos de definición del modelo del proyecto. Este módulo debe contener dos ramas paralelas. La primera rama debe consistir en una capa de convolución bidimensional con un núcleo de 3x3 y una zancada de 2. La segunda rama debe consistir secuencialmente en una capa de max-pooling de 2x2 (con paso 2) seguida de una capa de convolución 1x1. Las salidas de estas dos ramas deben concatenarse a lo largo de la dimensión del canal, y el mapa de características resultante se pasa a través de una capa final de convolución 1x1 para integrar los canales y producir la salida. La estructura del módulo ADown se muestra en la Figura 4.
Edición del archivo de configuración: Abre el archivo de configuración del modelo base (config.yaml). Identifica sistemáticamente cada instancia del módulo CBS configurada para el muestreo reducido (es decir, donde el parámetro de paso está establecido en 2). Sustituye cada una de estas entradas del módulo CBS por el nuevo módulo ADown.
Motivación de diseño: El diseño de ADown está motivado por la necesidad de mitigar la pérdida de información en convoluciones estándar de estratificación, que pueden ser perjudiciales para objetos pequeños. Su estructura de doble rama está inspirada en la idea del procesamiento paralelo para capturar tanto detalles espaciales de alta frecuencia (mediante convolución) como información contextual de baja frecuencia (mediante pooling), proporcionando así una representación de características multiescala más rica para capas posteriores.
Integración del módulo iEMA
Fundamento y principio de diseño: Para mejorar la capacidad del modelo de detectar objetivos pequeños y aquellos parcialmente ocultos, es esencial incorporar un mecanismo que pueda modelar eficazmente contextos espaciales a múltiples escalas. El módulo iEMA logra esto integrando un componente Efficient Multi-scale Attention (EMA)36 dentro de una estructura de bloque residual invertido (iRMB)37 . El iRMB proporciona una base computacionalmente eficiente usando convoluciones separables en profundidad, mientras que el componente EMA captura explícitamente interacciones espaciales a escala cruzada mediante un diseño paralelo multirama. Esta integración permite al modelo recalibrar dinámicamente los pesos de las características, centrando la atención en las regiones espaciales más discriminativas a diferentes escalas, mejorando así el reconocimiento bajo oclusión y para objetos pequeños.
Pasos de acción-implementación
Definición del módulo: Asegúrese de que se defina un módulo personalizado de PyTorch llamado iEMA. Este módulo debe implementar primero un bloque residual invertido. Este bloque suele comenzar con una convolución puntual para la expansión del canal, seguida de una convolución en profundidad (por ejemplo, 3x3) para la extracción de características espaciales, y finalmente una convolución puntual para la proyección del canal. Inmediatamente después de este bloque, debería implementarse el mecanismo de atención de la EMA. El mecanismo EMA suele emplear convoluciones agrupadas e interacciones interdimensionales para generar eficientemente un mapa de atención espacial a múltiples escalas sin una sobrecarga computacional excesiva. La estructura del módulo iEMA se muestra en la Figura 5.
Edición de archivos de configuración: En el archivo de configuración config.yaml, localiza las secciones que definen la red de cuello, específicamente las capas inmediatamente posteriores a los módulos C2F. En estas ubicaciones estratégicas, inserta una nueva capa que llame al módulo iEMA.
Motivación de diseño: El módulo iEMA se basa en el principio de mejorar la discriminabilidad de características integrando la extracción local de características (mediante convolución en profundidad) con un mecanismo de modelado global del contexto (EMA) ligero pero eficaz. Este enfoque híbrido permite al modelo centrarse de forma adaptativa en regiones informativas a diferentes escalas, lo cual es crucial para reconocer logotipos y textos de marca parcialmente visibles.
Sustitución de la cabeza de detección por el módulo DynamicHead
Fundamento y principio de diseño: El cabezal de detección original puede no manejar de forma óptima la significativa variación de escala de las cajas de cigarrillos y la compleja interacción entre tareas de localización y clasificación. El módulo DynamicHead aborda esto unificando tres formas de atención en una estructura coherente: conciencia de escala, conciencia espacial y atención consciente de la tarea. El componente consciente de la escala fusiona dinámicamente características de diferentes niveles de la pirámide de características, asegurando que objetos de todos los tamaños estén representados eficazmente. El componente espacialmente consciente emplea una estrategia de muestreo disperso para enfocar los recursos computacionales en las regiones más informativas dentro de los mapas de características. El componente consciente de la tarea adapta la representación de características específicamente para los objetivos distintos de la regresión de la caja delimitadora y la clasificación de categorías. Este enfoque unificado conduce a predicciones más precisas y robustas.
Pasos de acción-implementación
Definición de módulo: Este es un módulo complejo que abarca los tres mecanismos de atención descritos por las Ecuaciones (1) a (4). Su estructura interna incluirá capas para calcular pesos a escala, realizar atención espacial deformable y aplicar transformaciones de características específicas de cada tarea.
(1)
(2)
(3)
(4)
Donde WL(F) denota el mapa final de características refinadas en la atención, obtenido aplicando secuencialmente el π consciente de la escala L(F), el π consciente del espacio y los mecanismos de atenciónconscientes de la tarea π C(F) al rasgo de entrada F. Específicamente, en la Ecuación (2), πL(F) calcula un peso de atención a escala promediando primero las dimensiones espaciales (S) y del canal (C), pasándolo por una función lineal f(⋅) y una activación sigmoide dura σ(⋅). En la Ecuación (3), πS(F) realiza una atención espacial escasa agregando características de K puntos clave muestreados pk, cada uno con un desplazamiento aprendible Δpk para centrarse en regiones discriminativas y un escalar de importancia Δm k. En la Ecuación (4), πC(F) implementa una atención consciente de la tarea aplicando una transformación lineal (gobernada por parámetros aprendidos (α1, β1,α 2,β 2)) a cada canal y seleccionando la respuesta máxima, permitiendo que la cabeza se especialice en tareas de clasificación y regresión. La estructura del módulo DynamicHead se muestra en la Figura 6.
Edición de archivos de configuración: En el archivo config.yaml, encuentra la sección que define la cabeza del modelo, que originalmente contiene el módulo Detect. Sustituyéndolo por una nueva entrada que llame al módulo DynamicHead.
Motivación de diseño: El módulo DynamicHead se basa en la observación de que las cabezas de detección de objetos deben adaptarse a la escala, la ubicación espacial y la tarea. Su marco de atención unificado, formalizado en Ecuaciones. (1-4), permite al modelo recalibrar dinámicamente las respuestas de características basándose en estas tres dimensiones, lo que lleva a predicciones más robustas contra la variación de escala y el desorden de fondo.
Formación en modelos
Asegúrate de que PyTorch 2.1.0, CUDA 12.1 y todas las dependencias estén instaladas.
Mando de entrenamiento
Antes de reentrenar, prepara los datos de imagen dividida y los datos de anotación en un formato estándar de detección de una sola etapa. Crea un archivo .yaml que contenga la ruta de imagen y la categoría de datos. Según la mejora del modelo, el archivo .yaml original del detector es reemplazado por el archivo .yaml propuesto. Escribe el archivo train.py, importa el paquete detector de una sola etapa, carga el modelo de entrenamiento y la ruta de datos, y establece algunos parámetros de entrenamiento, incluyendo imgze=640, epochs=100, batch=4, workers=0, device='0', optimizer='SGD', close_mosaic=10, etc.
Hiperparámetros: Los parámetros clave son: tamaño de la imagen de entrada (640 x 640), tamaño del lote (4), tasa de aprendizaje inicial (0,01) con planificador de recocido coseno, optimizador SGD con momento (0,937) y decaimiento de peso (0,0005). La mejora de mosaico está activada por defecto.
Monitorización de la formación: El proceso de entrenamiento generará métricas para cada época. Monitoriza las curvas para pérdida de entrenamiento/validación y mAP a 0,5 para asegurar la convergencia y evitar sobreajuste. Entrenarse durante 100 épocas suele ser suficiente.
Evaluación y despliegue de modelos
Evaluación: Después del entrenamiento, el mejor modelo se guarda como runs/train/exp/weights/best.pt. Avalíalo en el conjunto val usando: bash python val.py --data cigarette_dataset.yaml --weights runs/train/exp/weights/best.pt. El script mostrará Precisión, Recordación, mAP a 0,5, etc. Confirma que el mAP cumple el umbral requerido (por ejemplo, 97,9%).
Inferencia para verificación: Ejecuta inferencia sobre imágenes de muestra para verificar visualmente los resultados de la detección: bash python detect.py --weights runs/train/exp/weights/best.pt --source path/to/test/images --conf 0.5. Verificando el razonamiento, se pueden obtener los resultados de detección de cada imagen y la velocidad de detección del modelo.
Despliegue: Para un despliegue en tiempo real en el sistema de la grúa apiladora, convierte el modelo PyTorch (best.pt, ~4,7 MB) a un formato como TensorRT o ONNX para optimizar la velocidad de inferencia. La salida final son cuadros delimitadoros con etiquetas de clase (nombres de marca) y puntuaciones de confianza.