Onde fica o estacionamento vazio?

Detectando ocupação de filmagens de câmeras de segurança usando aprendizado profundo

Shuvashish Chatterjee em Rumo à Ciência dos Dados Segue Jun 4 · 8 min ler

Encontrar um local vago em um estacionamento é uma tarefa difícil. É até difícil gerenciar esses lotes se o tráfego de entrada variar muito. Quais slots estão vagos neste instante? A que horas precisamos de mais slots? Os passageiros estão achando difícil alcançar um determinado espaço? Qual carro está estacionado onde? Quem havia estacionado o carro?

Atualmente, usamos uma rede de sensores de ocupação montados no solo ou uma equipe para determinar as respostas a algumas dessas perguntas. Os sensores são bastante eficazes, mas precisam de manutenção e custam cerca de 40 -80 $ por nó na unidade + instalação.

Para o pessoal, este é um exercício pesado e propenso a erros. Mesmo que o pessoal seja auxiliado com barreiras de lança e console de emissão de bilhetes, na melhor das hipóteses, ele fornece uma estimativa ampla sobre a ocupação real no solo.

Vazio ou ocupado? Vaga de estacionamento

Uma abordagem para esse problema pode ser usar uma filmagem de câmera de segurança para detectar a ocupação do estacionamento em tempo real usando o deep-learning. ( Link para completar o código no final)

Abordagem e Arquitetura

Marcação de ocupação de um slot de estacionamento é um processo de duas etapas. Primeiro, temos que determinar a localização do estacionamento dentro do campo de visão. Em segundo lugar, temos que detectar se o espaço está ocupado no momento.

Uma das abordagens é a força bruta do problema e marcar manualmente todos os slots. No entanto, toda vez que a câmera é deslocada, panorâmica e ampliada, o processo trabalhoso precisa ser repetido novamente para a nova posição da câmera.

Vaga de estacionamento da imagem do Drone (Priya Divedi Github )

A segunda abordagem poderia ser usar a linha branca de um estacionamento como um guia para o slot. Poderíamos colocar um filtro astuto e hough transformar para usar e detectar os polígonos. No entanto, nem todos os estacionamentos têm pistas brancas. Mesmo aqueles que foram colocados em uma filmagem de câmera tirada 6m ou mais acima do solo, a pista será obscurecida por carros estacionados. Então, a menos que usemos um drone para capturar as filmagens do topo, isso também não ajudará muito.

Podemos usar o carro estacionário para dar uma indicação das vagas de estacionamento. Em alguns dias de filmagens de estacionamento, é provável que todos os slots tenham sido ocupados por carros em algum momento. Detectar o carro parado na filmagem é um bom indicador da localização real do estacionamento. Claro que haverá movimento enquanto os carros entram / saem do slot. Mas esses são ruídos que podemos ignorar.

Uma vez determinados os slots de estacionamento tudo o que resta é para detectar se um carro está presente ou ausente em um novo quadro. É um problema de classificação simples dentro da imagem recortada de um slot de estacionamento. Podemos executá-lo em tempo real (~ 1s) em desktops que estão recebendo o stream da câmera.

Detecção de vagas de estacionamento

Precisamos de um detector de objetos para a primeira parte do problema que nos dará um limite para cada um dos slots de estacionamento. YOLO e MaskRCNN podem nos ajudar.

O YOLO é um algoritmo ágil e preciso que fornece a caixa delimitadora para cada objeto detectado juntamente com sua classificação e uma estimativa da probabilidade. Algoritmos anteriores de detecção de objetos que varriam uma cena várias vezes com diferentes tamanhos de caixa delimitadora e tentavam procurar um candidato em marcha. Demorou muito tempo e recursos de computação. A YOLO usa camadas CNN para torná-lo um problema único. Uma vez que a rede tenha sido treinada, a detecção pode ser realizada no computador, com redes e otimizações menores, mesmo em um telefone celular.

Ainda vida com um jarro e uma tigela de maçãs Samuel Peploe 1924

Em caso de estilisticamente diferente (como a pintura acima) YOLO faz uma estimativa justa (tigela, laranja), mas também faz falta (livro, jarro) às vezes.

O MaskRCNN , além da detecção de objetos, é um algoritmo de segmentação de imagens. MaskRCNN classifica cada pixel como pertencente a uma instância de um objeto. É uma tarefa incrivelmente difícil. MaskRCNN baseia-se nas redes FCNN, alinhando a região de interesse. Este vídeo ajudará você a entender os principais conceitos.

Conjunto de dados do Cityscaape

Rodando em uma GPU, o MaskRCNN precisa de cerca de 200 ms para processar 1 frame, o que representa um sexto da velocidade do Yolo, que pode aumentar até 30 qps em uma GPU. Mas, por outro lado, o MaskRCNN precisa de cerca de 20 quadros para dar um resultado razoável, enquanto o YOLO (que perde objetos pequenos) precisa de cerca de 5 vezes mais. Fazia muito mais sentido escolher um MaskRCNN, ter mais de 20 quadros capturados a cada hora durante dois dias. A YOLO precisaria de cerca de cinco vezes mais quadros, mas teria perdido alguns dos slots.

Especializando as redes

