Detecção de objetos

45 respostas
M

Alguém aqui já trabalhou com a detecção de objetos através da câmera do celular?

Se já poderiam me dar algumas dicas, materiais de estudo, exemplos, etc…

Pode ser com openCV, tensorflow, requisição pra apis do google, microsoft… ou outros que eu não conheça

Pode ser pra trabalhar com java, kotlin, swift, objective-c, javascript, c#, independente

45 Respostas

J

Ai depende amigo, o que exatamente você precisa fazer ?

M

No momento apenas estudar uma possibilidade para um projeto acadêmico

Que necessitaria fazer um aplicativo que conseguisse identificar algumas imagens após ser treinado

Claro, sei que tal app é possível e existem, porém a possibilidade te eu construir um destes dentro do prazo, por isso necessito descobrir o nível de complexidade de tal projeto.

J

Então trabalhando mais essa ideia,

No ramo de visão computacional tudo é possível, mas você disse em identificar algumas imagens.

Quais imagens ? O que essas imagens tem que diferem das outras ?

Você pretende identificar algo nessas imagens ?

Por exemplo identificar uma imagem que possua um triangulo azul no canto superior direito da tela.

Porém tudo vai depender do que você precisa fazer, assim fica mais fácil de achar uma solução.

D

Eu cheguei a ver bastante coisa disso para kinect, quando eu estava estudando sobre realidade aumentada. Tem bastante material. Só não sei se você tem interesse em partir para C#…

M

Não tem uma imagem padrão, mas sim a imagem que for treinado ele deve identificar.

Tio um app pra treinar, onde tiraria fotos da imagem em questão, e ai outro app, que ao mirar na mesma imagem reconheça que esta é aquela imagem

Mas insto teriam várias imagens no banco

Ontem dei uma pesquisada, e uma brincada com o react-native-tensorflow

Mas pelo que cheguei a conclusão, no meu projeto teria que construir uma api, onde ficassem armazenadas as imagens e um sistema de comparação de imagens

Ai tiraria foto da imagem para identificar, enviaria pra api, este passaria para o sistema de comparação, que retornaria a porcentagem de similaridade entre as imagens

Acho que algo nessa linha, o q vcs acham?

M

Pelo C# não é problema pra mim, mas sim pelo fato de que necessito que seja mobile

P

Pra iOS tem o CoreML e acho que o google vai lançar algo pra Android no futuro.

M

Já tem, é o tensorflow lite

Porém estes que rodam no próprio cel seriam problemáticos pra mim, pois teriam que estar sempre atualizando sobre novas entradas dadas na rede e ficariam muito pesados com o tempo

Estes pelo que vi são mais recomendados para quando vc tem assim um treinamento mais pré estabelecido no app e não quando serão dadas entradas de treinamento dinâmicas

M

No momento optei por tentar fazer de uma forma simples utilizando o tensorflow como apresentado neste vídeo

Ai crio o app apenas como uma câmera e envio a foto

Então uma api recebe executa o teste no tensorflow e retorna a porcentagem pro app

Outra api recebe as imagens para treino e executa o procedimento de treino

Foi a maneira mais fácil que pensei

Alguém teria algum ponto a levantar que não enxerguei ou algo do tipo

P

Os que rodam no cel usam menos rede que os apps que dependem de um datacenter. Quanto a ser pesado, tem que ver exatamente o que quer fazer, porque se ficar transmitindo muitos dados toda hora tb não é algo leve. Em geral, tecnologia de hardware para processamento local evolui mais rápido que de rede.

Meu entendimento é que o pós treino é dinâmico, mas baseado apenas nos dados do usuário.

P

Você precisaria de um banco de dados de imagens monstro, igual esses que empresas como Google e Apple tem, pra ser capaz de identificar imagens dessa forma, não?

M

Não exatamente, pois o que outro usuário treinar, o meu app tbm teria que detectar

M

A principio pelo que estudei, o google recomenda a partir de 100 imagens, porém em casos como o apresentado no vídeo, de flores, onde pode haver uma variação de tipos o formatos, e cores, etc… muito grande

Como no meu caso seriam imagens estáticas, sempre iguais, pelo que vi com uma pequena amostra já da para ter uma precisão de um bom nível

M

A situação que tenho é que assim, se um outro usuário treinou o meu app teria que reconhecer essa imagem, sendo assim sempre antes de fazer a checagem teria que sincronizar o banco caso com o processamento local

Será que a sincronização pesaria menos que o envio da imagem para processar no servidor?

P

Não entendi, o treinamento é feito pelo usuário da app? você espera que ele forneça também os dados de treinamento?

P

Imagina detectar spam,

Você gostaria que sua app de email “aprendesse” novas técnicas de detectar spam baseado nos dados de treinamento de outros usuários?

Spammers poderiam treinar o app para liberar seus spams.

No seu próprio app,

O que impede alguém de treina-la pra achar que um quadrado é um circulo?

Como pretende conciliar modelos incompatíveis fornecidos por diferentes usuários?

