Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (6.8%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

Basic Info
  • Host: GitHub
  • Owner: santipais
  • License: apache-2.0
  • Language: Python
  • Default Branch: master
  • Size: 5.61 MB
Statistics
  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created 8 months ago · Last pushed 8 months ago
Metadata Files
Readme Contributing License Code of conduct Citation

README.md

Introduction

Toolbox MMSegmentation

⚙️ Pasos de instalación

⚠️ Nota

Estos pasos fueron los utilizados para instalar la toolbox MMSegmentation en el siguiente entorno.
Ante cualquier duda o incompatibilidad, se recomienda revisar la guía oficial de instalación de MMSegmentation:

👉 https://mmsegmentation.readthedocs.io/en/latest/get_started.html


🖥️ Entorno utilizado

  • Sistema operativo: Windows 10/11 usando WSL 2.0
  • Distribución: Ubuntu en WSL
  • GPU: NVIDIA GeForce RTX 3060
  • CUDA Toolkit: 11.5 (descargar aquí: https://developer.nvidia.com/cuda-11-5-0-download-archive?targetos=Linux&targetarch=x8664&Distribution=WSL-Ubuntu&targetversion=2.0&targettype=deblocal)

🔍 Verificación de GPU

Antes de instalar, verificar que WSL puede acceder a la GPU correctamente:

bash nvidia-smi


🐍 Instalación de Conda

Instalar Miniconda o Anaconda desde la documentación oficial:
https://docs.conda.io/projects/conda/en/latest/user-guide/install/index.html


🧪 Crear y activar un entorno Conda

bash conda create --name malezas python=3.11 -y conda activate malezas


🔧 Instalación de PyTorch y dependencias principales

bash pip install torch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 --index-url https://download.pytorch.org/whl/cu118 pip install -U openmim mim install mmengine mim install "mmcv==2.1.0"


📦 Clonar el repositorio y configurar el entorno

bash git clone git@github.com:santipais/MAgro.git cd MAgro pip install -v -e .


✅ Instalación de dependencias adicionales

Estas ya deberian estar instaladas, pero por las dudas:

bash pip install ftfy scipy regex

⚠️ Importante: Es posible que algunas versiones de dependencias fallen si no se fuerza la instalación de numpy.

bash pip install numpy==1.25 --force-reinstall


🚀 Probar que todo funciona

Descargar el checkpoint del modelo3 (lo encontras más abajo) y pegarlo en checkpoints/.

Correr:

bash python inference.py


🏋️‍♂️ Entrenamiento del modelo

⚠️ Nota previa

Antes de comenzar, si ocurre algún error relacionado al path de los módulos, ejecutar:

bash export PYTHONPATH=$(pwd):$PYTHONPATH

Y acordate de estar en el entorno de conda que instalamos!


📁 Preparar los datos

  1. Descargar las imágenes y etiquetas correspondientes.
  2. Colocar:

    • Las imágenes en: data/images
    • Las etiquetas en: data/labels
  3. Ejecutar el siguiente comando para dividir el dataset:

bash python tools/dataset_converters/malezas.py --test <porcentaje_test> --val <porcentaje_val> --seed <semilla>

Por ejemplo:

bash python tools/dataset_converters/malezas.py --test 0.1 --val 0.2 --seed 42

Por default se tiene un valor de test 0.2, val 0.15 (por lo que, 0.65 de train) y semilla 42.

Esto generará las carpetas:

data/malezas/images/ data/malezas/annotatios/

Cada una con sus correspondientes subcarpetas train/ val/ test/


📥 Descargar checkpoint preentrenado

  1. Descargar el checkpoint deseado del cual partir para realizar el fine-tuning (por ejemplo, un modelo SegFormer). Más adelante comentaremos algunos checkpoints obtenidos y de los cual se recomendamos partir.
  2. Guardarlo en el directorio que prefieras.

⚠️ Muy importante: editar el archivo configs/malezas/segformer_mit-b5_malezas.py
Ir a la línea 30 y reemplazar la ruta del checkpoint con la ruta local donde lo guardaste.


🚀 Entrenar el modelo

Ejecutar el siguiente comando:

bash python tools/train.py configs/malezas/segformer_mit-b5_malezas.py

El entrenamiento creara el archivo work_dirs/segformer_mit-b5_malezas/ donde se almacenara todos los pesos y logs.


ℹ️ Detalles adicionales

El archivo de configuración configs/malezas/segformer_mit-b5_malezas.py está configurado para:

  • Entrenar durante 40,000 iteraciones
  • Guardar los pesos del modelo cada 5,000 iteraciones

Estos valores se pueden modificar dentro del mismo archivo de configuración según tus necesidades.


👀 Inferencia y Test del modelo.

🧪 Test

Para testear el modelo con un peso obtenido, simplemente ejecutar:

bash python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} Donde CONFIGFILE probablemente será `configs/malezas/segformermit-b5malezas.py` y CHEKPOINTFILE será del estilo work_dirs/segformer_mit-b5_malezas/iter_5000.pth

Inferencia

Se crearon dos archivos, inference.py y inference_dir.py para inferar una imagen individual o un directorio de images respectivamente. En ambos casos se va a tener que modificar los archivos para utilizar el archivo config del modelo deseado, los pesos deseados y donde se quieren guardar los resultados. Las lineas a modificar para esto estan marcadas con un comment # Modificar al final


🏷️ Proceso de etiquetado

1. Creación del entorno para etiquetar

El proceso de etiquetado se realizó fuera de WSL, directamente en Windows, creando un nuevo entorno virtual conda y luego instalando la herramienta Labelme:

bash conda create --name etiquetado python=3.11 -y conda activate etiquetado pip install labelme


2. Asistencia por notebooks

Durante el desarrollo, se utilizaron dos notebooks de Google Colab:

  • RemapOfClasses: Se convierte las máscaras de los resultados de inferir con el modelo san-vit-l14_coco-stuff164k-640x640 , a las 5 clases deseadas por nosotros.
  • GrayScaleToLabelMe: convertía esas máscaras grises a formato JSON con polígonos, compatibles con Labelme.
  • LabelMeToGrayScaleAndImageVis: una vez finalizado el proceso de etiquetado con Labelme, se utilizó otro notebook para convertir las anotaciones en formato de polígonos (JSON) al formato compatible con MMSegmentation (máscaras en escala de grises).

3. Edición final con Labelme

Una vez obtenidas las predicciones en formato JSON por el segundo notebook, se realizaron ajustes y retoques manuales ejecutando Labelme con el siguiente comando:

bash labelme {directorio_imagenes} --output {directorio_de_etiquetas}

Esto permitió generar las anotaciones finales en formato Labelme, que luego al pasar por el tecer notebook, se tienen las etiquetas listas para ser utilizadas por la toolbox MMSegmentation.


📊 Resultados de Segmentación y Pesos

A continuación se muestran los resultados y pesos obtenidos. Todos fueron entrenados mediante el mismo archivo de configuración, es decir con el mismo modelo, pero se cambio el dataset usado. Cada tabla incluye las métricas por clase (IoU y Accuracy), así como métricas globales como mIoU y aAcc.


🔷 Modelo 1: Dataset formado exclusivamente por imagenes nuestras.

| Class | IoU | Acc | |------------|-------|-------| | road | 96.46 | 99.01 | | vegetation | 93.11 | 96.58 | | sky | 95.54 | 97.25 | | obstacle | 47.66 | 53.92 | | others | 8.24 | 8.62 |

aAcc: 96.94     mIoU: 68.20     mAcc: 71.08     data_time: 0.0079     time: 0.1589

Descargar peso


🔷 Modelo 2: Dataset formado por todas nuestras imagenes y las obtenidas con RELLIS-3D

| Class | IoU | Acc | |------------|-------|-------| | road | 87.59 | 95.31 | | vegetation | 86.01 | 91.59 | | sky | 96.23 | 97.55 | | obstacle | 64.58 | 73.08 | | others | 80.33 | 84.71 |

aAcc: 93.95     mIoU: 82.95     mAcc: 88.45     data_time: 0.0032     time: 0.0989

Descargar peso


🔷 Modelo 3: Dataset equilibrado. (Todas nuestras imagenes y una selección de 200 de RELLIS-3d)

En este modelo obtuvimos los mejores resultados. Son los pesos que recomendamos seguir la linea.

| Class | IoU | Acc | |------------|-------|-------| | road | 90.32 | 97.85 | | vegetation | 92.26 | 95.51 | | sky | 95.32 | 97.65 | | obstacle | 64.95 | 68.15 | | others | 83.22 | 89.86 |

aAcc: 94.8     mIoU: 85.21     mAcc: 89.80     data_time: 0.0040     time: 0.1190

Descargar peso


📖 Citación

Este proyecto usa MMSegmentation. Si lo usas, para citarlo:

```bibtex @misc{mmseg2020, title={{MMSegmentation}: OpenMMLab Semantic Segmentation Toolbox and Benchmark}, author={MMSegmentation Contributors}, howpublished = {\url{https://github.com/open-mmlab/mmsegmentation}}, year={2020} }

Owner

  • Login: santipais
  • Kind: user

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
  - name: "MMSegmentation Contributors"
title: "OpenMMLab Semantic Segmentation Toolbox and Benchmark"
date-released: 2020-07-10
url: "https://github.com/open-mmlab/mmsegmentation"
license: Apache-2.0

GitHub Events

Total
  • Member event: 1
  • Push event: 8
  • Create event: 2
Last Year
  • Member event: 1
  • Push event: 8
  • Create event: 2

Dependencies

.github/workflows/deploy.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
.circleci/docker/Dockerfile docker
  • pytorch/pytorch ${PYTORCH}-cuda${CUDA}-cudnn${CUDNN}-devel build
docker/Dockerfile docker
  • pytorch/pytorch ${PYTORCH}-cuda${CUDA}-cudnn${CUDNN}-devel build
docker/serve/Dockerfile docker
  • pytorch/pytorch ${PYTORCH}-cuda${CUDA}-cudnn${CUDNN}-devel build
requirements/albu.txt pypi
  • albumentations >=0.3.2
requirements/docs.txt pypi
  • docutils ==0.16.0
  • myst-parser *
  • sphinx ==4.0.2
  • sphinx_copybutton *
  • sphinx_markdown_tables *
  • urllib3 <2.0.0
requirements/mminstall.txt pypi
  • mmcv >=2.0.0rc4,<2.2.0
  • mmengine >=0.5.0,<1.0.0
requirements/multimodal.txt pypi
  • ftfy *
  • regex *
requirements/optional.txt pypi
  • cityscapesscripts *
  • diffusers *
  • einops ==0.3.0
  • imageio ==2.9.0
  • imageio-ffmpeg ==0.4.2
  • invisible-watermark *
  • kornia ==0.6
  • nibabel *
  • omegaconf ==2.1.1
  • pudb ==2019.2
  • pytorch-lightning ==1.4.2
  • streamlit >=0.73.1
  • test-tube >=0.7.5
  • timm *
  • torch-fidelity ==0.3.0
  • torchmetrics ==0.6.0
  • transformers ==4.19.2
requirements/readthedocs.txt pypi
  • mmcv >=2.0.0rc1,<2.1.0
  • mmengine >=0.4.0,<1.0.0
  • prettytable *
  • scipy *
  • torch *
  • torchvision *
requirements/runtime.txt pypi
  • matplotlib *
  • numpy *
  • packaging *
  • prettytable *
  • scipy *
requirements/tests.txt pypi
  • codecov * test
  • flake8 * test
  • ftfy * test
  • interrogate * test
  • pytest * test
  • regex * test
  • xdoctest >=0.10.0 test
  • yapf * test
requirements.txt pypi
setup.py pypi