• Nenhum resultado encontrado

Para efetuar a classifica¸c˜ao das regi˜oes das imagens recolhidas pelo robˆo, inicial- mente, ´e necess´ario efetuar o treino da SVM, ou seja, “ensinar-lhe” o que ´e ou n˜ao um tronco e, para tal, ´e necess´ario recolher imagens de treino dessas mesmas regi˜oes. Nesta implementa¸c˜ao, as imagens de treino tˆem um tamanho fixo de 100×30 pixeis, uma vez que ´e uma resolu¸c˜ao que se adequa bem ao tamanho dos troncos das imagens recolhidas, como ´e poss´ıvel observar na figura4.12. Com este tamanho de janela e utilizando uma resolu¸c˜ao de 640×480 pixeis, um tronco que se encontre a uma distˆancia de um a dois metros do robˆo ocupa uma regi˜ao de 60 % a 90 % dessa mesma janela.

Considere-se como exemplo a recolha de 5000 imagens de treino, onde 2500 s˜ao de troncos e 2500 s˜ao de outras regi˜oes. ´E necess´ario que essas imagens estejam separadas por classes, ou seja, tˆem que ser criados dois grupos de imagens (data/true, com imagens das regi˜oes dos troncos e data/false, com imagens de outras regi˜oes), isto porque ´e necess´ario fornecer `a SVM as imagens e a informa¸c˜ao de qual dos grupos cont´em as imagens dos troncos e qual cont´em as imagens das outras regi˜oes. Neste caso as imagens dos troncos ser˜ao definidas como sendo o grupo positivo e as outras imagens como sendo o grupo negativo.

O pr´oximo passo consiste em obter o descritor para cada uma dessas imagens, utilizando um dos trˆes descritores apresentados anteriormente e, depois disto, finalmente poder´a ser feito o treino da SVM utilizando esses mesmos descritores. Terminado o treino da SVM pode passar-se ent˜ao ao processamento das v´arias regi˜oes da imagem, comparando o descritor dessas regi˜oes com os descritores “aprendidos” pela SVM. Por outras palavras, numa situa¸c˜ao real, o robˆo captura imagens da vinha e vai processando cada uma das regi˜oes centradas nos keypoints, onde essas regi˜oes ir˜ao ser comparadas com o conjunto de regi˜oes j´a conhecidas do mesmo local, capturadas previamente e sobre as quais se aplicou o treino da SVM. Em cada regi˜ao processada, a SVM fornece um grau de confian¸ca para a perten¸ca

(a) AgrobV14 (b) AgrobV15

(c) AgrobV16

Figura 4.12 – Janelas de dimens˜ao 100×30 pixeis sobrepostas nos troncos das imagens recolhidas pelas trˆes plataformas AgrobV1X.

dessa mesma regi˜ao a cada uma das classes. Imagine-se que se est´a a processar uma regi˜ao que pertence a um tronco e o maior grau de confian¸ca obtido ´e o de ele pertencer `a classe troncos. Neste caso, est´a-se perante uma correta classifica¸c˜ao, no entanto, se for processada uma outra regi˜ao que tamb´em contenha um tronco, mas que desta vez o maior grau de confian¸ca seja de ela n˜ao pertencer `a classe dos troncos, est´a-se perante uma classifica¸c˜ao errada. Para obter uma medida efetiva do modelo de classifica¸c˜ao, ´e poss´ıvel criar uma matriz de confus˜ao que mostra o n´umero de classifica¸c˜oes reais vs. classifica¸c˜oes preditas para cada classe, relativamente a um conjunto de dados. Para tal ´e necess´ario um conjunto de imagens de teste, ou seja, imagens tamb´em recolhidas pelo utilizador que v˜ao servir para

medir o grau de efetividade da classifica¸c˜ao da SVM. N˜ao esquecendo o exemplo de classifica¸c˜ao apresentado anteriormente, e considerando agora que no processamento de duas regi˜oes que n˜ao contˆem troncos estas s˜ao corretamente classificadas como outra regi˜ao, est´a-se perante duas classifica¸c˜oes corretas de regi˜oes que n˜ao contˆem troncos e de uma classifica¸c˜ao correta e outra errada de uma regi˜ao que cont´em troncos. Desta forma, a matriz de confus˜ao obtida neste caso seria a que se encontra apresentada na figura 4.13.

Figura 4.13 – Matriz de confus˜ao obtida considerando o exemplo apresentado.

Chega-se assim `a etapa final do ViTruDe onde, o resultado obtido ir´a ser a dete¸c˜ao de mastros e troncos, de forma a auxiliar na tarefa de localiza¸c˜ao e navega¸c˜ao de robˆos m´oveis em ambientes agr´ıcolas, mais propriamente em vinhas de patamares.

