Como reconhecemos equipamentos de proteção individual

Provavelmente, você sempre se perguntou como treinar uma rede neural para reconhecer pessoas de capacete e colete laranja! Não? Mas nós lhe contaremos assim mesmo.

Nosso nome é Tatyana Voronova e Elvira Dyaminova. Estamos envolvidos na análise de dados na empresa Center 2M, trabalhamos muito com as fábricas e empresas mais reais. Devido a violações de segurança, elas sofrem perdas multimilionárias, os funcionários ficam feridos, por isso seria bom poder detectar essas violações sistematicamente e o mais cedo possível. O melhor de tudo - automaticamente. Portanto, temos problemas associados ao reconhecimento de equipamentos de proteção individual (EPI) em vídeo e à identificação de pessoas ou equipamentos na zona de perigo.

imagem

Na maioria das vezes, chegam-nos pedidos para determinar capacetes (mais precisamente, sua ausência) e roupas de trabalho. Já adquirimos experiência na execução de tais tarefas e agora podemos descrever os problemas que encontramos e como resolvê-los.

Como, nos termos da cooperação, não temos o direito de publicar imagens dos objetos do cliente, ilustraremos o artigo com imagens da Internet, nas quais as pessoas de capacete geralmente sorriem e ficam ótimas. Infelizmente, no domínio público, não para todos os recursos das tarefas que enfrentamos na realidade, você pode encontrar bons exemplos. Em particular, na vida as pessoas de capacete têm menos probabilidade de sorrir, e o problema dos trabalhadores carecas (falaremos sobre isso um pouco mais tarde) na Internet ainda não foi revelado!

Imagem da Internet (tamanho 1920x1280):

imagem

O reconhecimento de EPI pode ser reduzido a um dos dois problemas clássicos da visão computacional: classificação de imagens e detecção de objetos. Na prática, descobriu-se que era melhor não usar uma dessas abordagens, mas escolher a mais adequada para cada caso específico, além de combiná-las de maneira flexível. Por exemplo, podemos primeiro determinar onde as pessoas estão na imagem, depois classificar as imagens cortadas por silhueta nas classes "em roupas de trabalho" e "sem" e detectar a presença de um capacete pela segunda passagem.

Nas figuras pré-cortadas de pessoas, a classificação da presença de capacetes e macacões se parece com esta (vista da figura original):

O resultado do trabalho dos modelos para a classificação de macacões e capacetes

imagem

Nas mesmas figuras humanas previamente selecionadas, a aplicação da abordagem desta vez com detecção de capacetes.

O resultado do modelo para a classificação de vestuário de trabalho e um modelo para detectar capacetes:

imagem

Etapa um: detecção humana


A qualidade da definição de objetos pequenos (capacetes / óculos / luvas) em armações grandes é mais ou menos. É muito mais fácil para um computador, como uma pessoa, primeiro entender onde as pessoas estão e só então descobrir o que está vestindo. Então, tudo começa com a identificação das pessoas no quadro.

Como resultado das experiências, descobrimos que a rede neural Faster R-CNN com o Inception v2 como uma extração de recursos é adequada para detectar pessoas. O TensorFlow já possui redes neurais pré- treinadas para detectar objetos.

Para nós, o Faster R-CNN Inception v2 (treinado no conjunto de dados COCO) é o método básico que tentamos primeiro ao resolver esses problemas.

Inicialmente, detectamos pessoas no quadro (e depois nas pessoas encontradas encontramos EPI):

imagem

Observe que aumentamos a caixa delimitadora "com uma pessoa" ao longo do eixo y :

imagem

Nesta fotografia, o trabalhador foi baleado com boa luz e em um fundo contrastante (com imagens encontradas na Internet, isso acontece o tempo todo). Portanto, a caixa delimitadora com a pessoa foi bem construída. No entanto, em nossa prática, existem casos frequentes (especialmente em condições de visibilidade insuficiente) quando o modelo de detecção corta um capacete em uma pessoa, após o que é inútil procurá-lo em uma imagem cortada. Nesse sentido, ao longo do eixo y, aumentamos a caixa delimitadora prevista em 15% antes de passar para o segundo estágio.

