Perspectiva Teórica A-Sheaf para Segmentação Robusta
Este é um repositório para o nosso trabalho sobre A-Sheaf-Theoretic-Perspective-for-Robust-Segmentation
Descrição
Este repositório contém o código para treinar modelos de segmentação robustos, reforçando a equivariância de forma em um espaço latente discreto e usando a teoria do feixe celular para modelar a composicionalidade da topologia do mapa de segmentação de saída e impor uma perda baseada na composição (veja o artigo para mais detalhes). Esta base de código contém código de treinamento e modelo para nossos modelos. Temos diversos tipos de modelos. Temos modelos que impõem equivariância usando uma perda baseada em contraste, conforme descrito em nosso artigo. Aplicamos equivariância ao grupo diédrico (D4) usando nossa perda de base contrastiva. Também reforçamos a equivariância restringindo os núcleos convolucionais em nosso modelo à representação de grupo regular ou irredutível.
Começando
Dependências
- Prepare um ambiente com python = 3.7 e use o comando "pip install -r requisitos.txt" para as dependências.
Conjuntos de dados
- Você precisará criar 3 arquivos csv (train.csv, validação.csv, test.csv). O train.csv deve ter três colunas ('t2image','adcimage','t2label') contendo os caminhos para as imagens e segmentações correspondentes. Validation.csv e test.csv devem ter duas colunas ('t2image','t2label') contendo os caminhos para as imagens e segmentações correspondentes. Apoiamos o formato nifti. Fornecemos um exemplo de dados de próstata em dados/próstata.
- Você é livre para optar por treinar no conjunto de dados de sua preferência, pré-processado como desejar. Fornecemos dataloaders para os conjuntos de dados da próstata.
- Próstata: O conjunto de dados da próstata é adquirido do Desafio NCI-ISBI13 e do conjunto de dados decathalon.
Treinamento/Teste.
- Você pode executar o script de treinamento/teste junto com main.py. Você deve inserir os caminhos para os arquivos csv de treinamento, validação e teste e o diretório de saída para salvar resultados e imagens. Você precisará ajustar outros hiperparâmetros de acordo com seu conjunto de dados, que pode ser visto em main.py. Temos 4 modelos: 'ShapeVQUnet', 'HybridShapeVQUnet', 'HybridSE3VQUnet', '3DSE3VQUnet'. O modelo 'ShapeVQUnet' e 'HybridShapeVQUnet' restringe o espaço latente a um espaço de forma equivariante ao grupo D4 usando uma perda baseada em contraste. Você deve escolher o argumento --contrastive True se escolher o modelo 'ShapeVQUnet' ou 'HybridShapeVQUnet' e escolher --contrastive False caso contrário. O 'ShapeVQUnet' é um modelo 3D, enquanto o 'HybridShapeVQUnet' é um modelo 2D/3D. Os modelos 'HybridSE3VQUnet' e '3DSE3VQUnet' restringem os kernels convolucionais ao grupo SE3. Se você escolher 'HybridSE3VQUnet' e '3DSE3VQUnet', terá que escolher se deseja uma representação de grupo regular ('Regular') ou irredutível ('Irredutível') (--repr) . Se você escolher uma representação de grupo regular ('Regular'), então você terá que escolher o grupo (--group), por exemplo, --group 4 é a equivariância do grupo D4. Você também deve escolher a multiplicidade (--multiplicity) de cada elemento do grupo se escolher o modelo 'HybridSE3VQUnet' e '3DSE3VQUnet'. Para todos os modelos, você também deve escolher após quantas épocas deseja incluir a perda baseada no feixe celular (--topo_epoch). Abaixo está um exemplo para dados da próstata
python main.py --modeltype 'HybridShapeVQUnet' --contrastive True --topo_epoch 25 --training_data '.../Sheaves_for_Segmentation/data/Prostate/train.csv' --validation_data '.../Sheaves_for_Segmentation/data/Prostate/validation.csv' --test_data '.../Sheaves_for_Segmentation/data/Prostate/test.csv', --output_directory '.../Sheaves_for_Segmentation/data/Prostate/output/'
Autores
Nomes dos colaboradores e informações de contato
Ainkaran Santhirasekaram ([email protected])
Referências
- escnn
- Perda persistente de segmentação por homologia