Uso do kit de ferramentas BboxToolkit (conjunto de dados DOTA)

Algumas ferramentas são implementadas usando BboxToolkit em /BboxToolkit/tools/, principalmente com três funções. ①img_split.py pode dividir uma imagem grande em pequenos pedaços através de uma janela deslizante. Esta ferramenta é normalmente usada para grandes imagens aéreas, como as do DOTA. ②visualize.py pode desenhar diferentes tipos de caixas na imagem. ③cal_mAP.py é usado para calcular mAP

1. img_split.py

img_split.py pode dividir uma imagem grande em pequenos pedaços por meio de uma janela deslizante. Esta ferramenta é normalmente usada para grandes imagens aéreas, como as do DOTA.

Parâmetros importantes

--base_json : carrega parâmetros do arquivo json. Temos alguns arquivos json padrão em split_configs.
--load_type : Determina a função de carregamento usada em img_split. Esta função precisa ser implementada como load_{load_type} em BboxToolkit.datasets. Por exemplo, load_dota, load_dior, etc.
--img_dirs, --ann_dirs : Caminhos para arquivos de imagem e anotação. Esses parâmetros podem ter múltiplas entradas, mas devem estar alinhados.
--size, --gaps : Determina o tamanho dos caminhos e a sobreposição das divisões.
--save_dir : Caminho para salvar imagens e anotações segmentadas.

python img_split.py --base_json split_configs/dota1_0/ss_train.json
python image_split.py --load_type dota --img_dirs {image path} --ann_dirs {annotation path} --sizes 1024 --gaps 200 --save_dir {saving path}

Nota: arquivos json começando com ss significam "escala única", ms significa "escalas múltiplas".

Formato do conjunto de dados gerado após a execução

 Onde split_config.json salva os fragmentos divididos, que podem ser recarregados em img_splitted.py. patch_anfile.pkl contém as notas do patch. ori_anfile.pkl contém anotações para imagens grandes.

2.visualize.py

visualize.py pode desenhar diferentes tipos de caixas nas imagens.

Parâmetros importantes

--base_json : carrega parâmetros do arquivo json. Temos alguns arquivos json padrão em vis_configs.
--load_type : Determina a função de carregamento. O mesmo que a seção --load_type em img_split.py
--img_dir, --ann_dir : caminhos para arquivos de imagem e anotação.
--show_off : Desativa a visualização online. Defina como True quando precisar salvar a imagem de visualização.
--save_dir : Caminho para salvar as imagens de visualização.
--score_thr : limite de pontuação para filtrar caixas de baixa confiança.
--colors : cores da caixa de entrada para diferentes categorias. Deve ser uma string ou um caminho de arquivo. Para obter mais informações, consulte Visualização.

python visualize.py --base_json vis_configs/dota1_0/config.json
python visualize.py --load_type dota_submission --img_dir {image path} --ann_dir {annotation path} --score_thr 0.3

Se quiser cores diferentes para classes diferentes, você pode modificar as cores em json ou comandos. cores recebe um caminho de arquivo ou str de cores separadas por |.
Em json, mostramos apenas o caso do dota_bmission, que visualiza os resultados da detecção no dota. Para outros casos, load_type pode ser alterado para visualizar o conjunto de dados ou dividido em .pkl.

3.cal_mAP.py

cal_mAP.py é usado para calcular mAP

Parâmetros importantes

--img_dir : Caminho para a imagem. A verdade básica e os resultados têm a mesma imagem.
--gt_type, --gt_ann_dir : Tipo de carga e caminho de anotação para informações básicas.
--res_type, --res_ann_dir : Tipo de carregamento e caminho de anotação para resultados.
--save_dir : Caminho para salvar as imagens de visualização.
--iou_thr : O limite iou usado para decidir se uma caixa é positiva ou não.

python cal_mAP.py --img_dir {image path} --gt_type dota --gt_ann_dir {dota annotation path} --res_type dota_submission --res_ann_dir {dota submission} --iou_thr 0.5

4. Problemas encontrados

Erro: permissão negada/público
Motivo: abri o arquivo exigido por este código e não consigo lê-lo efetivamente.
Solução: Salve e feche os arquivos necessários

Acho que você gosta

Origin blog.csdn.net/weixin_42715977/article/details/131687752
Recomendado
Clasificación