Linux CPU | Linux GPU | Mac OS CPU | Windows CPU |
|---|---|---|---|
Detecção de face de código aberto e livre. Baseado no MTCNN
Site oficial (https://dface.tech)
Também fornecemos um SDK de reconhecimento de face totalmente, contém rastreamento, detecção, reconhecimento de rosto, anti-spoofing e assim por diante. Consulte DFFE.TECH para obter detalhes.
O DFace é um software de código aberto para detecção e reconhecimento de rosto. Todos os recursos implementados pelo Pytorch (o Facebook Deeplearning Framework). Com o Pytorch, usamos uma técnica chamada diferenciação automática no modo reverso, que permite que o desenvolvedor altere a maneira como sua rede se comporta arbitrariamente com lag ou sobrecarga zero. DFFE herdou essas características avançadas, que a tornam dinâmica e facilitam a revisão do código.
A aceleração da GPU de suporte ao DFFE com a NVIDIA CUDA. É altamente recomendável que você use a versão GPU do Linux. É muito rápido e extremamente real.
Nossa inspiração vem de vários trabalhos de pesquisa sobre esse tópico, bem como trabalhos atuais e anteriores, como detecção e alinhamento de rosto conjunto usando redes convolucionais em cascata de várias tarefas e tópico de reconhecimento de rosto FaceNet: uma incorporação unificada para reconhecimento de rosto e agrupamento
Estrutura mtcnn
Se você deseja contribuir com o DFFE, revise o contribuindo.md no projeto. Utilizamos o Slack para rastrear solicitações e bugs. Além disso, você pode seguir o Grupo QQ 681403076 ou meu WeChat Jinkuaikuai005
DFFE possui dois principais módulos, detecção e reconhecimento. Nesses dois, fornecemos todos os tutoriais sobre como treinar um modelo e execução. Primeiro definindo um pytorch e cv2. Sugerimos a Anaconda para fazer um ambiente de Python virtual e independente. Se você deseja treinar na GPU, instale o Nvidia Cuda e o CUDNN.
git clone https://github.com/kuaikuaikim/dface.gitTambém fornecemos uma lista de dependência do ambiente Anaconda chamada Environment.yml (Windows, use o ambiente WIN64.YML, MAC Environment_OSX.yaml) no caminho raiz. Você pode criar seu ambiente DFFE com muita facilidade.
cd DFace
conda env create -f path/to/environment.ymlAdicione DFFE ao seu caminho Python local
export PYTHONPATH= $PYTHONPATH :{your local DFace root path}Se você estiver interessado em treinar um modelo MTCNN, poderá seguir a próxima etapa.
O MTCNN possui três redes chamadas PNET , RNET e ONET . Portanto, devemos treiná -lo em três estágios, e cada estágio depende da rede anterior, que gerará dados de trem para alimentar a rede de trem atual, também impulsiona a perda mínima entre duas redes. Faça o download dos conjuntos de dados do Train Face antes do seu treinamento. Utilizamos o rosto mais amplo e o rosto de celebridade. O arquivo de anotação de face mais amplo original é o formato MATLAB, você deve transformá -lo em texto. Coloquei o arquivo de texto de anotação transformada em ano_store/wider_origin_anno.txt. Este arquivo está relacionado ao seguinte parâmetro chamado --anno_file.
mkdir {your dface traindata folder}python dface/prepare_data/gen_Pnet_train_data.py --prefix_path {annotation file image prefix path, just your local wider face images folder} --dface_traindata_store {dface train data temporary folder you made before } --anno_file {wider face original combined annotation file, default anno_store/wider_origin_anno.txt}python dface/prepare_data/assemble_pnet_imglist.pypython dface/train_net/train_p_net.pypython dface/prepare_data/gen_Rnet_train_data.py --prefix_path {annotation file image prefix path, just your local wider face images folder} --dface_traindata_store {dface train data temporary folder you made before } --anno_file {wider face original combined annotation file, default anno_store/wider_origin_anno.txt} --pmodel_file {your PNet model file trained before}python dface/prepare_data/assemble_rnet_imglist.pypython dface/train_net/train_r_net.pypython dface/prepare_data/gen_Onet_train_data.py --prefix_path {annotation file image prefix path, just your local wider face images folder} --dface_traindata_store {dface train data temporary folder you made before } --anno_file {wider face original combined annotation file, default anno_store/wider_origin_anno.txt} --pmodel_file {your PNet model file trained before} --rmodel_file {your RNet model file trained before}python dface/prepare_data/gen_landmark_48.pypython dface/prepare_data/assemble_onet_imglist.pypython dface/train_net/train_o_net.pySe você não quiser treinar, eu coloquei ONET_EPOCH.PT, PNET_EPOCH.PT, RNET_EPOCH.PT na pasta model_store.vó, basta experimentar test_image.py
python test_image.pyLicença Apache 2.0