>
YOLO Multi-Object Detection And Classification >
Embora com uma enorme quantidade de dados visuais (mais de 3 bilhões de imagens são compartilhadas on-line todos os dias), o poder computacional necessário para analisar os dados está agora acessível. Como o campo da visão computacional cresceu com novos hardwares e algoritmos, também cresceram as taxas de precisão para a identificação de objetos. Em menos de uma década, os sistemas atuais atingiram 99% de precisão em relação aos 50%, tornando-os mais precisos do que os humanos ao reagir rapidamente às entradas visuais.
Os primeiros experimentos em visão computacional começaram na década de 1950 e foram usados pela primeira vez comercialmente para distinguir entre texto digitado e manuscrito nos anos 1970, hoje as aplicações para visão computacional cresceram exponencialmente.
Até 2022, espera-se que o mercado de visão computacional e hardware atinja 48,6 bilhões de dólares
Uma das principais questões em aberto tanto em Neurociência como em Aprendizagem Mecânica é: Como exatamente nossos cérebros funcionam, e como podemos aproximar isso com nossos próprios algoritmos? A realidade é que existem muito poucas teorias abrangentes e funcionais de computação cerebral; assim, apesar do fato de que as Redes Neurais são supostas “imitar a maneira como o cérebro funciona”, ninguém tem certeza se isso é realmente verdade.
O mesmo paradoxo se aplica à visão computadorizada – já que não estamos decididos sobre como o cérebro e os olhos processam as imagens, é difícil dizer quão bem os algoritmos usados na produção se aproximam dos nossos próprios processos mentais internos.
Em um certo nível, a visão computador é tudo sobre reconhecimento de padrões. Então uma maneira de treinar um computador a compreender os dados visuais é alimentá-lo com imagens, muitas imagens milhares, milhões se possível rotuladas, e depois submetê-las a várias técnicas de software, ou algoritmos, que permitem ao computador caçar padrões em todos os elementos que se relacionam com essas etiquetas.
Então, por exemplo, se você alimentar um computador com um milhão de imagens de gatos (todos nós adoramos them😄😹), ele irá submetê-los todos a algoritmos que permitem analisar as cores na foto, as formas, as distâncias entre as formas, onde os objetos bordejam uns aos outros, e assim por diante, para que ele identifique um perfil do que “gato” significa. Quando terminar, o computador poderá (em teoria) usar sua experiência se alimentado com outras imagens não rotuladas para encontrar as que são de cat.
Deixe nossos amigos gatos fofos por um momento ao lado e vamos obter mais technical🤔😹. Abaixo está uma ilustração simples do buffer de imagens em escala de cinza que armazena a nossa imagem de Abraham Lincoln. O brilho de cada pixel é representado por um único número de 8 bits, cujo intervalo é de 0 (preto) a 255 (branco):
>
Diagrama de dados pixel. À esquerda, nossa imagem de Lincoln; ao centro, os pixels marcados com números de 0-255, representando seu brilho; e à direita, esses números por si mesmos.
Na verdade, os valores de pixels são quase universalmente armazenados, no nível do hardware, em uma matriz unidimensional. Por exemplo, os dados da imagem acima são armazenados de uma forma semelhante a esta longa lista de caracteres não assinados:
{157, 153, 174, 168, 150, 152, 129, 151, 172, 161, 155, 156, 155, 182, 163, 74, 75, 62, 33, 17, 110, 210, 180, 154, 180, 180, 50, 14, 34, 6, 10, 33, 48, 106, 159, 181, 206, 109, 5, 124, 131, 111, 120, 204, 166, 15, 56, 180, 194, 68, 137, 251, 237, 239, 239, 228, 227, 87, 71, 201, 172, 105, 207, 233, 233, 214, 220, 239, 228, 98, 74, 206, 188, 88, 179, 209, 185, 215, 211, 158, 139, 75, 20, 169, 189, 97, 165, 84, 10, 168, 134, 11, 31, 62, 22, 148, 199, 168, 191, 193, 158, 227, 178, 143, 182, 106, 36, 190, 205, 174, 155, 252, 236, 231, 149, 178, 228, 43, 95, 234, 190, 216, 116, 149, 236, 187, 86, 150, 79, 38, 218, 241, 190, 224, 147, 108, 227, 210, 127, 102, 36, 101, 255, 224, 190, 214, 173, 66, 103, 143, 96, 50, 2, 109, 249, 215, 187, 196, 235, 75, 1, 81, 47, 0, 6, 217, 255, 211, 183, 202, 237, 145, 0, 0, 12, 108, 200, 138, 243, 236, 195, 206, 123, 207, 177, 121, 123, 200, 175, 13, 96, 218};
Esta forma de armazenar dados de imagem pode ser contrária às suas expectativas, uma vez que os dados certamente parecem ser bidimensionais quando são exibidos. No entanto, este é o caso, já que a memória do computador consiste simplesmente em uma lista linear sempre crescente de espaços de endereços.
>
Como os pixels são armazenados na memória >
Vamos voltar à primeira imagem novamente e imaginar adicionar uma colorida. Agora as coisas começam a ficar mais complicadas. Os computadores geralmente lêem cores como uma série de 3 valores – vermelho, verde e azul (RGB) – nessa mesma escala de 0-255. Agora, cada pixel realmente tem 3 valores para o computador armazenar, além da sua posição. Se fossemos colorir o Presidente Lincoln, isso levaria a 12 x 16 x 3 valores, ou 576 números.
Crédito Para A Imagem Vai Para: https://www.slideshare.net/Presentitude/the-4-important-color-models-for-presentation-design/16-Colors_on_the_color_wheel É muita memória para uma imagem, e muitos pixels para um algoritmo para iterar sobre. Mas para treinar um modelo com precisão significativa, especialmente quando você está falando de Aprendizagem Profunda, você normalmente precisaria de dezenas de milhares de imagens, e quanto mais melhor.
A Evolução da Visão por Computador
Antes do advento da Aprendizagem Profunda, as tarefas que a visão por computador podia realizar eram muito limitadas e exigiam muita codificação manual e esforço dos desenvolvedores e operadores humanos. Por exemplo, se você quisesse realizar o reconhecimento facial, você teria que realizar os seguintes passos:
Criar uma base de dados: Você tinha que capturar imagens individuais de todos os assuntos que você queria rastrear em um formato específico.
Anotar imagens: Então para cada imagem individual, você teria que inserir vários pontos de dados chave, como a distância entre os olhos, a largura da ponte do nariz, a distância entre o lábio superior e o nariz, e dezenas de outras medidas que definem as características únicas de cada pessoa.
Capturar novas imagens: A seguir, você teria que capturar novas imagens, seja a partir de fotografias ou de conteúdo de vídeo. E então você teria que passar pelo processo de medição novamente, marcando os pontos-chave na imagem. Você também teve que considerar o ângulo em que a imagem foi tirada.
Após todo esse trabalho manual, a aplicação finalmente seria capaz de comparar as medidas na nova imagem com as medidas armazenadas em sua base de dados e dizer se ela correspondia a algum dos perfis que ela estava rastreando. Na verdade, havia muito pouca automação envolvida e a maior parte do trabalho estava sendo feita manualmente. E a margem de erro ainda era grande.
Aprendizagem da máquina forneceu uma abordagem diferente para resolver problemas de visão do computador. Com a aprendizagem da máquina, os desenvolvedores não precisavam mais codificar manualmente cada regra em suas aplicações de visão. Em vez disso, eles programaram “recursos”, aplicações menores que podiam detectar padrões específicos em imagens. Eles então usaram um algoritmo de aprendizagem estatística como regressão linear, regressão logística, árvores de decisão ou máquinas vetoriais de suporte (SVM) para detectar padrões e classificar imagens e detectar objetos nelas.
Aprendizagem de máquinas ajudou a resolver muitos problemas que eram historicamente desafiadores para as ferramentas e abordagens clássicas de desenvolvimento de software. Por exemplo, anos atrás, engenheiros de aprendizagem de máquinas foram capazes de criar um software que pudesse prever melhor as janelas de sobrevivência ao câncer de mama do que os especialistas humanos. Entretanto, a construção das características do software exigiu o esforço de dezenas de engenheiros e especialistas em câncer de mama e levou muito tempo para ser desenvolvido.
>
>As abordagens de aprendizagem de máquinas clássicas envolveram muitas etapas complicadas e exigiram a colaboração de dezenas de especialistas de domínio, matemáticos e programadores >>
Aprendizagem profunda proporcionou uma abordagem fundamentalmente diferente para fazer a aprendizagem de máquinas. A aprendizagem profunda baseia-se em redes neurais, uma função de propósito geral que pode resolver qualquer problema representável através de exemplos. Quando você fornece uma rede neural com muitos exemplos rotulados de um tipo específico de dados, ela será capaz de extrair padrões comuns entre esses exemplos e transformá-los em uma equação matemática que ajudará a classificar futuras informações.
Por exemplo, criar uma aplicação de reconhecimento facial com aprendizado profundo só requer que você desenvolva ou escolha um algoritmo pré-construído e o treine com exemplos das faces das pessoas que ele deve detectar. Dando exemplos suficientes (muitos exemplos), a rede neural será capaz de detectar faces sem mais instruções sobre características ou medidas.
Deep learning é um método muito eficaz para fazer visão por computador. Na maioria dos casos, a criação de um bom algoritmo de aprendizagem profunda se resume a reunir uma grande quantidade de dados de treinamento rotulados e ajustar os parâmetros, como o tipo e o número de camadas das redes neurais e épocas de treinamento. Em comparação com tipos anteriores de aprendizagem de máquinas, a aprendizagem profunda é mais fácil e mais rápida de desenvolver e implementar.
A maior parte das aplicações atuais de visão por computador, tais como detecção de câncer, auto-aprendizagem de carros e reconhecimento facial fazem uso da aprendizagem profunda. Aprendizagem profunda e redes neurais profundas passaram do reino conceitual para aplicações práticas graças à disponibilidade e avanços em recursos de hardware e computação em nuvem.
Quanto tempo leva para decifrar uma imagem
Em resumo, não muito. Essa é a chave para que a visão computacional seja tão emocionante: Enquanto no passado até os supercomputadores levavam dias ou semanas ou até meses para fazer todos os cálculos necessários, os chips ultra-rápidos e hardware relacionado, juntamente com a internet rápida e confiável e as redes de nuvens, tornam o processo mais rápido. Uma vez que o fator crucial foi a vontade de muitas das grandes empresas que fazem pesquisa de IA para compartilhar seu trabalho no Facebook, Google, IBM e Microsoft, notavelmente através do open sourcing de alguns de seus trabalhos de aprendizagem de máquinas.
Isso permite que outros desenvolvam seu trabalho em vez de começar do zero. Como resultado, a indústria de IA está cozinhando junto, e experimentos que não demoraram muito tempo para serem feitos podem levar 15 minutos hoje. E para muitas aplicações do mundo real de visão por computador, este processo acontece continuamente em microssegundos, de modo que um computador hoje é capaz de ser o que os cientistas chamam de “situationally aware”
Applications Of Computer Vision
A visão por computador é uma das áreas do Machine Learning onde os conceitos centrais já estão sendo integrados nos principais produtos que usamos todos os dias.
CV Em Automóveis com Auto-Condução
Mas não são apenas as empresas de tecnologia que estão a alavancar a Machine Learning para aplicações de imagem.
A visão computacional permite que os automóveis com auto-condução façam sentido para o seu ambiente. As câmeras capturam vídeo de diferentes ângulos ao redor do carro e o alimentam com software de visão por computador, que depois processa as imagens em tempo real para encontrar as extremidades das estradas, ler sinais de trânsito, detectar outros carros, objetos e pedestres. O carro que se dirige sozinho pode então seguir seu caminho nas ruas e rodovias, evitar bater em obstáculos e (esperançosamente) conduzir com segurança seus passageiros até seu destino.
CV In Facial Recognition
A visão computacional também desempenha um papel importante em aplicações de reconhecimento facial, a tecnologia que permite aos computadores combinar imagens de rostos de pessoas com suas identidades. Os algoritmos de visão por computador detectam características faciais em imagens e comparam-nas com bases de dados de perfis faciais. Os dispositivos de consumo utilizam o reconhecimento facial para autenticar as identidades dos seus proprietários. Os aplicativos de mídia social usam o reconhecimento facial para detectar e marcar usuários. As agências policiais também contam com a tecnologia de reconhecimento facial para identificar criminosos em feeds de vídeo.
CV Em Realidade Aumentada &Realidade Mista
A visão computacional também desempenha um papel importante na realidade aumentada e mista, a tecnologia que permite que dispositivos computacionais como smartphones, tablets e óculos inteligentes se sobreponham e incorporem objetos virtuais em imagens do mundo real. Usando a visão por computador, os aparelhos de RA detectam objetos no mundo real para determinar os locais na tela de um dispositivo para colocar um objeto virtual. Por exemplo, os algoritmos de visão por computador podem ajudar as aplicações de RA a detectar planos como tampos de mesa, paredes e pisos, uma parte muito importante para estabelecer profundidade e dimensões e colocar objetos virtuais no mundo físico.
CV In Healthcare
A visão por computador também tem sido uma parte importante dos avanços da tecnologia de saúde. Algoritmos de visão por computador podem ajudar a automatizar tarefas como a detecção de toupeiras cancerosas em imagens de pele ou encontrar sintomas em exames de raio-x e ressonância magnética.
Desafios da visão por computador
Ajudar os computadores a ver revela-se muito difícil.
Inventar uma máquina que vê como nós vemos é uma tarefa enganosamente difícil, não só porque é difícil fazer com que os computadores o façam, mas porque não temos certeza absoluta de como a visão humana funciona em primeiro lugar.
Estudar a visão biológica requer uma compreensão dos órgãos de percepção como os olhos, bem como a interpretação da percepção dentro do cérebro. Muito progresso tem sido feito, tanto no mapeamento do processo como na descoberta dos truques e atalhos utilizados pelo sistema, embora, como qualquer estudo que envolva o cérebro, haja um longo caminho a percorrer.
>
>Crédito Para A Imagem Vai Para: Mike Tamir
Muitas aplicações populares de visão por computador envolvem tentar reconhecer coisas em fotografias; por exemplo:
Classificação de Objectos: Que categoria ampla de objeto está nesta fotografia?
Identificação do objeto: Que tipo de um determinado objeto está nesta fotografia?
Verificação do objeto: O objeto está na fotografia?
Detecção de Objeto: Onde estão os objetos na fotografia?
Object Landmark Detection: Quais são os pontos-chave para o objeto na fotografia?
Segmentação do Objeto: Que pixels pertencem ao objeto na imagem?
Reconhecimento do Objeto: Que objectos estão nesta fotografia e onde estão?
Para além do simples reconhecimento, outros métodos de análise incluem:
A análise de movimento de vídeo utiliza a visão por computador para estimar a velocidade dos objectos num vídeo, ou a própria câmara.
Na segmentação de imagens, os algoritmos dividem as imagens em múltiplos conjuntos de vistas.
A reconstrução de cenas cria um modelo 3D de uma cena introduzida através de imagens ou vídeo.
Na restauração de imagens, ruídos como embaçamento são removidos das fotos usando filtros baseados em Machine Learning.
Qualquer outra aplicação que envolva a compreensão de pixels através de software pode ser rotulada com segurança como visão por computador.
Conclusão
Embora o progresso recente, que tem sido impressionante, ainda não estamos nem perto de resolver a visão por computador. No entanto, já existem várias instituições e empresas de saúde que encontraram formas de aplicar sistemas de CV, alimentados por CNNs, a problemas do mundo real. E essa tendência não deve parar tão cedo.
Se você quiser entrar em contato e, a propósito, você conhece uma boa piada que você pode conectar comigo no Twitter ou no LinkedIn.
Obrigado pela leitura! 😄 🙌