Parece mais um bug do que um funcionalidade. rs

M

Não é qualquer usuário, são usuários treinados

Os mesmos que treinam usam, vc esta pensando muito em app de mercado

O app em questão será utilizado dentro da instituição, operado por técnicos e funcionários

E ao alunos testarem a imagem tem que reconhecer e buscar o link em questão

É um projeto acadêmico em teste, com a finalidade de futuramente ser aplicado a um museu

M

Em mundo acadêmico testar e chegar a conclusão que não é viável, também é um resultado aceitável

Isso se chama pesquisa científica

P

Não faz sentido técnicos e funcionários saberem treinar um modelo de ML.

Se você quer detectar flores, o processo é coletar dados de flores, usar esses dados para treinar o model, e depois usar este model pra fazer a detecção. Mas detectar coisas que você ainda nem sabe o que é, não sei como funcionaria.

M

Ai o diferencial estará no APP e na API, que justamente tratará as imagens e indices recebidas pelos técnicos, separando as imagens e fazendo um novo treinamento naquele determinado indice a cada vez que uma imagem com aquele indice for adicionada.

E por isso também que é bom trabalhar com docker, assim consigo trabalhar com multiplos containers replicados, e então utilizar o kubernates para fazer a gestão, evitando de o sistema ficar inacessível durante o treinamento de um novo modelo

P

Se você tem 10, 50, 100 tipos de imagens, ou indices como você falou, vai ter 10, 50, 100 models. Parece um pouco demais, não? Por outro lado, se você tem 2-9 tipos de imagens, não seria melhor criar uma API pra cada? Não estou vendo a vantagem em criar uma API pra receber dados que serão treinados separadamente.

M

Os idices são muito mais que 100 tipos.

E também a qualquer momento pode ser adicionada uma foto com um novo indice

P

Imaginei que fosse isso porque vc falou em docker.

Mas um novo índice vai servir de que com uma imagem? 1 imagem não é suficiente para treinar nada. Você vai precisar de um banco de dados de milhares pra lá pra conseguir algo de util.

M

Todo banco começa com uma imagem, como disse é um ambiente controlado, ao ser adicionado um novo indice outros tecnicos já irão buscar adicionar mais amostras a aquele determinado indice, assim em questão de 2 ou 3 meses já se teria cerca de 50 a 60 imagens

R

Isso é muito pouco para treinar um modelo para reconhecimento de objetos. Não seria o caso de restringir o escopo do projeto ? Porque você tem 2 tópicos aí: treinamento do modelo e infra-estrutura da aplicação, qual é o tema central do seu trabalho ?

P

50 mil?

M

50 imagens já testamos e chega a uma precisão superior a 80%, o recomendado pelo google é acima de 100 imagens para uma precisão superior a 90% para objetos com grande variação, quanto menor a variação do objeto menor o número de imagens necessárias para o treino.

M

não 50 mesmo

R

Entendi, de qualquer maneira, qual será o foco do trabalho: o modelo de ML utilizado ou a infra/arquitetura da aplicação ?

M

O foco será a arquitetura, mas funcionar é bom tbm né

R

Bom, já que o seu foco é a arquitetura do sistema, acho que um projeto que pode te ajudar muito é esse:

basicamente é uma infra-estrutura para você fazer o deploy de modelos de machine learning e expô-los como API’s. Talvez isso já te ajude bastante na questão da infra-estrutura.

Sobre o treinamento dos modelos … bom, se você diz que nesse teste você já conseguiu um modelo que acerta 80% das classificações, acho que para um TCC está razoável … nada te impede também de pré-coletar algumas imagens para ter um modelo inicial melhor.

P

Se você tem um sistema que botânicos e técnicos florestais cadastram imagens de flores, será que faz sentido criar um algoritmo para detectar imagens de flores? Não seria melhor pedir para o especialista faze-lo?

Sei que não esta fazendo um sistema sobre flores, o que estou dizendo é, a idéia por trás de todos casos de uso de machine learning que vejo parte do princípio que o computador pode fazer o trabalho e dispensar o especialista.

M

Vlw… vow dar uma olhada

M

Mas é exatamente esse o foco, onde os tecnicos de diferentes áreas podem treinar, não precisa de suporte, de especialistas reunindo imagens e treinando, mas que qualquer instituição possa simplesmente baixar o app de treinamento, cria um indice e começa a tirar fotos daquilo, envia para treinamento e designa um link para ser apresentado quando aquele objeto for reconhecido no app de reconhecimento.

A ideia inicial é para museus de interior, aqueles que não tem como ter um guia assim, estatuas de praças etc… Onde alguem pode ir lá e simplesmente tirar uma bateria de fotos da estatua e apontar para um link da wikipedia, ou outro site que fale sobre aquela estatua.

É uma ideia inicial, sabemos que muito terá de ser refinado até que possa ser posta em prática, mas tem que começar em algum lugar né.

P