5

Testes e resultados

Neste cap´ıtulo ´e feita uma apresenta¸c˜ao dos testes realizados e dos resultados obtidos durante o desenvolvimento deste trabalho. ´E ainda feita uma compara¸c˜ao entre esses os v´arios resultados, tendo em conta as condi¸c˜oes em que cada teste foi realizado.

5.1

Imagens recolhidas no terreno

O treino, os teste e a valida¸c˜ao da abordagem ViTruDe foram realizados com dados reais, adquiridos em ambiente de vinha, utilizando as plataformas AgrobV14, AgrobV15 e AgrobV16.

Inicialmente foram recolhidas imagens na Quinta das Bateiras, situada em Ervedosa do Douro, distrito de Viseu (41◦1029.8′′N 73246.4′′W). Essas imagens foram

recolhidas com a plataforma AgrobV14 utilizando uma cˆamara NoIR da Raspberry Pi sem filtro azul. Na figura5.1 encontra-se apresentado um exemplo de uma frame dessas imagens.

Mais tarde foram recolhidas imagens numa vinha situada em ´area agr´ıcola da UTAD, situada em Vila Real (41◦1705.9′′N 74410.3′′W). Essas imagens foram recolhidas

Figura 5.1– Imagens recolhidas pelo AgrobV14 na Quinta das Bateiras.

com a plataforma AgrobV15 utilizando as cˆamara RGB, NoIR sem filtro azul e NoIR com filtro azul, todas elas da Raspberry Pi. Exemplos das imagens recolhidas por estas cˆamaras encontram-se apresentados na figura 5.2.

As ´ultimas imagens foram recolhidas tamb´em numa vinha da ´area agr´ıcola da UTAD mas num local diferente do anterior (41◦1712.9′′N 74408.6′′W). Essas imagens

foram recolhidas com a plataforma AgrobV16 utilizando uma cˆamara Mako G-125. Trata-se de uma cˆamara GigE industrial com um sensor CCD ICX445 da Sony, inclui Power over Ethernet (PoE), ou seja, a cˆamara ´e alimentada eletricamente atrav´es da porta Ethernet e possui um buffer de imagem de 64MB. Na figura 5.3

encontra-se apresentado um exemplo das imagem recolhidas por essa cˆamara. Todas estas imagens, bem como outros dados (e.g. LRF, IMU, GPS, entre outros) foram armazenados em ficheiros ROS bag aquando da sua recolha e o download dos mesmos pode ser efetuado em: http://agrob.inesctec.pt/downloads/

Durante a realiza¸c˜ao deste trabalho, de forma a validar todas as t´ecnicas imple- mentadas, foram efetuados v´arios testes, sendo que, para isso foi utilizada uma implementa¸c˜ao da SVM baseada na biblioteca LIBSVM e todos eles foram realizados num computador port´atil com processador Intel Quad Core i7-4700HQ (@ 2.4 GHz), 12 GB de mem´oria RAM, e o sistema operativo Ubuntu 14.04 LTS.

(a) RGB. (b) NoIR sem filtro azul.

(c) NoIR com filtro azul.

