Fiquei curioso e fui ver o que me disseste dos MineLab, não cheguei a ver o preço deles mas pela publicidade tão polida com vídeos de animações, aplicações militares de desminagem e tudo, de facto parecem produtos muitos caros.
Reparei que eles falam de um Multi-IQ - Simulaneou multi-frequencies por isso eles devem estar a usar algum método estilo FFT com um sinal de ruído branco uniforme em todas as frequências, ou então estão a fazer um sweep muito rápido em várias frequências, por exemplo com um chirp, mas eu apontava mais para a FFT, pois a identificação de desfasamentos de fase em chips sem FFT é mais complexa pois a frequência está a ser comprimida. Mas com FFT, os chirps já são processados dessa maneira com radares FMCW
Provavelmente estou enganado a ver pelo nível de polimento que os produtos deles e o marketing têm, mas pelo menos para os dois metais mais conhecidos e talvez mais valiosos (ouro e prata) podes facilmente arranjar um balde de terra e colocar lá dentro um anel ou um fio pequeno de ouro (por exemplo uma aliança) ou um de prata a várias profundidades e com várias percentagens de água no solo e com isso tirar vários dados de treino para a tua machine learning, essa parte não seria nada difícil de se fazer e poderias pelo menos no teu protótipo fazer em Python que ainda seria mais simples pois tens guias para tudo e mais um par de botas de machine learning para Python e usas libs de Python como o scikitlearn. Depois mais tarde se não chegasse é que trazias a cavalaria pesadas das redes neuronais com por exemplo o PyTorch.
scikit-learnhttps://scikit-learn.org/stable/Depois usarias também pregos de ferro, aço, e algumas coisas de alumínio, de cobre, de chumbo(antigamente as canalizações eram feitas de chumbo ), Nikel, latão e bronze recolhias dados de espetros com todos eles. Ou seja as suas assinaturas
Com isso crias o teu dataset, com casos de diversos tamanhos e a diversas profundidades e a mais do que um tipo de terreno (arreia, terra, barro, pedra soltas, cascalho) e com várias percentagens de água, e para cada um deles tu registas várias passagens do device a detetar cada um dos casos e atribuis uma label a cada um dos deles, a cada um dos tipos diferentes dos casos.
Depois com o teu dataset fine grained, criado com o teu balde, tu crias subset do que tu pretendes como que se fossem coisas que tu queres treinar para detetar, por exemplo, queres detetar joias e moedas de outros e de prata vs tudo o resto. Então marcas como positivo a label correspondente ao ouro e à prata em todos os casos e a todos as profundidades vs tudo o resto que seria um caso negativo. Divides em dados de treino e dados de teste aleatoriamente pois terás vários espectros para cada caso.
E depois treinas o algoritmo de Machine Learning e podes inclusive começar só por fazer um pequeno classificador, mas depois podes tentar fazer coisas mais complexas e de te classificar o que é e a que profundidade ele está ou a identificar todos os teus casos diferentes do teu dataset, como sendo o mais próximo da situação. O que o algoritmo vai fazer depois ao treinar é a conseguir convergir para a identificação de que um caso do mundo real se vai parecer mais com um caso do teu dataset. E é só isso, a parte do treino pode ser mesmo uma coisa tão simples quanto isso e poderás ir sempre adicionando casos de teste e voltando a treinar o teu algoritmo. Melhorando a questão dos falsos positivos e dos falsos negativos que acaba por ser um tradeoff, mas mais casos de teste ajudam sempre.
A parte de usar uma placa de som, essa parte faz em C/C++ ou Rust de inicio um programa que só faça a geração e aquisição do sinal e gravas os dados todos os sinais que geraste e o sinal que recebeste para um determinado hardware, coils a uma distancia fixa do solo. Não podes fazer esta parte em Python pois o quando o GC entrar vais perder frames do buffer e o desfasamento de fase vai par aas ortigas. Depois desenvolves o teu pre-processamento de FFT em Python a partir dos dados em disco gravados e desenhas e melhoras os teus algoritmos, resolves os problemas todos, e testas o amplificador de áudio e a parte de pré que vais ligar à placa de som. Tiras os bugs todos e testas por ti, ganhas uma intuição do que realmente está a acontecer ao osciloscópio e nos resultados da FFT -> vetor com resultados das amplitudes e das fases para cada buffer. E só depois passas para a parte de Machine Learning que depois de fazeres a primeira fase e fora a recolha de dados de treino e teste que vai ser mais demorada. Talvez um fim de semana a fazer experiências e a recolher dados com um balde de terra e uns anéis, uns fios e ou umas moedas de ouro ou e prata.
No final testas o teu protótipo ainda no teu laboratório de eletrónica, e prontos aí já ficas com um protótipo a funcionar e depois a parte de tornar uma APP de Andoid com hardware mínimo depois de teres um protótipo a funcionar torna-se muito mais simples.
Mas é muito provável que me esteja a escapar alguma coisa fundamental para que isto funcione, mas eu não estou a ver nada assim de transcendente. Contudo lá que no minelab, eles tem um excelente marketing no site deles, lá isso têm, mas se o departamento de R&D deles for tão bom como o departamento de marketing eles devem ter muito “segredo do mollho” nos produtos deles.
Mas sinceramente não me parece ser assim uma coisas tão complicada como isso.
Aliás se tiveres um osciloscópio e um gerador de sinais e alguns metros de fio de transformador para fazer as duas coils e uma aliança, tu consegues testar isso tudo em menos de duas horas sem o balde de terra.
Depois é só ires automatizando partes do processo, como por exemplo substituir o sinal do gerador de sinais, pelo amplificador de áudio e gerar o sinal com a placa de som em C/C++ ou Rust, depois substituir o osciloscópio por um pré e um ADC da placa de som (algo que adapte as voltagens e limite as corrente do sinal na saída do LC) e depois de gravares para disco com a lib clap ou com o Audacity mesmo que seja só como um WAV file por exemplo, depois abres e processas o wav file com Python offline, procura no meu github que tens lá muito exemplos de como fazer isso (abrir wavs e fazer FFT’s a ficheiros WAV), é simples e fácil.
Eu diria que se eu não estiver errado tu num espaço de 2 horas se tiveres equipamento de instrumentação tens as tuas primeiras experiências a funcionar e no espaço de uma semana tens até à parte da saída da FFT e desfasamentos de fase e amplitudes a funcionar, mais um fim de semana de testes e criação de dataset com o balde de terra e depois mais uma semana para implementares o machine learning, vê o scikitlearn e terás um protótipo high tek a funcionar em duas a três semaans.
Depois dai para as fases seguintes seria só refazer o projecto em outras tecnologias o que vai demorar bastante e iterar para melhorares a ideia e testar muito a coisa na pratica e ver quais eram os problemas para os resolver.
https://www.minelab.com/eur/multi-iqhttps://www.minelab.com/metal-detectors/equinox-800Tal como te disse pode me estar a escapar muita coisa, muitos segredos no molho, mas sem tentares nunca saberás se de facto tem segredo ou não. E de uma coisa é verdade, é um projeto divertido!
Cumprimentos,
João