|
1 | 1 | # Reconocedor de Texto(OCR) para Patentes vehiculares de Argentina
|
2 | 2 |
|
3 |
| -[](https://www.youtube.com/watch?v=4OG1TW4ZV8E) |
| 3 | + |
4 | 4 |
|
5 | 5 | **OCR** implementado con solo Redes Convolucionales (**CNN**) de Patentes Argentinas. Los modelos son entrenados con patentes de 6 digitos (viejas) y patentes del Mercosur de 7 digitos (las nuevas). Este repo esta dedicado solamente al modulo que se encarga de reconocer texto de la patente ya recortada.
|
6 | 6 |
|
@@ -153,69 +153,4 @@ En la siguiente tabla se va a mostrar los modelos (misma arquitectura) pero con
|
153 | 153 |
|
154 | 154 | 
|
155 | 155 |
|
156 |
| -Configuracion de Data Aug en Keras: |
157 |
| - |
158 |
| -```python |
159 |
| -datagen = ImageDataGenerator( |
160 |
| - rescale=1/255., |
161 |
| - rotation_range=10, |
162 |
| - width_shift_range=0.05, |
163 |
| - height_shift_range=0.10, |
164 |
| - brightness_range=(0.5, 1.5), |
165 |
| - shear_range=8, |
166 |
| - zoom_range=0.12 |
167 |
| -) |
168 |
| -``` |
169 |
| - |
170 |
| -Ademas como metodos extras de Data Augmentation se incluyo Blur y CutOut, se puede encontrar definido en `extra_augmentation.py`. |
171 |
| - |
172 |
| -**Aclaracion**: A proposito se busco, *manualmente*, que de vez en cuando los caracteres salgan **un poco** del frame. Esto ayuda a que generalice mejor y que no se espere una patente recortada perfectamente. |
173 |
| - |
174 |
| -## Tiempo de inferencia |
175 |
| - |
176 |
| -El tiempo medido no cubre el preprocessing, es cuanto tarda en hacer **solo la inferencia** el modelo (Usando `batch=1`). Los modelos que dicen **CPU** *(#3 y #4)* estan hechos para que corran mas rapido en el procesador. La diferencia principal es que se cambia la op. de [Convolucion normal](https://www.tensorflow.org/api_docs/python/tf/keras/layers/Conv2D) por una [Separable Conv](https://www.tensorflow.org/api_docs/python/tf/keras/layers/SeparableConv2D). |
177 |
| - |
178 |
| -#### Inferencia con GPU (Nvidia GTX 1070) |
179 |
| - |
180 |
| -| Modelo # (Parametros - GPU/CPU) | ms | FPS | Precisión | |
181 |
| -| ---------- | --------- | --------- | ----| |
182 |
| -| Modelo 1 (1.5 M - GPU) | 2.12 | 471 | FP32 | |
183 |
| -| Modelo 2 (2.0 M - GPU) | 1.71 | 584 | FP32 | |
184 |
| -| Modelo 3 (1.4 M - CPU) | 1.54 | 650 | FP32 | |
185 |
| -| Modelo 4 (1.1 M - CPU) | **1.36** | **735** | FP32 | |
186 |
| -| - | - | - | - | |
187 |
| - |
188 |
| - |
189 |
| -#### Inferencia con CPU (Intel i7-7700) |
190 |
| - |
191 |
| -| Modelo # (Parametros - GPU/CPU) | ms | FPS | Precisión | |
192 |
| -| ---------- | --------- | --------- | ----| |
193 |
| -| Modelo 1 (1.5 M - GPU) | 11.1 | 90 | FP32 | |
194 |
| -| Modelo 2 (2.0 M - GPU) | 12.2 | 82 | FP32 | |
195 |
| -| Modelo 3 (1.4 M - CPU) | 6.55 | 152 | FP32 | |
196 |
| -| Modelo 4 (1.1 M - CPU) | **5.88** | **170** | FP32 | |
197 |
| -| - | - | - | - | |
198 |
| - |
199 |
| -*FP32: para las weights y activaciones se usan valores de floating point de 32 bits* |
200 |
| - |
201 |
| -## TODO |
202 |
| - |
203 |
| -- [x] Publicar modelos |
204 |
| -- [x] Label Smoothing |
205 |
| -- [x] Active Learning |
206 |
| -- [x] Ampliar val-set |
207 |
| -- [x] Aumentar el training-set de patentes de motos |
208 |
| -- [x] Disminuir # de parametros |
209 |
| -- [x] Aplicar blur a las imagenes(Data Augmentation) |
210 |
| -- [x] Aplicar CutOut a las imagenes(Data Augmentation) |
211 |
| -- [x] Implementar Motion Blur (Data Augmentation) |
212 |
| -- [x] Implementar modelo sin Dense/FC |
213 |
| -- [ ] Agregar script de time benchmark |
214 |
| -- [ ] Quantizar el modelo a INT8 (Post-Training / Aware-Training) |
215 |
| -- [ ] Compilarlo para [Edge TPU](https://coral.ai/docs/edgetpu/compiler/) |
216 |
| - |
217 |
| -### Notas |
218 |
| - |
219 |
| -* Para obtener la mejor precisión es recomendable obtener las patentes recortadas con [YOLO v4/v4 tiny](https://github.com/ankandrew/LocalizadorPatentes) |
220 |
| -* CutOut si bien es Data Augmentation (Pone rectangulos negros random en la imagen de entrada) tiene efecto de regulación. Por ende no hace falta usar l2 reg, se puede usar directamente el `block_bn_no_l2` encontrado en `layer_blocks.py` |
221 |
| -* Motion Blur tiene mas sentido que aplicar blur, simula el efecto de que fue captada en movimiento |
| 156 | +... |
0 commit comments