Upload
stan
View
34
Download
1
Embed Size (px)
DESCRIPTION
CAMELLIA: C ore for A mbient and M obile int ELL igent I maging A pplications. Curso de doctorado: Diseño de Procesadores para Multimedia Profesor: Antonio Núñez Junio 2004. Agenda. Introducción Objetivos Campo de aplicación Arquitectura del sistema Smart Imaging Copro - PowerPoint PPT Presentation
Citation preview
Víctor Reyes Suá[email protected]
1
Inst
ituto
Uni
vers
itario
de
Mic
roel
ectr
ónic
a A
plic
ada
CAMELLIA: Core for Ambient and Mobile intELLigent Imaging
Applications
Curso de doctorado: Diseño de Procesadores para MultimediaProfesor: Antonio NúñezJunio 2004
Víctor Reyes Suá[email protected]
2
Inst
ituto
Uni
vers
itario
de
Mic
roel
ectr
ónic
a A
plic
ada
AgendaAgenda
1. Introducción2. Objetivos3. Campo de aplicación4. Arquitectura del sistema5. Smart Imaging Copro6. Estimador de Movimiento7. Soporte software8. Conclusiones
Víctor Reyes Suá[email protected]
3
Inst
ituto
Uni
vers
itario
de
Mic
roel
ectr
ónic
a A
plic
ada
IntroducciónIntroducción
Motivación: crecimiento de la demanda en las áreas de aplicación de las “Smart Cameras”
“Smart Imaging” combina:
o Captura de imágenes y video
o Procesamiento e interpretación del contenido de las escenas
Nace el proyecto CAMELLIA IST-2001-34410
Incrementar la competitividad europea frente a USA
Víctor Reyes Suá[email protected]
4
Inst
ituto
Uni
vers
itario
de
Mic
roel
ectr
ónic
a A
plic
ada
ObjetivosObjetivos
Desarrollar un “Smart Imaging” SoC que pueda ser embebido en una cámara
Basado en una existente plataforma de compresión de video MPEG
“Low-cost” y “Low-power”
Alta potencia de procesamiento – Ejecución en tiempo real
Máxima Flexibilidad: cubrir un amplio abanico de aplicaciones tipo “Smart Imaging”
Víctor Reyes Suá[email protected]
5
Inst
ituto
Uni
vers
itario
de
Mic
roel
ectr
ónic
a A
plic
ada
Campo de aplicaciónCampo de aplicación Aplicaciones de automoción y de comunicaciones móviles
Detección de objetos a baja velocidad
Detección de peatones
Detección y seguimiento de caras
Estabilización de imagen
Solución flexible para cualquier otro tipo de aplicación de “Smart Imaging”
Víctor Reyes Suá[email protected]
6
Inst
ituto
Uni
vers
itario
de
Mic
roel
ectr
ónic
a A
plic
ada
Estructura de las aplicaciones (ejemplo)Estructura de las aplicaciones (ejemplo)
Detección de objetos a baja velocidad:– Algoritmo de alto nivel: Filtro de partículas
(probabilidades)– Algoritmos de nivel medio:
• Segmentación de movimiento• Detección de sombras• Detección de luces• Detección de bordes• Detección de simetría
– Algoritmos de bajo nivel: Escalado, Operaciones aritméticas, Operaciones morfológicas, Filtrado lineal, Filtrado de media, Histograma, Sumatoria horizontal/vertical
Víctor Reyes Suá[email protected]
7
Inst
ituto
Uni
vers
itario
de
Mic
roel
ectr
ónic
a A
plic
ada Detección de sombras:
– Busca áreas de oscuridad en la carretera– Utiliza: Histograma, Thresholding, Erosión,
Etiquetado+Blob
Road Histogram
020406080
100120140160180
1 21 41 61 81 101 121 141 161 181 201 221 241
Pixel value
Nu
m o
f P
ixel
s
Series1
Estructura de las aplicaciones (ejemplo)Estructura de las aplicaciones (ejemplo)
Víctor Reyes Suá[email protected]
8
Inst
ituto
Uni
vers
itario
de
Mic
roel
ectr
ónic
a A
plic
ada
Estructura de las aplicaciones (ejemplo)Estructura de las aplicaciones (ejemplo)
Detección de bordes verticales:– Se basa en el cálculo la sumatoria vertical de
algunas zonas de la imagen. Normalmente primero se realiza un filtrado lineal para la detección de los bordes.
Víctor Reyes Suá[email protected]
9
Inst
ituto
Uni
vers
itario
de
Mic
roel
ectr
ónic
a A
plic
ada
Arquitectura del sistemaArquitectura del sistema
VideoI/O
Core Architecture
MemoryCtrl
SystemMemory
InternalMemory
ARM9CPU
I/OCtrl
Camera
Display
Ext. Peripherals
Video Compression
Bus Infrastructure (Data, Ctrl, Sync)
Control del sistema y
algoritmos de medio y alto
nivel
ME TC BSG SmartImaging
ME
Coprocessors for core algorithmsCoprocesadores para procesamiento de bajo nivel
Plataforma base: Codificador de Vídeo MPEG4 de Philips
Víctor Reyes Suá[email protected]
10
Inst
ituto
Uni
vers
itario
de
Mic
roel
ectr
ónic
a A
plic
ada
Mapeado de las aplicacionesMapeado de las aplicaciones
MLA 1 MLA 3 ( Motiondetection )
ParticleFiltering
Output stage
MLA 2 MLA 4
on ARM-CPUincluding likelihood functions
on ARM-CPU
LLALLALLA LLALLALLA LLALLALLA LLALLALLA
on SI coprocessor
on ME
Víctor Reyes Suá[email protected]
11
Inst
ituto
Uni
vers
itario
de
Mic
roel
ectr
ónic
a A
plic
ada
Smart-Imaging CoproSmart-Imaging Copro Cada aplicación pueden ejecutar distintos LLAs y en distinto orden
Se requiere un mínimo de flexibilidad en el diseño
Arquitectura posicionada entre un ASIC y DSP
Ventajas:
- Equilibrio entre flexibilidad y eficiencia
- Flexibilidad de un DSP no se alcanza completamente, pero..
- .. casi se alcanza la eficiencia de un ASIC por medio de compartir recursos en el datapath
Víctor Reyes Suá[email protected]
12
Inst
ituto
Uni
vers
itario
de
Mic
roel
ectr
ónic
a A
plic
ada
Diseño del coprocesador SI Diseño del coprocesador SI Desarrollar un único tipo de coprocesador que cubra todas las
aplicaciones
– Se busca compartir recursos (control, memoria, unidades funcionales)
– Se requiere una cierta programabilidad
– Se analizan los LLAs que se van a mapear en el coprocesador
– Se identifican y se clasifican las funciones y operaciones básicas de cada algoritmo
– Se extraen las operaciones aritméticas comunes Se obtienen los requerimientos para el data path Se define el conjunto de microinstrucciones
– Control del data path
Víctor Reyes Suá[email protected]
13
Inst
ituto
Uni
vers
itario
de
Mic
roel
ectr
ónic
a A
plic
ada
Ejemplo de MicroinstrucciónEjemplo de Microinstrucción Condición Especial Máxima
– Aceleración de la operación morfológica Dilación– Encuentra el máximo valor en una segmento de imagen con
forma arbitraria
MAX MAX MAXMAX
REG REG REG REG
8 8 8 8
8 8 8 8
condition
4
Operands
Structuring Element
Entry
Víctor Reyes Suá[email protected]
14
Inst
ituto
Uni
vers
itario
de
Mic
roel
ectr
ónic
a A
plic
ada
Controlando el coprocesador de SIControlando el coprocesador de SI Se elige un control jerárquico
- Para limitar la comunicación entre la CPU y el coprocesador
- Para simplificar la interfaz SW/HW
Level 1: Microinstrucciones (dentro del coprocesador)
- Para controlar el núcleo del coprocesador
Level 2: Macroinstrucciones (interfaz con el sistema)
- Para controlar el SI copro desde la CPU
- Para iniciar la ejecución de secuencia de microinstrucciones
- Para iniciar operaciones de transferencia de datos
Beneficio: Reducir la comunicación entre la CPU y el coprocesador, pero manteniendo la flexibilidad
Víctor Reyes Suá[email protected]
15
Inst
ituto
Uni
vers
itario
de
Mic
roel
ectr
ónic
a A
plic
ada
Arquitectura del SI coproArquitectura del SI copro
Memory
Data path
Copro
cess
or
Contr
ol U
nit
Data I/O
RegFile Data RAM 1(a/b)
Data Ram 2(a/b)
Data Ram 3
Data IF
Macr
oin
stru
ctio
n
IF
SI Core
Arithmetic 1
Arithmetic 2
Accu Regs
RLE Unit
Syst
em
Contr
ol In
terf
ace
Contr
ol
IF
Víctor Reyes Suá[email protected]
16
Inst
ituto
Uni
vers
itario
de
Mic
roel
ectr
ónic
a A
plic
ada
Datapath: Arithmetic 1Datapath: Arithmetic 1
ADD/SUB INV 2 x MUL THRESH SHIFT/ROTL
ABS
Pipeline Register
AND/OR/XOR
MIN/MAX HISTO LUT ADD/SUB
Indirectmemoryaccess
Accu Regs
Operands from local Memory
ControlWord (A1_INS)
Pipeline Register
to Arithmetic 2
EXE 1
EXE 2
Víctor Reyes Suá[email protected]
17
Inst
ituto
Uni
vers
itario
de
Mic
roel
ectr
ónic
a A
plic
ada
Datapath: Arithmetic 2Datapath: Arithmetic 2
SEL/CLIP/ABS SUM MAX/MIN
SHIFT
from Arithmetic 1
ControlWord (A2_INS)
Pipeline Register
to local Memory
EXE 3
Víctor Reyes Suá[email protected]
18
Inst
ituto
Uni
vers
itario
de
Mic
roel
ectr
ónic
a A
plic
ada
Ejemplos de operación: FilterEjemplos de operación: Filter
-1 0 1
-2 0 2
-1 0 1
Filtrado lineal utiliza distintos filtros de gradiente (kernel) para detectar cosas diferentes. Ejemplo: Detección de bordes verticales utiliza un kernel tipo Sobel_3x3_V
Sobel_3x3_VPixel
i-1,j-1
Pixel
I,j-1
Pixel
i+1,j-1
Pixel
i-1,j
Pixel
i,j
Pixel
i+1,j
Pixel
i-1,j+1
Pixel
i.j+1
Pixel
i+1,j+1
Bloque de entrada MxN
Bloque de salida M-(Ksize/2)xN-(Ksize/2)
Out_pixel i,j = In_pixel i-1,j-1 * k0,0 +
In_pixel i,j-1 * k0,1 +
In_pixel i+1,j-1 * k0,2 +
In_pixel i-1,j * k1,0 +
In_pixel i,j * k1,1 +
In_pixel i+1,j * k1,2 +
In_pixel i-1,j+1 * k2,0 +
In_pixel i,j+1 * k2,1 +
In_pixel i+1,j+1 * k2,2
Víctor Reyes Suá[email protected]
19
Inst
ituto
Uni
vers
itario
de
Mic
roel
ectr
ónic
a A
plic
ada
Ejemplos de operación: FilterEjemplos de operación: Filter
Arithmetic Unit 1 (3 Arithmetic Stages)support for processing of 4 pixels in parallel
ADD/SUB INV 2 x MUL THRESH SHIFT/ROTL
ABS
Pipeline Register
AND/OR/XOR
MIN/MAX HISTO LUT ADD/SUB
Accu RegsPipeline Register
EXE 1
EXE 2
SEL/CLIP/ABS SUM MAX/MIN
SHIFT
EXE 3
1 x MUL
Accu Regs
SEL/CLIP/ABS
SHIFT
Pipeline Register
ADD/SUB
Víctor Reyes Suá[email protected]
20
Inst
ituto
Uni
vers
itario
de
Mic
roel
ectr
ónic
a A
plic
ada
Ejemplos de operación: DilationEjemplos de operación: Dilation
0 1 0
1 1 1
0 1 0
Dilación (ó dilatación) también utiliza máscaras de diversos tipos. Ejemplo: Dilación con máscara circular
Circle_3x3Pixel
i-1,j-1
Pixel
I,j-1
Pixel
i+1,j-1
Pixel
i-1,j
Pixel
i,j
Pixel
i+1,j
Pixel
i-1,j+1
Pixel
i.j+1
Pixel
i+1,j+1
Bloque de entrada MxN
Bloque de salida M-(Ksize/2)xN-(Ksize/2)
Out_pixel i,j = Máximo valor (
In_pixel i,j-1,
In_pixel i-1,j,
In_pixel i,j,
In_pixel i+1,j,
In_pixel i,j+1
)
Víctor Reyes Suá[email protected]
21
Inst
ituto
Uni
vers
itario
de
Mic
roel
ectr
ónic
a A
plic
ada
Ejemplos de operación: Erosion/DilationEjemplos de operación: Erosion/Dilation
Arithmetic Unit 1 (3 Arithmetic Stages)support for processing of 4 pixels in parallel
ADD/SUB INV 2 x MUL THRESH SHIFT/ROTL
ABS
Pipeline Register
AND/OR/XOR
MIN/MAX HISTO LUT ADD/SUB
Accu RegsPipeline Register
EXE 1
EXE 2
SEL/CLIP/ABS SUM MAX/MIN
SHIFT
EXE 3
Pipeline Register
MIN/MAX
Accu Regs
SEL/CLIP/ABS
SHIFT
Víctor Reyes Suá[email protected]
22
Inst
ituto
Uni
vers
itario
de
Mic
roel
ectr
ónic
a A
plic
ada
Funcionalidad del SI coproFuncionalidad del SI copro
LLAs requeridos Soportados por el coprocesador de SI
Operaciones aritméticas
Matemática morfológica (Erosión y dilación)
Etiquetado RLE en el copro, etiquetado con los valores de RLE en la CPU
Histograma
Blob analysis En la CPU
Filtrado lineal
Sumatoria Ver. & hor.
Escalado
Corrección de la imagen (como LUT)
Movimientos de memoria
Computación del momento (como la media y la desviación estándar)
Cálculo del Mínimo y Máximo
Víctor Reyes Suá[email protected]
23
Inst
ituto
Uni
vers
itario
de
Mic
roel
ectr
ónic
a A
plic
ada
Estimador de MovimientoEstimador de Movimiento Arquitectura: Application Specific Instruction-set Processor (ASIP) Diseño: Uso de herramientas de síntesis de alto nivel desde C
– Herramienta A|RT de Adelante technologies• Arquitectura básica tipo VLIW
• Permite la integración de Unidades de Aplicación Específica (ASUs)
-code
FSM
I. Reg. Communication Bus/Network
Distributed Register Files
VLIW ctrl
ACU ROMRAMALUASU ASU
Application Specific Units
Default Units
Se modifica el ME original para cumplir los requerimientos de las aplicaciones de Camellia
Víctor Reyes Suá[email protected]
24
Inst
ituto
Uni
vers
itario
de
Mic
roel
ectr
ónic
a A
plic
ada
Características del Estimador de MovimientoCaracterísticas del Estimador de Movimiento
Modificaciones se basan en el “Camellia Motion Segmentation Algorithm (CMSA)”
Estimación de movimiento basada en bloques 2D
– 16 x 16 pixels por bloque; Imágenes YUV 4:2:2 Modelo de movimiento con 2 coordenadas (vx,vy)
– Tamaño máximo de las coordenadas es 8 bits, precisión de cuarto de pixel
– 15 diferentes modelos de movimiento candidatos
– 3 aleatorios, 8 espaciales y 4 temporales “Scan orders”
– LRTB, RLBT, aleatorio
Víctor Reyes Suá[email protected]
25
Inst
ituto
Uni
vers
itario
de
Mic
roel
ectr
ónic
a A
plic
ada
Camellia ME vs. Video Encoding MECamellia ME vs. Video Encoding ME
Camellia Codificador de Vídeo
Componentes de vídeo Y, U , V Solo Y
Scan Order LRTB, RLBT y aleatorio
LRTB
Tamaño máximo de las coordenadas (Vx, Vy)
8 pixels Cualquier tamaño
Valores SAD 3 mejores 1 mejor
Víctor Reyes Suá[email protected]
26
Inst
ituto
Uni
vers
itario
de
Mic
roel
ectr
ónic
a A
plic
ada
Unidades de aplicación específicaUnidades de aplicación específica
4 ASUs dentro del Camellia ME “Reference Block Buffer” (almacena los bloques de la imagen actual)
– 4 bancos de 16 líneas de pixels de 32 bits (2 Kbits) “Search Area Buffer” (almacena bloques de la imagen previa)
– 12 bancos de 32 líneas de pixels de 32 bits (12Kbits) “Bi-linear Interpolator”
– Soporta precisión de ¼-pixel
-code
FSM
I.Reg. Communication Bus/Network
Register Files
VLIW Ctrl
ACU MULTRAMROM
ALUSADSAbuf
RBbuf
BI
“Sum of Absolute Difference”
- Cálcula 16 pixels en paralelo
Víctor Reyes Suá[email protected]
27
Inst
ituto
Uni
vers
itario
de
Mic
roel
ectr
ónic
a A
plic
ada
Ejemplo de ASUEjemplo de ASU “Search Area Buffer”
– Almacena el área de búsqueda– 12 bancos de 32 líneas de 32 bits (12Kbits)– Salida: 17 pixels/cycle
• Soporta 16 pixels en paralelo y presición de cuarto de pixel• Salida de los bancos están concatenadas y alineadas por
el módulo “filter”
bank11
filter
32
FSM
pels
c2
Q[31:0]
A[4:0]
D[31:0]
web
SRAM
Q[31:0]
A[4:0]
D[31:0]
web
SRAM
Q[31:0]
A[4:0]
D[31:0]
web
SRAM
Q[31:0]
A[4:0]
D[31:0]
web
SRAM
bank10bank1bank0
frame constants
run constants
Fetch control
filterctrl
c3c0 c1
32
c4
323232 8
webctrl
addrctrl
Víctor Reyes Suá[email protected]
28
Inst
ituto
Uni
vers
itario
de
Mic
roel
ectr
ónic
a A
plic
ada
Ejemplo de ASUEjemplo de ASU “Bi-linear Interpolator”
– Interpolación de pixels hasta la resolución de cuarto de pixel• Cálculo de la media con peso de los 4 pixels vecinos• Los pesos se determinan por medio de los valores fraccionales
de Dx y Dy– La ASU registra la línea de pixels previa y en un ciclo se obtiene la
línea de salida interpolada
p
four nearest neighboursof pixel pCurrent pixel-line
Interpolated pixel-line
Previous (registered) pixel-line
D
Víctor Reyes Suá[email protected]
29
Inst
ituto
Uni
vers
itario
de
Mic
roel
ectr
ónic
a A
plic
ada
Soporte softwareSoporte software
Librería software para el desarrollo de aplicaciones “Smart Imaging” en entorno PC:
- Rutinas de bajo nivel escritas en C
- “Camellia Image Processing Library” disponible como código abierto en SourceForge
Librería software para el desarrollo de aplicaciones “Smart -Imaging” en entorno embebidos (ARM):
-Basada en macroinstrucciones y enfocada a ser ejecutada en el coprocesador de SI
- Compatibilidad con la “Camellia Image Processing Library”
Víctor Reyes Suá[email protected]
30
Inst
ituto
Uni
vers
itario
de
Mic
roel
ectr
ónic
a A
plic
ada
ConclusionesConclusiones Diseño de un coprocesador enfocado a acelerar algoritmos básicos para “Smart Imaging”
- Área : 0,8 mm2 CMOS 0.12
- Frecuencia máxima : 100 MHz
- 4 MOPS
Adaptación de un coprocesador Estimador de Movimiento para aplicaciones “Smart Imaging”
Diseño de una plataforma SW/HW flexible y competitiva para el desarrollo de aplicaciones en el campo de las “Smart Cameras”