Figura 5.2– Imagens recolhidas pelo AgrobV15 na UTAD.

5.2

Testes realizados com imagens recolhidas pelo

AgrobV14

Os testes realizados inicialmente tiveram como objetivo descobrir qual o impacto da utiliza¸c˜ao de keypoints no tempo de processamento de cada frame e, para tal, foram utilizadas as imagens recolhidas atrav´es da plataforma AgrobV14. Para o treino da SVM, foram utilizadas 1200 imagens, sendo que 600 delas eram relativas a zonas da imagem com troncos e as outras 600 eram relativas a zonas da imagem sem troncos, cujo download pode ser efetuado em: http://agrob.inesctec.pt/downloads/. De cada uma destas imagens foi obtido o seu descritor para assim efetuar o treino

Figura 5.3 – Imagens recolhidas na UTAD pela plataforma AgrobV16 utilizando a cˆamara Mako G-125 sem filtro de infravermelho e com filtro azul.

da SVM, sendo que, estes primeiros testes foram realizados utilizando apenas o descritor hLBP by Colour.

Estes testes serviram tamb´em para obter uma estimativa preliminar da precis˜ao do descritor e, para tal, recorreu-se `a cria¸c˜ao de uma matriz de confus˜ao. Para a cria¸c˜ao dessa matriz, foram utilizadas 240 imagens de teste, onde 120 representavam zonas com troncos e as restantes 120 representavam as regi˜oes sem troncos.

O primeiro teste consistiu em processar as imagens no espa¸co de cor RGB, utilizando a SVM com um kernel do tipo RBF (com o parˆametro γ por defeito) e sem a utiliza¸c˜ao de qualquer t´ecnica de dete¸c˜ao de keypoints, permitindo assim ter um ponto de referˆencia para o tempo de processamento de cada frame. Embora n˜ao sejam utilizados keypoints, n˜ao foram processados todos os pixeis da imagem, uma vez que iriam ser obtidos tempos de processamento muito elevados. Desta forma, a cada itera¸c˜ao eram incrementadas 10 unidades `as coordenadas do pixel a processar, ou seja, cada vez que um pixel era processado, e tomando como exemplo o pixel (20,50), o pr´oximo pixel a processar seria o que se encontrava na mesma coluna mas 10 pixeis a baixo, (20,60). Assim que se chegava ao fim de uma coluna passava- se para a coluna ao lado incrementando tamb´em 10 pixeis, passando para o pixel (30,00). Com esta configura¸c˜ao, foi obtida a matriz de confus˜ao apresentada na figura5.4, onde o erro na dete¸c˜ao das regi˜oes com troncos ronda os 15,83 % e o erro

na dete¸c˜ao das regi˜oes sem troncos ronda os 24,17 %.

Figura 5.4 – Matriz de confus˜ao obtida utilizando um kernel RBF e sem usar keypoints.

