Spaces:
Paused
Paused
Update README.md
Browse files
README.md
CHANGED
|
@@ -1,236 +0,0 @@
|
|
| 1 |
-
<h1>Clasificación del Uso Predial Usando Imágenes de GSV y Modelos de Lenguaje Visual</h1>
|
| 2 |
-
|
| 3 |
-
<p align="center">
|
| 4 |
-
<img src="https://img.shields.io/github/issues/chansoopark98/Tensorflow-Keras-Realtime-Segmentation">
|
| 5 |
-
<img src="https://img.shields.io/github/forks/chansoopark98/Tensorflow-Keras-Realtime-Segmentation">
|
| 6 |
-
<img src="https://img.shields.io/github/stars/chansoopark98/Tensorflow-Keras-Realtime-Segmentation">
|
| 7 |
-
<img src="https://img.shields.io/github/license/chansoopark98/Tensorflow-Keras-Realtime-Segmentation">
|
| 8 |
-
</p>
|
| 9 |
-
|
| 10 |
-
<br>
|
| 11 |
-
|
| 12 |
-
<p align="justify">
|
| 13 |
-
<img alt="Python" src ="https://img.shields.io/badge/Python-3.13-3776AB.svg?&style=for-the-badge&logo=Python&logoColor=white"/>
|
| 14 |
-
<img src ="https://img.shields.io/badge/Docker-0db7ed.svg?&style=for-the-badge&logo=Docker&logoColor=white"/>
|
| 15 |
-
<img src ="https://img.shields.io/badge/HUggingface-EB8F00.svg?&style=for-the-badge&logo=Huggingface&logoColor=white"/>
|
| 16 |
-
<img src ="https://img.shields.io/badge/JUpyter-5C3EE8.svg?&style=for-the-badge&logo=JUpyter&logoColor=white"/>
|
| 17 |
-
<img src ="https://img.shields.io/badge/Numpy-013243.svg?&style=for-the-badge&logo=Numpy&logoColor=white"/>
|
| 18 |
-
<br>
|
| 19 |
-
<br>
|
| 20 |
-
</p>
|
| 21 |
-
|
| 22 |
-
<p align="justify">
|
| 23 |
-
Este repositorio contiene un modelo de lenguaje visual que automatiza la clasificación del uso del suelo en Bogotá utilizando imágenes de Google Street View. El modelo utiliza una arquitectura de lenguaje visual avanzada (Kimi-VL) que no solo clasifica las imágenes en diferentes categorías de uso del suelo, sino que también proporciona un razonamiento detallado sobre su decisión.
|
| 24 |
-
</p>
|
| 25 |
-
|
| 26 |
-
# Contenido
|
| 27 |
-
|
| 28 |
-
1. Requerimientos
|
| 29 |
-
2. Instalacion
|
| 30 |
-
3. Uso
|
| 31 |
-
- 3.1. Entrenamiento del Modelo
|
| 32 |
-
- 3.2. Despliegue del Modelo
|
| 33 |
-
5. Dataset
|
| 34 |
-
6. Arquitectura del Modelo
|
| 35 |
-
7. Azure ML Deployment
|
| 36 |
-
8. Uso del API
|
| 37 |
-
|
| 38 |
-
## Estructura del Proyecto
|
| 39 |
-
|
| 40 |
-
```
|
| 41 |
-
├── data/ # solo visible en local por razones legales
|
| 42 |
-
│ └── minisample_v1/
|
| 43 |
-
│ ├── bodegas/
|
| 44 |
-
│ ├── comerciales1-5/
|
| 45 |
-
│ ├── dotacionales1/
|
| 46 |
-
│ ├── mixto1-3/
|
| 47 |
-
│ ├── otros/
|
| 48 |
-
│ └── residenciales/
|
| 49 |
-
├── src/
|
| 50 |
-
│ ├── data/ # Utilidades para carga de datos
|
| 51 |
-
│ ├── model/ # Código para entrenamiento del modelo
|
| 52 |
-
│ ├── deploy_to_azure.py # Script de despliegue en Azure ML
|
| 53 |
-
│ └── score.py # Script de inferencia del modelo
|
| 54 |
-
├── pyproject.toml # Dependencias del proyecto
|
| 55 |
-
└── README.md # Este archivo
|
| 56 |
-
|
| 57 |
-
```
|
| 58 |
-
|
| 59 |
-
## 1. Requirements
|
| 60 |
-
|
| 61 |
-
- Python >= 3.13
|
| 62 |
-
- Dependencias especificadas en pyproject.toml:
|
| 63 |
-
- PyTorch
|
| 64 |
-
- Transformers
|
| 65 |
-
- Azure ML SDK
|
| 66 |
-
- Otras librerías para procesamiento de datos
|
| 67 |
-
|
| 68 |
-
## 2. Instalación
|
| 69 |
-
|
| 70 |
-
1. Clona el repositorio:
|
| 71 |
-
```bash
|
| 72 |
-
git clone <repository-url>
|
| 73 |
-
cd bogota-land-use
|
| 74 |
-
```
|
| 75 |
-
|
| 76 |
-
2. Instala las dependencias usando uv:
|
| 77 |
-
```bash
|
| 78 |
-
uv venv
|
| 79 |
-
source .venv/bin/activate
|
| 80 |
-
uv pip install -e .
|
| 81 |
-
```
|
| 82 |
-
|
| 83 |
-
## 3. Uso
|
| 84 |
-
|
| 85 |
-
### 3.1 Evaluación del Modelo
|
| 86 |
-
|
| 87 |
-
Para evaluar imágenes usando el modelo:
|
| 88 |
-
|
| 89 |
-
```bash
|
| 90 |
-
python src/model/train.py --image_paths path/to/image1.jpg path/to/image2.jpg
|
| 91 |
-
```
|
| 92 |
-
|
| 93 |
-
El script realizará lo siguiente:
|
| 94 |
-
1. Cargar las imágenes especificadas
|
| 95 |
-
2. Utilizar el modelo Kimi-VL para analizar cada imagen
|
| 96 |
-
3. Proporcionar una clasificación detallada que incluye:
|
| 97 |
-
- Categoría asignada
|
| 98 |
-
- Nivel de confianza (Alto/Medio/Bajo)
|
| 99 |
-
- Razonamiento paso a paso
|
| 100 |
-
- Categorías alternativas relevantes
|
| 101 |
-
4. Guardar los resultados en formato JSON
|
| 102 |
-
|
| 103 |
-
### 3.2 Despliegue del Modelo
|
| 104 |
-
|
| 105 |
-
Para desplegar el modelo entrenado en Azure ML:
|
| 106 |
-
|
| 107 |
-
1. Configura las credenciales de Azure:
|
| 108 |
-
|
| 109 |
-
```bash
|
| 110 |
-
export AZURE_SUBSCRIPTION_ID="your-subscription-id"
|
| 111 |
-
export AZURE_RESOURCE_GROUP="your-resource-group"
|
| 112 |
-
export AZURE_ML_WORKSPACE="your-workspace-name"
|
| 113 |
-
```
|
| 114 |
-
|
| 115 |
-
2. Despliega el modelo:
|
| 116 |
-
```bash
|
| 117 |
-
python src/deploy_to_azure.py
|
| 118 |
-
```
|
| 119 |
-
|
| 120 |
-
## 4. Dataset y Categorías
|
| 121 |
-
|
| 122 |
-
El modelo clasifica las imágenes en 20 categorías detalladas:
|
| 123 |
-
|
| 124 |
-
1. **RESIDENCIALES**: Viviendas, casas, edificios PH's y condominios
|
| 125 |
-
2. **COMERCIALES 1**: Locales comerciales y establecimientos de compra-venta
|
| 126 |
-
3. **COMERCIALES 2**: Oficinas y servicios empresariales
|
| 127 |
-
4. **COMERCIALES 3**: Actividades artesanales y transformación local
|
| 128 |
-
5. **COMERCIALES 4**: Hoteles, moteles y restaurantes
|
| 129 |
-
6. **COMERCIALES 5**: Oficinas operativas y depósitos
|
| 130 |
-
7. **CENTROS COMERCIALES**: Complejos comerciales y malls
|
| 131 |
-
8. **BODEGAS**: Instalaciones de almacenamiento y uso industrial
|
| 132 |
-
9. **PARQUEADEROS**: Estacionamientos
|
| 133 |
-
10. **DOTACIONALES 1**: Servicios comunitarios
|
| 134 |
-
11. **DOTACIONALES 2**: Instituciones educativas
|
| 135 |
-
12. **DOTACIONALES 3**: Centros de salud y hospitales
|
| 136 |
-
13. **DOTACIONALES 4**: Edificios religiosos
|
| 137 |
-
14. **DOTACIONALES 5**: Instalaciones recreativas y culturales
|
| 138 |
-
15. **ESPECIALES**: Áreas militares, cementerios, aeropuertos
|
| 139 |
-
16. **MOLES**: Grandes edificaciones en construcción
|
| 140 |
-
17. **RURALES**: Estructuras rurales y agrícolas
|
| 141 |
-
18. **MIXTO 1**: Residencial con comercial tipo 1
|
| 142 |
-
19. **MIXTO 2**: Residencial con oficinas
|
| 143 |
-
20. **MIXTO 3**: Comercial con oficinas
|
| 144 |
-
|
| 145 |
-
Cada categoría está claramente definida con criterios específicos que el modelo utiliza para su análisis y clasificación.
|
| 146 |
-
|
| 147 |
-
## 5. Arquitectura del Modelo
|
| 148 |
-
|
| 149 |
-
El proyecto utiliza el modelo Kimi-VL (Visual Language) de Moonshot AI, una arquitectura avanzada de lenguaje visual que combina:
|
| 150 |
-
- Procesamiento de imágenes de alta calidad
|
| 151 |
-
- Comprensión del contexto visual detallada
|
| 152 |
-
- Capacidad de razonamiento paso a paso
|
| 153 |
-
- Generación de explicaciones en lenguaje natural
|
| 154 |
-
|
| 155 |
-
El modelo:
|
| 156 |
-
- Recibe imágenes a nivel de calle como entrada
|
| 157 |
-
- Analiza las características arquitectónicas y contextuales
|
| 158 |
-
- Proporciona una clasificación basada en razonamiento
|
| 159 |
-
- Incluye niveles de confianza y categorías alternativas
|
| 160 |
-
- Genera explicaciones detalladas de su decisión
|
| 161 |
-
|
| 162 |
-
## 6. Azure ML Deployment
|
| 163 |
-
|
| 164 |
-
El modelo se despliega como un endpoint online gestionado en Azure ML. El proceso de despliegue:
|
| 165 |
-
|
| 166 |
-
1. **Registro del Modelo**:
|
| 167 |
-
- El modelo Kimi-VL se registra en Azure ML workspace
|
| 168 |
-
- Se incluyen todos los archivos necesarios para inferencia
|
| 169 |
-
|
| 170 |
-
2. **Configuración del Endpoint**:
|
| 171 |
-
- Se crea un endpoint online con autenticación por clave
|
| 172 |
-
- Se configura el ambiente de ejecución con las dependencias necesarias
|
| 173 |
-
|
| 174 |
-
3. **Despliegue del Modelo**:
|
| 175 |
-
- Se utiliza una instancia Standard_DS3_v2 para el servicio
|
| 176 |
-
- El modelo procesa las imágenes en lotes para mayor eficiencia
|
| 177 |
-
- Incluye manejo automático de errores y logging
|
| 178 |
-
|
| 179 |
-
4. **Características del Servicio**:
|
| 180 |
-
- API REST para inferencia en tiempo real
|
| 181 |
-
- Procesamiento de imágenes en múltiples formatos
|
| 182 |
-
- Respuestas detalladas con razonamiento
|
| 183 |
-
- Escalado automático según la demanda
|
| 184 |
-
|
| 185 |
-
## 7. Uso del API
|
| 186 |
-
|
| 187 |
-
Una vez desplegado, puedes enviar peticiones HTTP POST al endpoint con imágenes:
|
| 188 |
-
|
| 189 |
-
```python
|
| 190 |
-
import requests
|
| 191 |
-
import base64
|
| 192 |
-
import json
|
| 193 |
-
|
| 194 |
-
def encode_image(image_path):
|
| 195 |
-
with open(image_path, "rb") as f:
|
| 196 |
-
return base64.b64encode(f.read()).decode()
|
| 197 |
-
|
| 198 |
-
# Prepare the request
|
| 199 |
-
image_data = encode_image("path/to/image.jpg")
|
| 200 |
-
data = {"image": image_data}
|
| 201 |
-
|
| 202 |
-
# Send request to endpoint
|
| 203 |
-
response = requests.post(
|
| 204 |
-
"YOUR_ENDPOINT_URL",
|
| 205 |
-
json=data,
|
| 206 |
-
headers={"Authorization": f"Bearer {api_key}"}
|
| 207 |
-
)
|
| 208 |
-
|
| 209 |
-
# Get prediction
|
| 210 |
-
result = response.json()
|
| 211 |
-
print(f"Categoría predicha: {result['classification']}")
|
| 212 |
-
print(f"Nivel de confianza: {result['confidence']}")
|
| 213 |
-
print("\nRazonamiento:")
|
| 214 |
-
for step, explanation in result['reasoning'].items():
|
| 215 |
-
print(f"{step}: {explanation}")
|
| 216 |
-
|
| 217 |
-
# Si hay categorías alternativas
|
| 218 |
-
if 'alternative_categories' in result:
|
| 219 |
-
print("\nCategorías alternativas relevantes:")
|
| 220 |
-
for category in result['alternative_categories']:
|
| 221 |
-
print(f"- {category}")
|
| 222 |
-
```
|
| 223 |
-
|
| 224 |
-
La respuesta incluye:
|
| 225 |
-
- La categoría asignada
|
| 226 |
-
- Nivel de confianza (Alto/Medio/Bajo)
|
| 227 |
-
- Razonamiento paso a paso
|
| 228 |
-
- Categorías alternativas relevantes
|
| 229 |
-
|
| 230 |
-
## Licencia
|
| 231 |
-
|
| 232 |
-
[Agrega aquí la información de tu licencia]
|
| 233 |
-
|
| 234 |
-
## Contribuidores
|
| 235 |
-
|
| 236 |
-
[Agrega aquí información sobre los contribuidores]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|