Constrói dois tipos de amostragem para treinar a Faster-RCNN: validação cruzada e repetições. O projeto foi feito para ser usado no Google Colab. Para usá-lo faça o upload do arquivo crossvalidation_augmentation_oversampling_for_object_detection.ipynb em seu Google Colab e siga as instruções contidas neste notebook.
"Crie uma pasta para seu conjunto de dados. Neste exemplo usaremos a pasta 'annotated_pests_v3'. A pasta 'annotated_pests_v3' tem duas classes de objetos com imagens anotadas com LabelImg. As pastas devem ser organizadas da seguinte forma:\n",
"```\n",
"├── annotated_pests_v3: pasta raiz do conjunto de dados. \n",
" ├── Edessa_meditabunda: uma classe de objetos\n",
" ├── Edessa_meditabunda1.jpg\n",
" ├── Edessa_meditabunda1.xml\n",
" ├── Euschistus_heros Exemplo: uma classe de objetos\n",
" ├── Euschistus_heros1.jpg\n",
" ├── Euschistus_heros1.xml\n",
"```\n",
"\n",
"Caso seu conjunto de dados não seja separado por classes (pastas), suas imagens anotadas devem ser organizadas da seguinte forma:\n",
"```\n",
"├── annotated_pests_v3: pasta raiz do conjunto de dados. \n",
" ├── imagens: pode ser qualquer nomenclatura\n",
" ├── Edessa_meditabunda1.jpg\n",
" ├── Edessa_meditabunda1.xml\n",
" ├── Euschistus_heros1.jpg\n",
" ├── Euschistus_heros1.xml\n",
"```\n",
"Compacte seu conjunto de dados no formato zip e faça o upload em uma pasta no seu Google Drive. No exemplo vamos fazer o upload na pasta Meu Drive/datasets. Veja a organização abaixo.\n",
"1. **tipo_amostragem**: Se a amostragem será validação cruzada ou repetições. Exemplo: '**cross**' para validação cruzada, '**repetition**' para repetições. Obs: quando usado 'repetition' sempre serão criadas 10 repetições.\n",
"2. **percentual_aumento_dados**: Se haverá aumento de dados. Se o valor é 0, não haverá aumento de dados. Se o valor é > 0, haverá aumento de dados. Valores válidos para aumento de dados: .1, .2, ... .9,1. (de 10 a 100%). Observação: aumento de dados somente é realizado nos conjuntos de treinamento e validação (se houver).\n",
"3. **number_fold_or_image_train**: Caso '**tipo_amostragem**' seja 'repetition' você deve informar o número de imagens que será usado no treinamento em cada repetição. Exemplo: 30. Dessa forma, serão usadas 30 imagens para treinamento em cada repetição e 70 imagens para testes. O 'number_fold_or_image_train' deve ser <=30. Observação: quando usado o 'tipo_amostragem' setado como 'repetition' o número de imagens para testes sempre será 70. Esse tipo de amostragem foi usado neste artigo para classificação de imagens: https://ieeexplore.ieee.org/document/9170587 . Caso 'tipo_amostragem' seja 'cross' você deve informar o número de dobras. Exemplo: 5 ou 10. \n",
"4. **tem_validacao**: valores válidos 'True' ou 'False'. Se 'True' as repetições ou as dobras serão criadas com dados para validação. Os dados para validação são obtidos do conjunto de treinamento de maneira aleatória. Atualmente, somente 10% dos dados do treinamento são usados para validação. Caso 'tem_validacao' seja 'False' não são criados dados para valiadação. \n",
"5. **tem_oversampling**: Informe se haverá oversampling: True ou False. Observação: oversampling somente é aplicado nos conjuntos de treinamento e validação (se houver).\n",
"6. **dataset_name**: nome do conjunto de dados. Neste exemplo estamos usando 'annotated_pests_v3'.\n",
"7. **path_dataset**: pasta existente no Drive onde está o conjunto de dados compactado (.zip). Neste exemplo estamos usando '/content/gdrive/MyDrive/datasets'."
]
},
{
"cell_type": "code",
"metadata": {
"id": "kBAwfohwNtVx"
},
"source": [
"tipo_amostragem = 'cross' # repetition ou cross\n",
"percentual_aumento_dados = .1 # de .1 a 1\n",
"# se tipo_amostragem = 'cross', então deve ser 5 ou 10.\n",
"# se tipo_amostragem = 'repetition', normalmente usa-se 30, 25, .., 10, 5 images para treinamento. O conjunto de teste é fixado em 70 imagens\n",
"number_fold_or_image_train = 5 \n",
"tem_validacao = True \n",
"tem_oversampling = True\n",
"\n",
"dataset_name = 'annotated_pests_v3'\n",
"path_dataset='/content/gdrive/MyDrive/datasets' # pasta existente no Drive\n"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "MF6v8k0VLaCE"
},
"source": [
"## Clonando o projeto crossvalidation-repetition"