Relativamente `a dete¸c˜ao dos troncos pode verificar-se que bastantes troncos ficaram por detetar, como ´e poss´ıvel observar nas duas frames da figura5.5, em que nenhum dos troncos apresentados foi detetado. Ainda assim, em v´arias situa¸c˜oes, os troncos foram corretamente detetados como se pode ver na figura 5.6.

Figura 5.5– Troncos n˜ao detetatos utilizando um kernel RBF e sem usar keypoints.

O facto de n˜ao ser utilizado qualquer tipo de t´ecnica de dete¸c˜ao de keypoints no processamento das frames, levou a que este se tornasse bastante lento. Este tipo de processamento n˜ao apresenta um desempenho eficaz uma vez que s˜ao processadas, v´arias vezes, ´areas praticamente iguais. Utilizando como exemplo o tronco central

Figura 5.6– Troncos detetatos utilizando um kernel RBF e sem usar keypoints.

(dos detetados) presente na imagem do lado direito da figura5.6, onde pode observar- se que esse tronco ficou assinalado por oito retˆangulos quando apenas um ou dois seriam suficientes para cobrir toda a ´area do mesmo. Uma vez que a apresenta¸c˜ao dos tempos de processamento de todas as frames do v´ıdeo n˜ao seria uma boa pr´atica e seria bastante ma¸cador, a compara¸c˜ao dos tempos de processamento entre as v´arias configura¸c˜oes foi baseado na m´edia dos tempos de processamento obtidos para 50 frames. Para a configura¸c˜ao apresentada anteriormente, a m´edia, o desvio padr˜ao e o valor m´ınimo e m´aximo obtidos foram os seguintes:

• M´edia: 4,0036 seg/frame; • Desvio padr˜ao: 0,0471; • M´ınimo: 3,9326;

• M´aximo: 4,1328.

De forma a tornar o processamento das frames mais r´apido, foram extra´ıdos keypoints das imagens onde, como j´a foi referido no cap´ıtulo anterior, essa extra¸c˜ao consistiu, inicialmente, em encontrar pontos de interesse utilizando um detetor de arestas Canny, isto porque, ´e in´util tentar encontrar um tronco numa regi˜ao onde nem sequer estas existam. De seguida foi implementada ainda a restri¸c˜ao que

consiste em processar apenas os pixeis que se encontrem a uma distˆancia euclidiana superior a 70 pixeis em rela¸c˜ao ao pixel processado anteriormente, havendo assim uma diminui¸c˜ao ainda maior do n´umero de regi˜oes a processar. Um caso bem exemplificativo de onde esta restri¸c˜ao surtiu efeito encontra-se apresentado no tronco mais `a esquerda na figura5.8, onde, os dois retˆangulos sobre ele, est˜ao alinhados na horizontal e se encontram desfasados de 70 pixeis na vertical.

A matriz de confus˜ao obtida utilizando esta “configura¸c˜ao” foi a mesma da configura¸c˜ao anterior, figura 5.4, tal como era de esperar, uma vez que a adi¸c˜ao do detetor de arestas e da restri¸c˜ao da distˆancia n˜ao est´a relacionado com o treino da SVM e desta forma n˜ao influenciou a classifica¸c˜ao das regi˜oes.

Como era de esperar, os melhoramentos do algoritmo refletiram-se claramente no tempo de processamento, que foi drasticamente reduzido. Os novos valores da m´edia, do desvio padr˜ao e do valor m´ınimo e m´aximo obtidos foram os seguintes:

• M´edia: 0,2938 seg/frame; • Desvio padr˜ao: 0,0374; • M´ınimo: 0,2275;

• M´aximo: 0,3533.

Com o objetivo de diminuir ainda mais o tempo de processamento, foi adicionada ainda a restri¸c˜ao do valor de LBP, ou seja, passaram assim a ser processados apenas os pixes que representem arestas, que se encontrem a uma distˆancia superior a 70 pixeis do pixel processado anteriormente e que possuam um LBP de valor 34. Aplicando esta nova restri¸c˜ao, os tempos de processamento diminu´ıram, obtendo-se assim os seguintes valores da m´edia, do desvio padr˜ao e do valor m´ınimo e m´aximo:

• M´edia: 0,2492 seg/frame; • Desvio padr˜ao: 0,0103;

• M´ınimo: 0,2189; • M´aximo: 0,2760.

