Detecção de objetos

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

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

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.

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.

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#…

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?

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

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

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

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

1 curtida

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.

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?

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

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

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?

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

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

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

1 curtida

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

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.