0% encontró este documento útil (0 votos)
5 vistas10 páginas

1faster R CNN

El documento describe el funcionamiento de las Redes Neuronales Convolucionales (CNN) y su aplicación en la detección de objetos a través de la Region Proposal Network (RPN). Se detalla cómo las CNN utilizan convoluciones para extraer características de imágenes, cómo la RPN genera propuestas de regiones de interés y cómo se optimizan estas propuestas mediante técnicas como NMS y ROI Pooling. Además, se discuten aspectos de entrenamiento, uso de anclas y métricas de evaluación como IoU.

Cargado por

Rodolfito Duran
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
5 vistas10 páginas

1faster R CNN

El documento describe el funcionamiento de las Redes Neuronales Convolucionales (CNN) y su aplicación en la detección de objetos a través de la Region Proposal Network (RPN). Se detalla cómo las CNN utilizan convoluciones para extraer características de imágenes, cómo la RPN genera propuestas de regiones de interés y cómo se optimizan estas propuestas mediante técnicas como NMS y ROI Pooling. Además, se discuten aspectos de entrenamiento, uso de anclas y métricas de evaluación como IoU.

Cargado por

Rodolfito Duran
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

1) CNN / capas convolucionales

• Qué es: Una CNN (Convolutional Neural Network) es una red neuronal que usa
operaciones llamadas convoluciones para detectar patrones locales (bordes, texturas,
partes de objetos) en imágenes.
• Analogía: Piensa en filtros que “barren” la imagen y responden a características: uno
detecta bordes verticales, otro detecta texturas, etc.
• Output importante: el resultado de aplicar muchas convoluciones y subsampling es el
feature map, que es una representación comprimida (menos resolución espacial) pero
rica en información semántica.

2) Feature map (mapa de características)

• Qué es: Una “imagen” interna producida por la CNN: tiene menos tamaño espacial que
la imagen original pero con múltiples “canales” (cada canal es una característica).
• Por qué importa: La RPN opera sobre este mapa — es más eficiente y captura contexto
útil sin procesar la imagen completa otra vez.

3) RPN (Region Proposal Network)

• Qué es: Una pequeña red que se conecta al feature map y su función es proponer
regiones (cajas) donde posiblemente haya objetos.
• Ventaja frente a métodos clásicos: Antes se usaba Selective Search (algoritmo externo,
lento). RPN aprende a proponer regiones y puede ser entrenado end-to-end con la red.
• Cómo trabaja (en línea): pasa una ventana deslizante (ej. 3×3) sobre el feature map y,
en cada ubicación, genera varios anchors y para cada anchor predice:
o objectness score (clase binaria: objeto/no-objeto)
o regresión (un vector de 4 valores que ajustan la caja)

4) Sliding window (ventana deslizante)

• Qué es: Es la pequeña ventana (por ejemplo 3×3 en el feature map) que se mueve por
todas las posiciones del mapa y extrae la pequeña región local que alimenta a las capas
que predicen anchors.
• Nota: No es que se recorte la imagen en esos parches, sino que la red aplica ese “filtro”
en todas las posiciones.

5) Anchor / anchor box (caja ancla)


• Qué es: Una caja de referencia centrada en una posición del feature map, con una escala
(tamaño) y una relación de aspecto (alto:ancho) predefinida.
• Por qué: Permite que con una sola pasada de la imagen se consideren múltiples tamaños
y formas — en vez de crear varias copias de la imagen a distintas escalas.
• Ejemplo: Si tienes 3 escalas y 3 relaciones de aspecto, K = 3 × 3 = 9 anchors por
posición.
• Analogía: Imagina que en cada punto pones 9 marcos fotográficos de distintos tamaños y
formatos; alguno de esos marcos “encaja” con un objeto real en la imagen.

6) Escala y relación de aspecto (scale & aspect ratio)

• Escala: tamaño del anchor (pequeño, mediano, grande).


• Aspect ratio: forma de la caja (ej. cuadrada 1:1, alargada 1:2, etc.).
• Importancia: Un coche es ancho y bajo, una persona es alta y estrecha; tener varias
relaciones permite detectar objetos con distintas formas.

7) cls y regr (capas “sibling” de la RPN)