Relativamente `a dete¸c˜ao dos troncos pode verificar-se que com esta configura¸c˜ao, tal como na anterior, houveram bastantes troncos que ficaram por detetar e tamb´em bastantes troncos que foram detetados em zonas onde estes n˜ao existem, como ´e poss´ıvel visualizar na figura 5.7.

Figura 5.7– Troncos n˜ao detetados e troncos detetados onde estes n˜ao existem, utilizando um kernel RBF e usando a t´ecnica de dete¸c˜ao de keypoints baseada no detetor de arestas, na distˆancia ao ´ultimo pixel processado e no valor de LBP.

Ainda assim, num grande n´umero de situa¸c˜oes os troncos foram corretamente detetados, como se pode visualizar no caso apresentado na figura 5.8. Contudo, neste caso, ao contr´ario do anterior, os troncos n˜ao se encontram detetados por um grande n´umero de retˆangulos, por exemplo, o tronco central (dos detetados) ainda da figura 5.8 foi detetado em apenas duas regi˜oes (dois retˆangulos) que, como se pode ver, s˜ao suficientes para englobar todo o tronco, ao contr´ario do que tinha acontecido no caso anterior em que o mesmo tronco tinha sido detetado em oito regi˜oes.

De seguida, foram ainda efetuados testes utilizando um outro tipo de kernel. Anteriormente estava a ser utilizado um kernel do tipo RBF e agora passou a ser utilizado um kernel linear. Relativamente `a matriz de confus˜ao obtida, neste caso,

Figura 5.8– Troncos detetados corretamente utilizando um kernel RBF e usando a t´ecnica de dete¸c˜ao de keypoints baseada no detetor de arestas, na distˆancia ao ´ultimo pixel processado e no valor de LBP.

poderia ser diferente, contudo, foi obtida uma matriz com os mesmo valores da obtida usando um kernel RBF. No que diz respeito aos tempos de processamento, foram obtidos tempos baixos uma vez que se trata de um tipo de kernel mais simples. Os valores obtidos para esta configura¸c˜ao foram os seguintes:

• M´edia: 0,1353 seg/frame; • Desvio padr˜ao: 0,0056; • M´ınimo: 0,1145;

• M´aximo: 0,1461.

