Metadata-Version: 2.1
Name: forensicface
Version: 0.0.4
Summary: An attempt to build a package for forensic face examination
Home-page: https://github.com/rafribeiro/forensicface
Author: Rafael O. Ribeiro
Author-email: rafaeloliveiraribeiro@gmail.com
License: BSD License
Keywords: nbdev jupyter python face recognition
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: License :: OSI Approved :: BSD License
Requires-Python: >=3.7
Description-Content-Type: text/markdown
Provides-Extra: dev
License-File: LICENSE

forensicface
================

<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->

## Install

``` sh
pip install forensicface
```

O arquivo onnx do modelo de detecção (det_10g.onnx) deve estar na pasta
`~/.insightface/model/sepaelv2/`

e o arquivo onnx do modelo de reconhecimento (adaface_ir101web12m.onnx)
deve estar na pasta `~/.insightface/model/sepaelv2/adaface/`

## Como utilizar

Importação da classe ForensicFace:

`from forensicface.app import ForensicFace`

``` python
ff = ForensicFace(det_size=320, use_gpu=True)
```

    Applied providers: ['CUDAExecutionProvider', 'CPUExecutionProvider'], with options: {'CPUExecutionProvider': {}, 'CUDAExecutionProvider': {'do_copy_in_default_stream': '1', 'arena_extend_strategy': 'kNextPowerOfTwo', 'gpu_external_empty_cache': '0', 'gpu_external_free': '0', 'cudnn_conv_use_max_workspace': '0', 'gpu_mem_limit': '18446744073709551615', 'cudnn_conv_algo_search': 'EXHAUSTIVE', 'gpu_external_alloc': '0', 'device_id': '0'}}
    find model: /home/rafael/.insightface/models/sepaelv2/det_10g.onnx detection [1, 3, '?', '?'] 127.5 128.0
    set det-size: (320, 320)

## Processamento básico de imagens

Obter pontos de referência, distância interpupilar, representação
vetorial e a face alinhada com dimensão fixa (112x112)

``` python
results = ff.process_image("obama.png")
results.keys()
```

    dict_keys(['keypoints', 'ipd', 'embedding', 'norm', 'magface_embedding', 'magface_norm', 'aligned_face'])

``` python
plt.imshow(results['aligned_face'])
```

    <matplotlib.image.AxesImage>

![](index_files/figure-commonmark/cell-4-output-2.svg)

Comparar duas imagens faciais e obter o escore de similaridade.

``` python
ff.compare("obama.png","obama2.png")
```

    0.8555868

Agregar embeddings de duas imagens faciais em uma única representação

``` python
agg = ff.aggregate_from_images(["obama.png","obama2.png"])
agg.shape
```

    (512,)

## Suporte a MagFace

Modelo de [MagFace](https://github.com/IrvingMeng/MagFace)

``` python
good = ff.process_image("obama.png")
bad = ff.process_image("obama2.png")
good["magface_norm"], bad["magface_norm"]
```

    (24.875765, 21.319853)

Baseado nos repositórios
[insightface](https://github.com/deepinsight/insightface) e
[adaface](https://github.com/mk-minchul/AdaFace)