• cls (classification): salida que da la probabilidad binaria (objeto vs fondo) para cada
anchor.
• regr (regression): salida que da 4 números que sirven para ajustar (desplazar/estirar) el
anchor y hacerlo coincidir mejor con el ground-truth (verdadera caja).
• Salida por anchor:
o cls → 2 valores (probabilidades para fondo/objeto).
o regr → 4 valores (Δx, Δy, Δw, Δh o similar).

8) Objectness score (puntuación de “ser objeto”)

• Qué es: La probabilidad (o puntuación) que indica si un anchor contiene un objeto


(cualquier clase) o solo fondo.

Si el primer elemento es uno y el segundo es cero, la propuesta de región se clasifica


como fondo. Si el segundo elemento es uno y el primero es cero, la región representa
un objeto.

• Uso: Se usa para filtrar anchors débiles antes de pasar a clasificación fina o de aplicar
NMS.
9) IoU — Intersection over Union (Intersección sobre Unión)

• Qué es: Métrica que mide cuánto se solapan dos cajas:


o IoU = (area de intersección) / (area de unión).
• Rango: 0.0 (sin solapamiento) a 1.0 (idénticas).
• Ejemplo numérico (con paso a paso):
Supongamos:
o Área caja A = 20
o Área caja B = 30
o Área de intersección = 10
Entonces la unión = áreaA + áreaB − intersección = 20 + 30 − 10 = 40.
IoU = intersección / unión = 10 / 40.
Calculemos división paso a paso: 10 ÷ 40 = 0.25.
Resultado: IoU = 0.25.
• Uso en RPN (etiquetado):
o Si IoU ≥ 0.7 → anchor positivo (contiene objeto).
o Si IoU < 0.3 → anchor negativo (fondo).
o Si 0.3 ≤ IoU ≤ 0.5 (a veces 0.5) → neutral/no usado en entrenamiento.
o Además: si ningún anchor alcanza 0.7 para un ground-truth, se fuerza a asignar
positivo al anchor con IoU máximo (aunque sea 0.55 por ejemplo).

10) Selective Search / EdgeBoxes (métodos clásicos de propuestas)

• Qué son: Algoritmos tradicionales que generan propuestas de regiones a partir de cues de
la imagen (segmentación, bordes, colores). No aprenden; son heurísticos.
• Por qué RPN mejora: Son lentos y no adaptables; RPN aprende y se integra en la red,
por eso es más rápido y produce mejores propuestas específicas para la tarea.

11) ROI Pooling (Region of Interest Pooling)

• Qué es: Una capa que toma una región (de tamaño variable) en el feature map y la
convierte en un vector de longitud fija (por ejemplo, una salida 7×7 por canal), para que
luego se pueda usar un clasificador totalmente conectado (FC).
• Cómo lo hace (resumen): divide la región en subcuadrículas y aplica max-pooling en
cada subcuadrícula para obtener valores fijos.
• Analogía: Si cortas recortes de distintas dimensiones, ROI Pooling los “empaqueta”
todos dentro de cajas del mismo tamaño para que pasen por la misma capa FC.

12) NMS — Non-Maximum Suppression (Supresión de no máximos)


• Qué es: Técnica para eliminar detecciones redundantes: cuando varias cajas se
superponen y apuntan al mismo objeto, NMS deja solo la mejor (por puntuación) y
descarta las demás si su IoU con la mejor supera un umbral (ej. 0.7).
• Por qué es útil: Evita múltiples detecciones para el mismo objeto.

13) Feature sharing / compartir capas

• Idea: Tanto RPN como Fast R-CNN usan las mismas capas convolucionales iniciales (no
duplicadas).
• Ventaja: Ahorra cómputo y mejora consistencia (las propuestas y las detecciones usan
las mismas representaciones).

14) Entrenamiento: Alternating / Approximate joint / Non-approx joint

• Alternating training (entrenamiento alternado):