Relativamente `a dete¸c˜ao dos troncos foi poss´ıvel verificar-se que, tal como em todas as configura¸c˜oes anteriores, houveram bastantes troncos que ficaram por detetar, figura5.9, contudo foi detetado um maior n´umero de troncos, como se pode observar na figura 5.10.

Em contrapartida, foram tamb´em detetados, em maior quantidade, troncos em zonas onde estes n˜ao existem (principalmente na regi˜ao das folhas e dos muros), como ´e poss´ıvel visualizar nas frames apresentadas na figura 5.11.

Figura 5.9 – Troncos n˜ao detetados utilizando um kernel linear e usando a t´ecnica de dete¸c˜ao de keypoints do teste anterior.

Figura 5.10– Troncos detetados corretamente utilizando um kernel linear e usando a t´ecnica de dete¸c˜ao de keypoints do teste anterior.

Durante os testes at´e aqui realizados constatou-se que os mastros que sustentam os bardos das videiras s˜ao detetados com maior efic´acia do que os troncos. Exemplos disso encontram-se nas duas frames da figura5.12, onde, por exemplo, na frame do lado direito existe um mastro que se encontra relativamente longe do robˆo e ainda assim foi detetado com sucesso. Isto deve-se ao facto de os mastros presentes nesta vinha serem todos praticamente iguais e de possu´ırem uma geometria mais regular que os troncos (que poder˜ao ter diferentes diˆametros, que poder˜ao ser retos, curvos, inclinados, entre outras varia¸c˜oes). ´E de salientar que os mastros foram detetados como sendo troncos, uma vez que, fazem parte do conjunto de imagens de treino

Figura 5.11 – Troncos detetados em regi˜oes onde estes n˜ao existem, utilizando um kernel linear e usando a t´ecnica de dete¸c˜ao de keypoints do teste anterior.

das regi˜oes dos troncos. Caso seja necess´ario diferenci´a-los, poderia ser criada uma classe apenas com imagens de mastros.

Figura 5.12 – Mastros que sustentam os bardos das videiras detetados com sucesso.

Ao longo da apresenta¸c˜ao destes testes tem vindo a ser referido que h´a um grande n´umero de troncos que n˜ao foram detetados e que foram detetados troncos onde estes n˜ao existem. Isto deve-se, em parte, ao facto de o classificador usado para treinar a SVM se basear na cor e, como as imagens tˆem uma tonalidade acastanhada essa informa¸c˜ao de cor n˜ao permite efetuar a diferencia¸c˜ao mais acertada. As imagens ficaram com este tom acastanhado devido ao facto de terem sido obtitas utilizando a cˆamara NoIR sem filtro azul. Desta forma foi efetuada a captura de

novas imagens com cores reais, com o intuito de verificar se a decis˜ao da classe a que cada sub-imagem pertence ir´a ser melhor conseguida. Foram assim recolhidas novas imagens utilizando a cˆamara RGB da Rapberry Pi e dessas mesmas imagens foram seleccionadas 1000 imagens para o treino (500 das regi˜oes dos troncos e 500 de outras regi˜oes) e 300 para o teste da SVM (150 das regi˜oes dos troncos e 150 de outras regi˜oes. Utilizando a configura¸c˜ao do teste anterior (kernel linear e dete¸c˜ao de keypoints baseada no detetor de arestas, na distˆancia ao ´ultimo pixel processado e no valor do LBP), alterando apenas a cˆamara respons´avel pela captura das imagens, os resultados foram mais satisfat´orios. A matriz de confus˜ao obtida encontra-se apresentada na figura 5.13, onde o erro na dete¸c˜ao das regi˜oes com troncos desceu para os 4,67 % e o erro na dete¸c˜ao das regi˜oes sem troncos desceu para os 5,33 %

Figura 5.13 – Matriz de confus˜ao obtida utilizando as imagens da cˆamara RGB e a configura¸c˜ao do teste anterior.

O tempo de processamento de cada frame bem como o desvio padr˜ao e valor m´aximo e m´ınimo para a configura¸c˜ao utilizada foram os seguintes:

• M´edia: 0,0682 seg/frame; • Desvio padr˜ao: 0,0024; • M´ınimo: 0,0630;

Neste caso n˜ao se pode fazer uma compara¸c˜ao direta com os testes anteriores, uma vez que se tratam de imagens diferentes e, o menor tempo de processamento pode dever-se ao facto de ter sido detetada uma menor quantidade de keypoints.

Quanto aos resultados obtidos no processamento das frames, continuam a existir troncos que ficaram por detetar, figura5.14, principalmente nas regi˜oes onde existem troncos mais irregulares, contudo em menor quantidade. O n´umero de dete¸c˜oes de troncos em regi˜oes onde estes n˜ao existem, tamb´em foi reduzido drasticamente, sendo muito raras as vezes em que isto aconteceu.

Figura 5.14– Troncos n˜ao detetados utilizando as imagens da cˆamara RGB e a configura¸c˜ao do teste anterior.

A dete¸c˜ao dos troncos foi bastante bem conseguida uma vez que quase todos os troncos foram bem detetados, mesmo tendo uma estrutura bastante irregular, figura 5.15. Foram obtidos melhores resultados com estas imagens uma vez que o facto de estas possu´ırem mais informa¸c˜ao de cor, levaram `a cria¸c˜ao de um descritor mais preenchido e, desta forma, mais detalhado e ´unico para cada regi˜ao, como ´e poss´ıvel observar nos dois descritores em forma de histograma apresentados na figura 5.16.

Figura 5.15 – Troncos detetados corretamente utilizando as imagens da cˆamara RGB e a configura¸c˜ao do teste anterior.

5.3

Testes realizados com imagens recolhidas pelo

AgrobV15

Mais tarde foram realizados novos testes mais exaustivos com imagens recolhidas utilizando o plataforma AgrobV15, sendo que, para o treino e teste da SVM, foram constru´ıdos seis conjuntos de dados diferentes. Esses conjuntos foram constru´ıdos utilizando as trˆes configura¸c˜oes de cˆamara j´a aqui referidas (RGB, NoIR sem filtro azul e NoIR com filtro azul). Em todas as configura¸c˜oes as imagens recolhidas pelo

Documentos relacionados