Closed RBastos36 closed 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.
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.
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.