1. Entrenas la RPN (pesos compartidos se inicializan con modelo pre-entrenado, p.
ej. ImageNet).
2. Generas propuestas y usas esas para entrenar Fast R-CNN (manteniendo los pesos
compartidos).
3. Repetir: ajustar RPN usando los pesos afinados y volver a entrenar Fast R-CNN,
etc.
o Pros: Buen equilibrio y resultados estables. Es el método preferido en el paper.
• Approximate joint training (entrenamiento conjunto aproximado):
o Tratas todo como una red única pero ignoras el gradiente que viaja a través de las
cajas propuestas (no actualizas los parámetros que se afectarían por el hecho de
que las cajas dependen de la RPN). Más rápido (~25–50% menos tiempo) pero
algo menos preciso.
• Non-approx joint training (conjunto no aproximado):
o Se usan capas (RoI Warping) que permiten propagar gradientes también a través
de las propuestas para un entrenamiento verdaderamente conjunto — más exacto
pero más complejo de implementar.

15) RoI Warping (o RoI Align en trabajos posteriores)

• RoI Warping / Align: una mejora de ROI Pooling que corrige errores por cuantización
espacial (cuando se redondean coordenadas). Permite un cálculo más fino de los features
para regiones.
• Por qué importa: mejora precisión en tareas donde la alineación espacial es crítica (p. ej.
detección fina de posiciones).
16) Mini-batch y convergencia

• Mini-batch: en el entrenamiento se usa un conjunto pequeño de ejemplos por iteración


(p. ej. la RPN usa 256 anchors por mini-batch).
• Problema que menciona el paper: esos 256 anchors pueden provenir de una sola
imagen (si se extraen todos de la misma), y entonces las muestras están correlacionadas
(similares), lo que puede ralentizar la convergencia porque el gradiente no es tan variado.
• Solución práctica: mezclar imágenes, usar muestreo equilibrado positivo/negativo, o
aumentar diversidad en el batch.

17) Regresión de cajas (bounding box regression)

• Qué hace: en vez de predecir la caja final directamente, la red predice desplazamientos
(Δx, Δy) y cambios de escala (Δw, Δh) respecto al anchor — luego esos ajustes se
aplican para obtener la caja final.
• Ventaja: es más estable que predecir coordenadas absolutas.

18) Pre-trained model / Transfer learning

• Qué es: usar una red entrenada en un dataset grande (por ejemplo ImageNet) para
inicializar las capas convolucionales.
• Por qué: acelera el entrenamiento y mejora precisión con pocos datos, porque las
primeras capas ya aprendieron a detectar patrones básicos (bordes, texturas).

19) Umbrales usados en RPN (0.7, 0.3, 0.5)

• 0.7: Giros de confianza alta → anchor claramente positivo.


• < 0.3: claramente negativo.
• entre 0.3 y 0.5 (o 0.7 en ciertas reglas): zona ambigua — no se usa para entrenar (evita
ruido).
• Regla especial: si ningún anchor alcanza 0.7 para un ground-truth, se marca como
positivo el que tenga la IoU máxima (aunque sea 0.55), para asegurarse de que cada
objeto tiene al menos un anchor positivo.

20) Pérdida (loss) en RPN


• Componentes:
o Clasificación (cls): pérdida binaria entre predicción objectness y etiqueta
(objeto/fondo).
o Regresión (regr): pérdida de los 4 valores de ajuste (por ejemplo Smooth L1).
• Notas: Solo los anchors positivos contribuyen al término de regresión. Los neutrales no
contribuyen a la pérdida.

21) Ejemplo práctico — pasos concretos con números sencillos

Imagina una imagen simple con un solo objeto (un perro) y un feature map 5×5.

• En cada celda 5×5 colocas K = 9 anchors → 25 × 9 = 225 anchors totales.


• La RPN calcula para cada anchor: objectness + ajustes.
• Filtras por puntuación (ej. quedarte con las 200 mejores) y aplicas NMS para quitar
duplicados.
• Pasas las cajas finales al Fast R-CNN que aplica ROI Pooling → vectores fijos →
clasificador multi-clase → salida final (clase + caja refinada).

22) Errores comunes al empezar

• Pensar que anchors son cajas fijas en píxeles: no, son definidos respecto al stride del
feature map y se transforman a coordenadas de imagen.
• Confundir ROI Pooling con recorte de imagen: ROI Pooling opera en feature maps,
no sobre píxeles crudos (aunque la idea es similar).
• Ignorar el muestreo positivo/negativo: durante el entrenamiento la RPN normalmente
toma un número fijo de ejemplos por mini-batch (ej. 256), con un balance entre positivos
y negativos, para estabilizar entrenamiento.

_____________________________________________________________________________________
_____________________________________________________________________________________

1) Flujo general (lado izquierdo de la figura)


1. Imagen (input)
o Entrada: imagen RGB, por ejemplo 800×600×3 (alto × ancho × canales).
o Ejemplo visual: perro y gato en la imagen.
2. Conv layers (capas convolucionales compartidas)
o Operación: varias capas convolucionales + activaciones + pooling (ej. VGG16,
ResNet).
o Salida: feature map. Si la CNN reduce la resolución por un factor stride (por
ejemplo 16), un input 800×600 produce un feature map de aprox 50×37
(dependiendo de padding/strides).
o Canales: muchas (ej. 512).
o Concepto clave: estas capas se usan tanto por el RPN como por el Fast R-
CNN (feature sharing).
3. Feature maps → dos usos
o Flecha hacia la derecha: alimenta el Region Proposal Network (RPN).
o Flecha hacia arriba: las regiones propuestas, una vez filtradas, se proyectan de
nuevo sobre este feature map para extraer features fijos por región (RoI Pooling).
4. Region Proposal Network (RPN)
o Genera proposals (cajas candidatas) basadas en el feature map.
o Después de filtrarlos (NMS, selección por puntuación), entrega una lista de cajas
con puntuaciones de objectness.
5. Proposals → RoI Pooling (sobre el mismo feature map)
o Para cada propuesta (caja con tamaño variable) se toma la región correspondiente
del feature map y se aplica RoI Pooling para producir un tensor de tamaño fijo,
por ejemplo 7×7×C (donde C es el número de canales del feature map).
o Resultado: vectores de longitud fija (alplanados) que pueden pasar por capas
totalmente conectadas.
6. RoI Pooling → Classifier (Fast R-CNN)
o Capas FC/densas que realizan clasificación multi-clase (¿gato, perro, fondo,
etc.?) y afinan la caja con una regresión de bounding box específica por clase.
o Salida final: para cada región, la clase con su probabilidad y la caja refinada.

2) Zoom en el RPN (lado derecho de la figura) — cómo funciona


internamente
Observa el recuadro de puntos punteados: ahí está el RPN en detalle.

1. Input: Feature map (desde la CNN)


o El RPN aplica una conv layer (normalmente 3×3) sobre el feature map que
“resume” la información local en cada posición.
2. Anchor boxes (por posición)
o En cada posición espacial (cada celda de ese feature map) se generan K anchors
(p. ej. K=9 si usamos 3 escalas × 3 relaciones de aspecto).
o Cada anchor es una caja de referencia en coordenadas de la imagen (calculada
desde la posición en el feature map y el stride).
3. Salidas por anchor: dos ramas “sibling”
o Binary category prediction (cls): para cada anchor predice si contiene objeto o
es fondo (objectness). Resultado: 2 valores por anchor (o una probabilidad).
▪ Si hay 225 posiciones y K=9 → 225×9 = 2025 anchors → cls produce
2025×2 scores (o 2025 puntuaciones).
o Bounding box prediction (regresión): por cada anchor predice 4 valores (Δx,
Δy, Δw, Δh) que son los ajustes para transformar el anchor en una caja más
precisa. Resultado: 2025×4 valores.
4. Cómo se parametrizan esos ajustes
o Fórmula típica (simplificada):
▪ tx = (x − xa)/wa, ty = (y − ya)/ha
▪ tw = log⁡(w/wa), th = log⁡(h/ha)
▪ La red predice estas t* que luego se “deshacen” para obtener la caja final.
o Ventaja: predecir desplazamientos relativos es más estable que coordenadas
absolutas.
5. Filtrado inicial y NMS
o Se ordenan los anchors por objectness score y se toman las top-N (ej. top 2000 en
entrenamiento, top 300 en test).
o Se aplica NMS (Non-Maximum Suppression): si dos cajas se solapan mucho
(IoU mayor a un umbral, p. ej. 0.7), se elimina la de menor puntuación. Esto
reduce duplicados.
6. Salida del RPN → proposals (cajas finales)
o Las cajas filtradas y no suprimidas son las proposals que se envían al Fast R-CNN
(RoI Pooling → clasificación final).

