Commit a450ac2f authored by João Porto's avatar João Porto
Browse files

alterações na escrita da documentação

parent f93183c2
# Compara Detectores MMDetection # Compara Detectores MMDetection
- **autores**: Hemerson Pistori (pistori@ucdb.br), Fabio Prestes (fpcrezende@gmail.com), Joao Vitor Porto (jvaporto@gmail.com) - **autores**: Hemerson Pistori (pistori@ucdb.br), Fábio Prestes (fpcrezende@gmail.com), João Vitor Porto (jvaporto@gmail.com)
- **versao**: 2.0.0 - **versao**: 2.0.0
Scripts e patches para facilitar a instalação e utilização do MMDetection. Scripts e patches para facilitar a instalação e utilização do MMDetection.
...@@ -7,25 +7,25 @@ Testado no Ubuntu 20.04 com python 3.7.7. ...@@ -7,25 +7,25 @@ Testado no Ubuntu 20.04 com python 3.7.7.
## Instalação e dependências: ## Instalação e dependências:
Leia o arquivo install.sh para ver os comandos necessarios para instalar o projeto, ou crie o ambiente e instale todas as dependencias usando o seguinte comando: Leia o arquivo install.sh para ver os comandos necessários para instalar o projeto, ou crie o ambiente e instale todas as dependências usando o seguinte comando:
```shell ```shell
sh install.sh sh install.sh
``` ```
Caso o script em si nao rode corretamente, rode cada linha de comando do script `install.sh` linha por linha. Caso o script em si não rode corretamente, rode cada linha de comando do script `install.sh` linha por linha.
Placa gráfica: GTX 1070 Placa gráfica: GTX 1070
Driver nvidia: 450.66 Driver nvidia: 450.66
## Preparação do mmdetection para novos dados ## Preparação do mmdetection para novos dados
- Inicialmente o software está preparado para um problema de contagem de pupas de Spodoptera Frugiperda, um problema de duas (2) classes. Devido ao jeito que o MMDetection foi implementado, nao eh necessario uma classe para o fundo. - Inicialmente o software está preparado para um problema de contagem de pupas de Spodoptera Frugiperda, um problema de duas (2) classes. Devido ao jeito que o MMDetection foi implementado, não é necessário uma classe para o fundo.
- Caso queira usar novos dados/datasets, sera necessario mudar certas variaveis em alguns arquivos espalhados pelo projeto. - Caso queira usar novos dados/datasets, sera necessário mudar certas variáveis em alguns arquivos espalhados pelo projeto.
- Para simplificar a utilizacao variada do MMDetection, todos os arquivos que devem ser mudados para novos datasets se encontram em utils/ - Para simplificar a utilização variada do MMDetection, todos os arquivos que devem ser mudados para novos datasets se encontram em utils/
- class_names.py - class_names.py
```python ```python
# Modificar a funcao que contem o tipo de dataset sendo usado. Por exemplo, para datasets baseados no Coco/CocoDataset: # Modificar a função que contem o tipo de dataset sendo usado. Por exemplo, para datasets baseados no Coco/CocoDataset:
# Linha 67 # Linha 67
def coco_classes(): def coco_classes():
return [ return [
...@@ -40,7 +40,7 @@ Driver nvidia: 450.66 ...@@ -40,7 +40,7 @@ Driver nvidia: 450.66
``` ```
- coco_detection.py - coco_detection.py
```python ```python
# Modificar o tipo de dataset, e os caminhos para as pastas de imagens e os arquivos de anotacoes. # Modificar o tipo de dataset, e os caminhos para as pastas de imagens e os arquivos de anotações.
# Exemplo: coco_detection.py, linha 32 para frente: # Exemplo: coco_detection.py, linha 32 para frente:
data = dict( data = dict(
samples_per_gpu=2, samples_per_gpu=2,
...@@ -64,13 +64,13 @@ Driver nvidia: 450.66 ...@@ -64,13 +64,13 @@ Driver nvidia: 450.66
img_prefix=data_root + 'test/', # Diretorio para a pasta com todas as imagens de teste img_prefix=data_root + 'test/', # Diretorio para a pasta com todas as imagens de teste
pipeline=test_pipeline)) pipeline=test_pipeline))
``` ```
- Quaisquer arquivo de configuracao de rede que sera usado, dependendo do arquivo. - Quaisquer arquivo de configuração de rede que sera usado, dependendo do arquivo.
Eh recomendado utilizar a [documentacao do MMDetetion](https://mmdetection.readthedocs.io/en/latest/tutorials/config.html) para aprender exatamente o que cada arquivo base e variavel modifica na rede. Em geral, a maioria das redes vao ser compostas de 4 componentes, mas podem ter menos ou nenhum componente base pronto: É recomendado utilizar a [documentação do MMDetetion](https://mmdetection.readthedocs.io/en/latest/tutorials/config.html) para aprender exatamente o que cada arquivo base e variável modifica na rede. Em geral, a maioria das redes vão ser compostas de 4 componentes, mas podem ter menos ou nenhum componente base pronto:
- default_runtime.py - default_runtime.py
- schedule_1x.py/schedule_2x.py - schedule_1x.py/schedule_2x.py
- coco_detection.py - coco_detection.py
- Se usado, alguma rede base preparada previamente. Para saber quais redes ja se tem prontas para usar como base, verifique `./mmdetection/configs/_base_/models/` - Se usado, alguma rede base preparada previamente. Para saber quais redes já se tem prontas para usar como base, verifique `./mmdetection/configs/_base_/models/`
- Todos estes arquivos podem ser encontrados originalmente dentro de `./mmdetection/configs/_base_/`. Para simplificacao de uso do projeto, estes arquivos tambem se encontram dentro da pasta `./utils`, e os arquivos localizados dentro desta pasta substituem os arquivos originais, entao caso modificacoes nestes arquivos sejam desejados, modifique os arquivos dentro de `./utils/`. - Todos estes arquivos podem ser encontrados originalmente dentro de `./mmdetection/configs/_base_/`. Para simplificação de uso do projeto, estes arquivos tambem se encontram dentro da pasta `./utils`, e os arquivos localizados dentro desta pasta substituem os arquivos originais, entao caso modificações nestes arquivos sejam desejadas, modifique os arquivos dentro de `./utils/`.
## Usando outra arquitetura ## Usando outra arquitetura
...@@ -101,25 +101,25 @@ Driver nvidia: 450.66 ...@@ -101,25 +101,25 @@ Driver nvidia: 450.66
5. Finalmente, seguir o [workflow basico a seguir](README.md#workflow-basico) 5. Finalmente, seguir o [workflow basico a seguir](README.md#workflow-basico)
### Workflow basico ### Workflow basico
6. Uma vez preparado o dataset, modificar `./run/arquitetura.txt` para o nome do arquivo de configuracao desejada, retirando o `.py` do final 6. Uma vez preparado o dataset, modificar `./run/arquitetura.txt` para o nome do arquivo de configuração desejada, retirando o `.py` do final
7. Para rodar o treinamento: 7. Para rodar o treinamento:
```shell ```shell
cd ../run cd ../run
sh treina.sh sh treina.sh
``` ```
- Caso deseje rodar multiplas redes em paralelo (caso tenha acesso a multiplas GPUs), rode a primeira rede, modifique a variavel gpu-ids a seguir para a outra GPU que deseje usar, modifique `./run/arquitetura.txt`, e rode a nova rede. - Caso deseje rodar multiplas redes em paralelo (caso tenha acesso a multiplas GPUs), rode a primeira rede, modifique a variável gpu-ids a seguir para a outra GPU que deseje usar, modifique `./run/arquitetura.txt`, e rode a nova rede.
- Cuidado: Segundo alguns experimentos, certas redes nao se lidam bem ao rodar em paralelo com outras redes, dividindo poder de processamento, podendo acarretar a problemas como a perda (*loss*) alcancando NaN e nao treinando corretamente, entre outros problemas. - Cuidado: Segundo alguns experimentos, certas redes não são capazes de rodar em paralelo com outras redes, dividindo poder de processamento, podendo acarretar a problemas como a perda (*loss*) alcancando NaN e nao treinando corretamente, entre outros problemas.
8. Para rodar o teste: 8. Para rodar o teste:
```shell ```shell
cd ../run cd ../run
sh testa.py sh testa.py
``` ```
- Por padrao, o script de teste ira inserir as imagens resultantes dentro da pasta `./results/`, em juncao a um arquivo pickle (.pkl) contendo todas as variaveis desejadas para analise estatistica do teste. - Por padrão, o script de teste irá inserir as imagens resultantes dentro da pasta `./results/`, em juncao a um arquivo pickle (.pkl) contendo todas as variáveis desejadas para análise estatistica do teste.
- Tambem se tem multiplos scripts prontos para analise estatistica dentro de [`./mmdetection/tools/analysis_tools`](mmdetection/tools/analysis_tools/) - Tambem se tem múltiplos scripts prontos para análise estatística dentro de [`./mmdetection/tools/analysis_tools`](mmdetection/tools/analysis_tools/)
- Para mais informacoes sobre estes scripts e como rodar cada um, por favor se refira a [documentacao do MMDetection sobre estes scripts](https://mmdetection.readthedocs.io/en/latest/useful_tools.html), suas explicacoes e seus exemplos de uso - Para mais informações sobre estes scripts e como rodar cada um, por favor se refira a [documentacao do MMDetection sobre estes scripts](https://mmdetection.readthedocs.io/en/latest/useful_tools.html), suas explicações e seus exemplos de uso
- Atualmente, apenas a ferramenta de [analise de logs](mmdetection/tools/analysis_tools/analyze_logs.py) foi usada com sucesso - Atualmente, apenas a ferramenta de [analise de logs](mmdetection/tools/analysis_tools/analyze_logs.py) foi usada com sucesso
- Para instalar as dependencias necessarias para este script, por favor instale as seguintes bibliotecas: - Para instalar as dependências necessárias para este script, por favor instale as seguintes bibliotecas:
```shell ```shell
pip install numpy matplotlib seaborn pip install numpy matplotlib seaborn
# Ou caso queira instalar em um ambiente separado do Anaconda: # Ou caso queira instalar em um ambiente separado do Anaconda:
...@@ -144,4 +144,4 @@ cd ../run ...@@ -144,4 +144,4 @@ cd ../run
```shell ```shell
cd ../run cd ../run
./detectaTodas.sh ./detectaTodas.sh
``` ```
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment