Goncalo287 / savi_t2

0 stars 0 forks source link

Problemas com Learning de point clouds #2

Closed RBastos36 closed 7 months ago

RBastos36 commented 8 months ago

Ao modificar o modelo para treinar e testar os point clouds, baseado no artigo da WandB utilizando a biblioteca torch_geometric, gera erros ao correr o programa, devido a conflitos entre a biblioteca mencionada e a biblioteca torch, não reconhecendo a função PointConv.

Uma possível explicação é as versões de ambas as bibliotecas não serem compatíveis uma com a outra.

RBastos36 commented 7 months ago

O problema anterior penso ser devido ao facto da função da biblioteca ter sido substituída na biblioteca PyTorch Geometric.

nn.conv.PointConv is deprecated in favour of nn.conv.PointNetConv

Após alguma pesquisa, foi possível encontrar outros tutoriais de deep leaning com point clouds, como em Point Net for Classification, em PointNet for 3D Object Classification [PyTorch] ou em Open3D-PointNet. Todos estes tutoriais explicam como os modelos funcionam, mas utilizam todos ficheiros diferentes aos dos datasets a utilizar (".pcd"). A maioria dos ficheiros usados pelos tutoriais anteriores (".off" ou ".pts") possuem várias linhas, cada uma com as posições x y z de cada ponto. Já os ficheiros ".pcd" dos datasets possuem informação x y z rgb imX imY.

Assim, os modelos apresentados nos links anteriores não são capazes de ler os ficheiros dos nosso datasets, devido ao problema de diferentes formatações da informação.

Um pequeno aparte, para a criação das métricas de performance para o treino e teste do modelo, encontrei a biblioteca TorchMetrics que possui funções para o pretendido.

RBastos36 commented 7 months ago

Já foi possível criar um modelo capaz de ser treinado e testado com point clouds. Foi necessário criar um script para converter os ficheiros ".pcd" dos datasets disponíveis para o formato ".off". A partir destes novos ficheiros foi criado um código, baseado em PointNet for 3D Object Classification [PyTorch], sendo então possível alcançar o pretendido, como observado na pasta _Testing_PointCloudLearning3 deste repositório.

No código em questão já é implementada uma Matriz de Confusão para facilitar a deteção de problemas, faltando apenas implementar as métricas de performance necessárias, podendo usar a biblioteca TorchMetrics para tal.