3) Cómo se etiquetan anchors durante el entrenamiento (IoU y


etiquetas)
• Para entrenar la rama cls del RPN necesitamos saber cuáles anchors son positivos y
cuáles negativos:
1. Positivo si IoU(anchor, cualquier ground-truth) ≥ 0.7.
2. Si no hay anchor con IoU ≥ 0.7 para ese ground-truth, seleccionar el anchor con
IoU máximo y marcarlo positivo (aunque su IoU sea, por ejemplo, 0.55).
3. Negativo si IoU(anchor, todos los ground-truth) < 0.3.
4. Neutral si IoU entre 0.3 y 0.7 (o 0.5 en algunas implementaciones) — estos no
contribuyen a la pérdida.
• Ejemplo numérico:
o Anchor A vs GT: IoU = 0.9 → positivo.
o Anchor B vs GTs: IoUs = [0.2, 0.55, 0.1] → máximo 0.55; si no existe ninguno
≥0.7, el máximo (0.55) se marca positivo.
o Anchor C vs GTs: IoUs = [0.2, 0.25, 0.1] → negativo.
4) Pérdidas y qué aprende la RPN
• Loss total (RPN) = cls_loss + λ * reg_loss
o cls_loss: cross-entropy binaria (objeto vs fondo) sobre anchors etiquetados.
o reg_loss: pérdida de regresión (por ejemplo Smooth L1) sobre las 4 coordenadas
predichas — solo aplicada a anchors positivos.
• En la práctica se usa muestreo: de los muchos anchors se selecciona un mini-batch fijo
(ej. 256) con un balance entre positivos y negativos (p. ej. máximo 1:1).

5) Relación entre la parte derecha (RPN) y la izquierda (Fast R-CNN)


• Feature sharing: la conv layer que produce el feature map es la misma tanto para RPN
como para Fast R-CNN → ahorro de computo y coherencia.
• Workflow práctico:
1. La CNN produce feature maps.
2. El RPN propone cajas.
3. Las propuestas se aplican sobre el mismo feature map con RoI Pooling.
4. El clasificador final (dense layers) produce clase y afinamientos finales de caja.

6) Ejemplo concreto y números (para visualizar)


Imagina:

• Feature map: 50×37 (1875 posiciones).


• K = 9 anchors por posición → total anchors = 1875×9 = 16875 anchors.
• RPN predice 16875 objectness scores y 16875×4 regresiones.
• Se toman top 2000 por score → se hace NMS → quedan ~300 proposals → se pasan al
Fast R-CNN.
• RoI Pooling: cada proposal → 7×7×512 → aplanado → FC → clasificación final.

7) Notas prácticas / mejoras y puntos clave


• RoI Align (mejora de RoI Pooling): evita la cuantización de coordenadas y da mejor
precisión.
• Entrenamiento alternado: se entrena RPN y Fast R-CNN de forma alternada para que
ambos se beneficien del ajuste de pesos compartidos.
• Problema de convergencia: si las 256 muestras del mini-batch vienen de una sola
imagen pueden estar correlacionadas; por eso se muestrea pensando en diversidad.
8) Mapeo directo a la figura (línea a línea)
• Caja inferior: image (perro + gato).
• Bloque grande blanco/crema: conv layers → sale el feature map (capa negra con puntos
blancos).
• A la derecha del feature map aparece el recuadro punteado: Region proposal network
— dentro: Conv layer → Anchor box → dos salidas (Binary category prediction y
Bounding box prediction).
• Esa salida va a NMS (pequeño bloque intermedio).
• Salida de NMS → proposals (varias cajas dibujadas) → retornan arriba al RoI pooling
en el feature map.
• RoI pooling → Dense layer (clasificador) → dos salidas: Category prediction (qué
clase) y Bounding box prediction final (afinamiento por clase).

9) Si quieres que lo haga más visual


Puedo ahora (elige una):


1. Hacer un ejemplo numérico completo con coordenadas concretas y cálculos de
IoU y aplicación de Δx,Δy,Δw,Δh para una caja concreta.

2. Dibujar un diagrama ASCII paso a paso para que se vea el flujo.


3. Escribir pseudocódigo (o fragmento PyTorch) que muestre cómo se crean


anchors, cómo se calcula la loss del RPN y cómo se aplica NMS.

También podría gustarte