No caso de instâncias de objetos muito próximos, como a detecção de todas as pessoas que marcham pela estrada, a YOLO tem sua fraqueza. Ele divide uma cena em grades e pode detectar um certo número de objetos por grade. No caso de estacionamentos, os carros estacionados na fila de cima provavelmente ficarão de fora. Eu tentei especializar a rede para detectar apenas carros. Houve uma pequena melhora no desempenho.

A detecção final é feita usando uma RESNET (ou qualquer outro classificador). Eu também me especializei em carros. Eu usei o conjunto de dados disponibilizado pela CNRPARK, pois tinha imagens de carros em uma orientação que normalmente encontraríamos nas câmeras de segurança. Eu usei fit_one_cycle de FastAI e consegui obter 99,7% de precisão no conjunto de validações em 10 epochs. É surpreendente como poucos dados e recursos computacionais são necessários quando você tem um modelo treinado.

Vazio | Dados ocupados do National Research Council (Cnr) Itália

Detecção de vagas de estacionamento

Uma vez que temos os pesos especializados, chegamos à tarefa real de detectar as vagas de estacionamento. Nos carros com direção automática, você precisa rastrear um objeto entre vários quadros. Na detecção do estacionamento, precisamos manter um controle do slot à medida que nos movemos de quadro a quadro. Carros vão e vêm seus tamanhos vão mudar e assim será a caixa delimitadora.

Mapeando slots de quadro a quadro

Intersecção sobre União (IOU) é uma boa métrica em tais problemas. Para cada um dos slots, detectamos um slot correspondente na imagem subseqüente que possui a maior IOU com a primeira e a atribui. Slots cujo IOU estão abaixo de um limite são provavelmente novos veículos que vieram e ocuparam o espaço de estacionamento.

Depois de percorrer alguns quadros, também é necessário mesclar uma caixa delimitadora diferente dentro de um quadro, já que algumas entradas esporádicas podem causar um aumento. Um limiar de IOU mais alto é selecionado nesta etapa para fornecer resultados estáveis.

Detecção Azul pela primeira vez | Vermelho ocupado | Vago Verde

Removendo ações transitórias

Alguns dos quadros capturam movimentos transitórios, como um carro entrando no estacionamento. Essas instâncias de caixas delimitadoras têm que ser rejeitadas. Executar uma rejeição com base no número de instâncias ocupadas para um estacionamento durante um período de tempo nos dá controle sobre essas entradas esporádicas.

Isso nos dará uma lista de vagas de estacionamento: coordenadas e padrões típicos de ocupação durante o período de treinamento.

Detectando ocupação dentro dos slots

A detecção é bem direta. Cortamos a imagem em um slot, conforme definido pela caixa delimitadora na etapa anterior. Tudo o que temos a fazer agora é classificar se o carro está presente ou ausente. Usamos nossa RESNET sintonizada e isso nos dá um resultado razoável.

Limitações

É bastante óbvio que o sistema ainda não está próximo da marca. Vamos dividir novamente em duas partes, detectando os slots e detectando a ocupação

Você não pode detectar o que você não vê nem pode

Árvores, Shades limitam a zona de detecção. A oclusão parcial (com uma copa das árvores) funciona em alguns casos e não em outros. Da mesma forma câmeras do nível do solo (<6m) a maioria dos carros dentro do lote será escondida atrás de alguns que estão na frente do quadro. Apenas em alguns dos quadros, quando os estacionamentos frontais estiverem vazios, os lotes que estão por trás serão detectados.

Com objetos muito pequenos, MaskRCNN e YOLO têm dificuldade em escolher os slots. Isso pode ser de 1 a 5% dos slots de estacionamento em um quadro. Isso pode, no entanto, ser corrigido por um ser humano gastando menos de um minuto para fornecer a caixa delimitadora correta. Comparado a uma diligente 1-2 horas se ele tivesse que anotar todos os slots.

Isso nos leva à segunda parte: Detectando o status dos slots. O classificador parece funcionar muito bem. No entanto, novamente imagens pequenas, ângulos estranhos de visão, escuro e obstrução limitam este passo

Então, onde tudo isso se soma? Detecção de estacionamento não pode se estender a todos os casos de uso. Não há como montar uma câmera a 9 metros do chão na maioria dos estacionamentos da cave. Árvores, pilares, postes, etc. obstruirão o campo de visão em muitos locais.

Tem suas deficiências e talvez também os métodos existentes de detecção de ocupação. Se conseguirmos combiná-los, podemos criar um sistema mais eficiente.

O que pode ser prolongado

Bilhete de estacionamento | Código QR | Slots Vagos

Podemos usar o sistema para direcionar os passageiros para vagas vagas em um estacionamento. Bilhetes de estacionamento existentes podem conter um código QR que pode direcionar os consumidores para o lote vago usando o sistema. Isso reduz o número de intervenções manuais necessárias nesta etapa.

Combinando o License Plate Recognition com a detecção de ocupação, podemos acompanhar qual carro está ocupando qual slot. Pela mesma medida, podemos também acompanhar quem estacionou o carro.

Sensores baseados no solo eficazes, mas caros

Trabalhando em conjunto com sistemas baseados em terra, os gerentes das instalações podem ter uma visão geral em tempo real dos níveis de estoque de estacionamento. A futura decisão de aumentar pode ser baseada em dados históricos reais. Ele também pode ser usado para detectar quem estacionou o veículo, capturando um instantâneo da pessoa estacionando o carro.