Se entendi o que quer fazer, não seria possível fazer o mesmo para aplicações em geral? Tipo um app para desenvolvimento, onde qualquer instituição pode criar um “índice” e começar a definir requisitos, depois o sistema envia para compilação e designa um link que representa a regra de negócio usada quando aquele caso de uso é reconhecido no app de execução.

A idéia seria dispensar a necessidade de desenvolvedores de aplicações, mas ai vem a pergunta… um desenvolvedor ou cientista de dados trabalhando na instituição não apresentaria resultados melhores dos que os gerados por uma app? :thinking:

M

O foco interno na instituição é apenas para teste, e será gratuito, hospedado pela universidade, assim não tem como manter um tecnico para operar, o objetivo é que qualquer um com uma finalidade publica possa usar de graça.

Assim a ideia é que, seguindo um exemplo, a prefeitura de uma cidade pequena possa se cadastrar, um funcionário seja designado e treinado, agora vamos dizer que nessa cidade tenha um monumento, algo assim, turistico, ele vai lá e tira uma bateria de fotos de uma placa, estas que sempre tem monumentos e tal, coloca o indice, monumento tal e atribui o link de uma página onde explique sobre aquele monumento, envia tudo, a API recebe, cria a pasta com o indice, coloca as imagens dentro e treina.

Assim quando algum turista estiver lá e quiser saber mais dq o que esta escrito na placa, basta apontar o app para a placa e este lhe encaminhara para a página de descrição.

Claro este é um exemplo, tem várias aplicações tal plataforma, e este é uma implementação inicial, ai em implementações futuras iremos buscar uma forma que pudesse reconhecer o próprio monumento e não apenas a placa.

Pra não ter que ficar tirando uma bateria de fotos, poder treinar a partir de vídeo, etc… etc… etc…

P

Você pode fazer isso pedindo para o funcionário digitar o texto da placa e quando o turista tirar foto você reconhece os caracteres da imagem e faz uma consulta a API baseado no texto da placa.

Não precisa usar machine learning.

M

Como disse, esta é uma implementação inicial, para a partir desta ir melhorando e crescendo, isso é necessário pois quando se pega verba com o governo para projetos torna-se mais fácil fazendo um projeto pequeno, ai outro para melhorar, e outro, etc… Muito difícil conseguir incentivo para um projeto de grande porte.

P

Acho que entendo o que quer dizer sob o aspecto do negócio, mas um sistema que detecta placas não é uma etapa em direção a um sistema que detecta monumentos. Não é como se você for melhorando um sistema que detecta placas, ele vai acabar detectando monumentos. São coisas diferentes, com implementações diferentes, e provavelmente requerem mão de obra mais qualificada para desenvolver, e no caso de machine learning, pra suportar, do que um funcionário da prefeitura.

M

Talvez sim, talvez não.

Talvez no final realmente não consigamos tornar o processo totalmente automático, ou talvez consigamos.

São de pesquisas como esta que surgem novas implementações, qual ambiente melhor que o acadêmico para testar o que vai além do costumeiro, pra buscar novas formas de utilizar determinadas tecnologias.

Ou então mesmo que não consigamos, que sabe nossas publicações possam se tornar a base para uma outra aplicação no futuro.

É isso mesmo que buscamos, fazer o novo, fazer diferente, se fosse pra fazer como todo mundo faz, não haveria sentido no projeto né.

P

Se você precisa treinar funcionário, por definição o processo não é automático. Você pode até dizer que não é tu que treina e que o problema não é mais seu, mas isso não torna o processo automático. Pra ser automático, o sistema teria que oferecer algum incentivo para o próprio usuário (o turista) enviar os dados corretos.

M

E automático pois o técnico da prefeitura também é um usuário, o treinamento será no próprio APP. Ele não necessita instalar nada (em sentido de servidor e tal), não precisa configurar nada, apenas baixa o APP e sai cadastrando.

Ngm precisa ir lá pegar as imagens que ele envia e passar pelo processo de treinamento, o sistema devera fazer tudo isso sozinho.

É automático no sentido que após a publicação (atualização e tal), não necessitará de nenhuma interação humana no core, e todo o procedimento ocorrerá nos APPs e sem a necessidade de operação direta, com grande conhecimento da estrutura, do funcionamento.

P

Alguém vai ter que conceder privilégios para o usuário treinado. A não ser que você crie um algoritmo de machine learning tb pra detectar funcionários da prefeitura. rsrs

M

Existe um código de registro de instituições públicas, o registro é através deste, a própria entidade cadastra os tecnicos responsaveis, e como disse anteriormente, o treinamento sera pelo próprio sistema

P

Eu ainda acho que você não precisa de machine learning.

Se tudo que você quer é fazer o turista apontar o celular e ser direcionado para um site, é só colar uns qrcodes próximos ao monumento.

Posso estar falando besteira, mas ml seria útil se você precisasse detectar fotos de placas no meio de outras fotos diferentes. Mas não é uma boa pra identificar uma placa específica entre imagens de placas.

Criado 13 de março de 2018
Ultima resposta 31 de mar. de 2018
Respostas 45
Participantes 5