Skip to content

Commit 9c3d18c

Browse files
committed
Test image change
1 parent 52670fa commit 9c3d18c

File tree

1 file changed

+2
-67
lines changed

1 file changed

+2
-67
lines changed

README.md

Lines changed: 2 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Reconocedor de Texto(OCR) para Patentes vehiculares de Argentina
22

3-
[![Intro](assets/readme/demo.gif)](https://www.youtube.com/watch?v=4OG1TW4ZV8E)
3+
![Intro](https://raw.githubusercontent.com/ankandrew/fast-plate-ocr/4a7dd34c9803caada0dc50a33b59487b63dd4754/extra/demo.gif)
44

55
**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.
66

@@ -153,69 +153,4 @@ En la siguiente tabla se va a mostrar los modelos (misma arquitectura) pero con
153153

154154
![Data Aug](assets/readme/data_aug_ejemplo.png)
155155

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

Comments
 (0)