Ao detectar pessoas, encontramos pequenos problemas desagradáveis. Em primeiro lugar, quando duas pessoas andam ou ficam atrás uma da outra, geralmente começam a ser detectadas como uma pessoa. Em segundo lugar, acontece que um objeto estático entra no campo de visão da câmera, no qual o modelo pode reconhecer uma pessoa, como um hidrante. Esses problemas podem ser resolvidos de várias maneiras. Por exemplo, como fizemos: reconcilie-os e aceite-os, pois, em geral, o modelo é adequado para nós em termos de produtividade e qualidade.

Um problema mais fundamental é que as instalações industriais nas quais existe uma “zona de perigo” costumam ser enormes e, consequentemente, as pessoas nos quadros são muito pequenas. Nosso método básico baseado no Faster R-CNN Inception v2 mostrou resultados ruins nesses casos e, no final, tentamosNas R-CNN mais rápidas . Os resultados foram impressionantes, as pessoas foram bem reconhecidas mesmo à distância, mas a velocidade foi muito menor que o modelo básico. Com recursos suficientes e a necessidade de alta precisão, você pode usar o Faster R-CNN Nas .

Segunda etapa: determinação de violadores maliciosos


Dependendo da tarefa, o seguinte é frequentemente usado:

  • Modelo de Classificação de Imagem - Iniciação v3
  • Modelo de Detecção de Objetos - Iniciação R-CNN mais rápida v2

Classificação de vestuário de trabalho e capacetes


Testamos diferentes arquiteturas de rede neural para classificar imagens e, finalmente, decidimos pelo Inception v3, decidindo aproveitar o fato de que ele foi projetado para funcionar com tamanhos de imagem variáveis. Já tínhamos muitas fotos recortadas com as pessoas e não era difícil calcular os valores medianos para altura e largura. Então chegamos à conclusão de que, para o treinamento dos classificadores, começamos a trazer imagens para um tamanho de 150x400.

Para treinar a rede para reconhecer o EPI, primeiro é necessário coletar um conjunto de dados a partir de exemplos rotulados. Nesse processo, existem sutilezas, cuja realização vem com a experiência. Por exemplo, é melhor remover as pessoas cortadas acima dos quadris do conjunto de dados. Isso aproximará o conjunto de dados das condições reais, pois na maioria das vezes as pessoas são vistas em altura total em vídeo das câmeras de vigilância. Casos de sobreposição, é claro, também acontecem, mas silhuetas completas para a amostra-alvo são muito mais características.

Exemplos do nosso conjunto de dados de vestuário de trabalho:

imagem

Não inventamos nada específico como métrica; usamos recall e precisão.

Modelo para classificar a presença / ausência de roupas de trabalho:

resultados em uma amostra de validação

imagem

Detecção de EPI


O modelo de classificação funciona mais rápido que o modelo para detectar objetos, mas devido ao fato de os óculos e luvas de segurança serem pequenos na imagem, é difícil criar um bom classificador para esses EPIs. Portanto, treinamos a rede neural Faster R-CNN em um conjunto de dados com seis classes:

  • glasses / not_glasses
  • luvas / não_ luvas
  • capacete / not_helmet

imagem

Coleta e marcação de dados


Os principais problemas estavam relacionados ao conjunto de dados dos capacetes. Era uma maneira fascinante: passamos por pessoas carecas, com capacetes nas mãos e até mesmo por pessoas carecas com capacetes nas mãos.

Como no começo da jornada não tínhamos muitos quadros de condições reais, coletamos o conjunto de dados da melhor maneira possível: filmamos, tiramos fotos da Internet ou de locais de construção. Um pouco mais tarde, começamos a receber muitos vídeos de várias empresas e começamos a enriquecer o conjunto de dados apenas com quadros de condições reais. Em algum momento, o número de imagens marcadas excedeu 5k e a qualidade da adição de novos exemplos deixou de melhorar. Nesse sentido, revisamos a abordagem da marcação.

Vamos descrever os estágios de melhoria do conjunto de dados do capacete usando o exemplo de imagens da Internet, para que o ângulo e a qualidade não correspondam exatamente ao que tínhamos.

Além da imagem acima, cortada acima dos quadris, removemos imagens nas quais os capacetes são cortados mais da metade para evitar confusão com as tampas.

imagem

Também enfrentamos o fato de que, se uma pessoa tem um capacete nas mãos, muitas vezes o modelo não vê violações: existe um capacete? Há sim. Portanto, removemos do conjunto de dados de treinamento todos os quadros em que uma pessoa segura um capacete com a mão, mesmo que o capacete esteja em sua cabeça naquele momento.

