Home › Fóruns › Fórum Reconhecimento de Faces e de Objetos com Python e Dlib › Ajuste de sensibilidade do detector na hora de treinar arquivo! › Responder a: Ajuste de sensibilidade do detector na hora de treinar arquivo!
Felipe,
Pelo que entendi, sua pergunta é sobre o preditor de forma usado com a base de treinamento no Dlib.
Inicialmente separe as bases de treinamento e de teste.
Em princípio não sei o que está ocorrendo com o seu detector, uma primeira hipótese seria o número de imagens de treinamento.
Na literatura do Dlib consta que o número de imagens para treinamento do preditor de forma é pequeno se comparado a outros algoritmos.
Este número é empírico e podemos alterar dependendo do caso, sendo que o numero que tenho em memória é a partir de 20 amostras.
Uma segunda hipótese seria a escolha dos pontos do objeto a ser detectado, pois o preditor de forma pode confundir formas parecidas, por este motivo também deve-se escolher bem os pontos na imagem.
As opções utilizadas neste treinamento são bem importantes.
Inicialmente, veja o famoso artigo do Kazemi de 2014 que indicamos no curso:
Algoritmo do Vahid Kazemi e Josephine Sullivan baseado no paper “One Millisecond Face Alignment with an Ensemble of Regression Trees”.
O algorítmo de detecção de pontos de referência faciais do Dlib e Preditor de Forma utiliza este algorítmo.
https://pdfs.semanticscholar.org/d78b/6a5b0dcaa81b1faea5fb0000045a62513567.pdf
É um artigo um tanto complexo na minha opinião, pois eu precisei ler quatro vezes para começar a entender.
Veja em http://dlib.net/train_shape_predictor.py.html na documentação do Dlib:
options = dlib.shape_predictor_training_options()
# Now make the object responsible for training the model.
# This algorithm has a bunch of parameters you can mess with. The
# documentation for the shape_predictor_trainer explains all of them.
# You should also read Kazemi’s paper which explains all the parameters
# in great detail. However, here I’m just setting three of them
# differently than their default values. I’m doing this because we
# have a very small dataset. In particular, setting the oversampling
# to a high amount (300) effectively boosts the training set size, so
# that helps this example.
options.oversampling_amount = 300
# I’m also reducing the capacity of the model by explicitly increasing
# the regularization (making nu smaller) and by using trees with
# smaller depths.
options.nu = 0.05
options.tree_depth = 2
options.be_verbose = True
Os parametros nu e oversamplampling_amount correspondem aos parametros learning rate ν e R no paper do Kazemi. É um assunto um pouco mais avançado, mas vale a pena entender.
Veja a documentação da classe dlib.shape_predictor_training_options em:
http://dlib.net/python/index.html#dlib.shape_predictor_training_options
Veja estes posts interessantíssimos do Dr. Adrian do site pyimagesearch.com, principalmente o último que acredito que tenha muita relação com a sua dúvida:
https://www.pyimagesearch.com/2019/12/16/training-a-custom-dlib-shape-predictor/
Espero que tenha ajudado.