Em geral, tentamos remover imagens com um fundo iluminado ou em salas escuras e minimizamos o número de fotos tiradas por nós, deixando principalmente imagens da produção. Como resultado, reduzimos o conjunto de dados pela metade.

Além disso, enriquecemos o conjunto de dados com pessoas carecas, caso contrário, elas sempre estarão em capacetes, mesmo que não seja assim, e com loiras com quadrados, para as quais, com um determinado ângulo, o detector também determina o capacete.

Após remover imagens inadequadas, prosseguimos diretamente para a marcação (para detecção de objetos). Acabou não sendo tão simples. Acontece que a qualidade do detector final depende em grande parte do que exatamente a área da imagem é marcada como "capacete" ou "luvas". Inicialmente, alocamos capacetes e óculos de proteção sem agarrar rostos e luvas com as mãos seguras. No entanto, com a experiência, aprimoramos gradualmente nossa abordagem, observando erros do primeiro e do segundo tipo, onde as pessoas seguram capacetes nas mãos e algo em torno de algo longo acaba sendo uma "luva". Agora, ao marcar capacetes e óculos, tentamos agarrar o rosto até a ponta do nariz e, ao contrário, ao marcar luvas, nos limitamos a um pincel.

imagem

Como resultado de nossas manipulações no conjunto de dados, obtivemos os seguintes resultados.

Modelo para detectar a presença / ausência de EPI usando capacetes como exemplo:
Resultados em uma amostra de validação antes do início do "trabalho global" no conjunto de dados

imagem


Resultados finais na amostra de validação

imagem

A completude do reconhecimento de capacetes diminuiu um pouco, mas ao mesmo tempo, as métricas para detectar violações melhoraram, e é isso que queríamos alcançar.

Modelo para classificar a presença / ausência de capacetes:
Resultados em uma amostra de validação antes do início do "trabalho global" no conjunto de dados

imagem

Resultados finais na amostra de validação

imagem

Deve-se notar que não temos uma divisão em óculos e óculos para visão, eles ficam sob a mesma etiqueta “óculos” e luvas de tons claros podem ser percebidas como uma escova nua. Tentamos maximizar a gama de cores de capacetes e roupas de trabalho em nossos conjuntos de dados, mas, para garantir a confiabilidade, adicionamos a técnica mais simples e mais confiável: se necessário, para detectar luvas, informamos aos clientes que cores brilhantes ajudam a aumentar a precisão.

No momento, temos modelos universais que usamos para o show inicial para o cliente. No entanto, deve-se entender que é impossível criar um modelo universal para todos, é necessário adaptar-se a cada cliente, identificar e levar em conta novas nuances, enriquecer conjuntos de dados ou criá-los novamente para atender a requisitos específicos.

imagem

Bônus


Normalmente, os clientes desejam processar o maior número possível de câmeras, usando o mínimo de recursos possível. Butch, é claro, é uma coisa boa, mas truques adicionais para otimizar o processo não são proibidos.

Por exemplo, meus colegas e eu do centro de clientes IBM em Moscou tínhamos a hipótese de que reunir várias pessoas cortadas para detectar mais capacetes aumentaria o número de câmeras por servidor com uma perda sem precisão de precisão.

Como base, decidimos usar o tamanho de 1000x600 para a tela na qual as pessoas serão "aplicadas". Duas opções de layout foram inicialmente consideradas:

  • Largura e altura fixas (200x600), com essa abordagem, há 5 pessoas no quadro.
  • Largura e altura fixas (125x600), 8 pessoas.

Essa decisão se deve ao fato de que, com dados fixos, sabemos exatamente o número de pessoas na foto, o que nos fornece uma previsão da carga. No entanto, durante o desenvolvimento, consideramos essa opção:
  • Altura fixa e largura proporcional (*** x600), número diferente de pessoas.

Supunha-se que, com tamanhos crescentes e manutenção de proporções, os resultados serão melhores em comparação com outras opções de layout. O número de pessoas variou de 3 a 5 (+/–).

Como resultado, obtivemos que a opção com largura e altura fixas (200x600) é a melhor dentre as consideradas. Obviamente, este método não é adequado para detectar óculos e luvas, porque os objetos são pequenos, mas para detectar capacetes / falta de capacetes, esse método mostrou bons resultados.

Por exemplo, em uma amostra de validação:

imagem

imagem

: (tvoronova), (elviraa)

All Articles