﻿{"id":16041,"date":"2025-12-03T10:00:00","date_gmt":"2025-12-03T09:00:00","guid":{"rendered":"https:\/\/www.sigterritoires.fr\/?p=16041"},"modified":"2025-11-28T21:47:00","modified_gmt":"2025-11-28T20:47:00","slug":"cuando-el-deep-learning-se-sumerge-bajo-la-superficie-cartografia-de-corales-con-qgis-y-pytorch","status":"publish","type":"post","link":"https:\/\/www.sigterritoires.fr\/index.php\/es\/cuando-el-deep-learning-se-sumerge-bajo-la-superficie-cartografia-de-corales-con-qgis-y-pytorch\/","title":{"rendered":"Cuando el Deep Learning se sumerge bajo la superficie: cartograf\u00eda de corales con QGIS y PyTorch"},"content":{"rendered":"\n<p>El aprendizaje profundo est\u00e1 revolucionando el an\u00e1lisis de im\u00e1genes satelitales.<\/p>\n\n\n\n<p>Durante mucho tiempo reservado a los grandes laboratorios o al software propietario, hoy en d\u00eda se abre al mundo libre gracias a PyTorch y QGIS.<\/p>\n\n\n\n<p>Este art\u00edculo explora los principios del aprendizaje profundo aplicado a la geom\u00e1tica, la comparaci\u00f3n entre los modelos de ESRI y los que se pueden utilizar en QGIS, y concluye con un caso concreto: la detecci\u00f3n autom\u00e1tica de zonas coralinas a partir de im\u00e1genes Sentinel-2.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-light-blue ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Contenu <\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/es\/cuando-el-deep-learning-se-sumerge-bajo-la-superficie-cartografia-de-corales-con-qgis-y-pytorch\/#Introduccion_al_aprendizaje_profundo_aplicado_a_la_geomatica\" >Introducci\u00f3n al aprendizaje profundo aplicado a la geom\u00e1tica<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/es\/cuando-el-deep-learning-se-sumerge-bajo-la-superficie-cartografia-de-corales-con-qgis-y-pytorch\/#%C2%BFPor_que_%C2%ABprofundo%C2%BB\" >\u00bfPor qu\u00e9 \u00abprofundo\u00bb?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/es\/cuando-el-deep-learning-se-sumerge-bajo-la-superficie-cartografia-de-corales-con-qgis-y-pytorch\/#Aprendizaje_profundo_y_teledeteccion\" >Aprendizaje profundo y teledetecci\u00f3n<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/es\/cuando-el-deep-learning-se-sumerge-bajo-la-superficie-cartografia-de-corales-con-qgis-y-pytorch\/#El_formato_DLPK_de_ESRI\" >El formato DLPK de ESRI<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/es\/cuando-el-deep-learning-se-sumerge-bajo-la-superficie-cartografia-de-corales-con-qgis-y-pytorch\/#La_contrapartida_de_codigo_abierto_PyTorch_y_QGIS\" >La contrapartida de c\u00f3digo abierto: PyTorch y QGIS<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/es\/cuando-el-deep-learning-se-sumerge-bajo-la-superficie-cartografia-de-corales-con-qgis-y-pytorch\/#En_resumen\" >En resumen<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/es\/cuando-el-deep-learning-se-sumerge-bajo-la-superficie-cartografia-de-corales-con-qgis-y-pytorch\/#Ejemplo_practico_segmentacion_de_corales_a_partir_de_imagenes_Sentinel-2_en_QGIS\" >Ejemplo pr\u00e1ctico: segmentaci\u00f3n de corales a partir de im\u00e1genes Sentinel-2 en QGIS<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/es\/cuando-el-deep-learning-se-sumerge-bajo-la-superficie-cartografia-de-corales-con-qgis-y-pytorch\/#Datos_utilizados\" >Datos utilizados<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/es\/cuando-el-deep-learning-se-sumerge-bajo-la-superficie-cartografia-de-corales-con-qgis-y-pytorch\/#Procesamiento_en_QGIS\" >Procesamiento en QGIS<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/es\/cuando-el-deep-learning-se-sumerge-bajo-la-superficie-cartografia-de-corales-con-qgis-y-pytorch\/#Modo_de_funcionamiento\" >Modo de funcionamiento<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/es\/cuando-el-deep-learning-se-sumerge-bajo-la-superficie-cartografia-de-corales-con-qgis-y-pytorch\/#Operaciones_previas\" >Operaciones previas<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/es\/cuando-el-deep-learning-se-sumerge-bajo-la-superficie-cartografia-de-corales-con-qgis-y-pytorch\/#Configuracion_del_script_de_procesamiento\" >Configuraci\u00f3n del script de procesamiento<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/es\/cuando-el-deep-learning-se-sumerge-bajo-la-superficie-cartografia-de-corales-con-qgis-y-pytorch\/#Uso\" >Uso<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/es\/cuando-el-deep-learning-se-sumerge-bajo-la-superficie-cartografia-de-corales-con-qgis-y-pytorch\/#Interpretacion_del_resultado\" >Interpretaci\u00f3n del resultado<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/es\/cuando-el-deep-learning-se-sumerge-bajo-la-superficie-cartografia-de-corales-con-qgis-y-pytorch\/#Ventajas_de_este_enfoque\" >Ventajas de este enfoque<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/es\/cuando-el-deep-learning-se-sumerge-bajo-la-superficie-cartografia-de-corales-con-qgis-y-pytorch\/#Hacia_un_ecosistema_de_modelos_abiertos\" >Hacia un ecosistema de modelos abiertos<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/es\/cuando-el-deep-learning-se-sumerge-bajo-la-superficie-cartografia-de-corales-con-qgis-y-pytorch\/#Conclusion\" >Conclusi\u00f3n<\/a><\/li><\/ul><\/nav><\/div>\n\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Introduccion_al_aprendizaje_profundo_aplicado_a_la_geomatica\"><\/span>Introducci\u00f3n al aprendizaje profundo aplicado a la geom\u00e1tica<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>El aprendizaje profundo (o deep learning) es una rama de la inteligencia artificial inspirada en el funcionamiento del cerebro humano. Se basa en redes de neuronas artificiales capaces de aprender a partir de ejemplos, sin que se les dicten expl\u00edcitamente todas las reglas.<\/p>\n\n\n\n<p>A diferencia de los m\u00e9todos de clasificaci\u00f3n tradicionales, en los que se eligen los indicadores y los umbrales, el aprendizaje profundo descubre autom\u00e1ticamente las estructuras y los patrones relevantes en los datos.<\/p>\n\n\n\n<p>En el campo de la geom\u00e1tica, este enfoque abre perspectivas impresionantes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>reconocimiento de zonas urbanas, agr\u00edcolas o forestales a partir de im\u00e1genes satelitales,<\/li>\n\n\n\n<li>detecci\u00f3n de cambios o cat\u00e1strofes naturales,<\/li>\n\n\n\n<li>identificaci\u00f3n de elementos espec\u00edficos (carreteras, tejados, corales, barcos, etc.),<\/li>\n\n\n\n<li>segmentaci\u00f3n detallada de paisajes a partir de im\u00e1genes Sentinel, PlanetScope o drones.<\/li>\n<\/ul>\n\n\n\n<p>El principio es sencillo: se entrena un modelo con un gran conjunto de im\u00e1genes anotadas hasta que aprende a reproducir la tarea deseada (por ejemplo, distinguir entre agua, vegetaci\u00f3n y arena). Una vez entrenado, el modelo se puede aplicar a nuevas zonas para generar autom\u00e1ticamente mapas tem\u00e1ticos de alta resoluci\u00f3n.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%C2%BFPor_que_%C2%ABprofundo%C2%BB\"><\/span>\u00bfPor qu\u00e9 \u00abprofundo\u00bb?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>El t\u00e9rmino \u00abprofundo\u00bb se debe a que estas redes tienen muchas capas sucesivas, a veces decenas.<\/p>\n\n\n\n<p>Cada capa aprende a reconocer patrones cada vez m\u00e1s complejos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>las primeras capas detectan bordes y texturas,<\/li>\n\n\n\n<li>las siguientes identifican formas o estructuras,<\/li>\n\n\n\n<li>y las \u00faltimas comprenden objetos completos o contextos.<\/li>\n<\/ul>\n\n\n\n<p>Es esta jerarqu\u00eda de representaciones la que da al aprendizaje profundo su poder, pero tambi\u00e9n su apetito por los datos y la potencia de c\u00e1lculo.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Aprendizaje_profundo_y_teledeteccion\"><\/span>Aprendizaje profundo y teledetecci\u00f3n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>En teledetecci\u00f3n, los modelos m\u00e1s utilizados son los de segmentaci\u00f3n de im\u00e1genes, capaces de asignar una clase a cada p\u00edxel.<\/p>\n\n\n\n<p>Arquitecturas como U-Net, DeepLab o Mask R-CNN se han convertido en referencias para la cartograf\u00eda autom\u00e1tica a partir de im\u00e1genes multiespectrales.<\/p>\n\n\n\n<p>Estos modelos suelen entrenarse con marcos como PyTorch o TensorFlow y luego se implementan en entornos SIG.<\/p>\n\n\n\n<p>Los dos grandes mundos se han interesado por ellos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>ESRI<\/strong>, con su formato de modelo .dlpk (Deep Learning Package) integrado en ArcGIS Pro y ArcGIS Online;<\/li>\n\n\n\n<li><strong>QGIS<\/strong>, que permite utilizar modelos PyTorch o TensorFlow a trav\u00e9s de Processing Toolbox o scripts Python personalizados.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"El_formato_DLPK_de_ESRI\"><\/span>El formato DLPK de ESRI<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>ESRI fue uno de los primeros actores SIG en integrar el Deep Learning directamente en su ecosistema ArcGIS.<\/p>\n\n\n\n<p>Para facilitar el intercambio y la implementaci\u00f3n de modelos, la empresa ha creado un formato est\u00e1ndar: el DLPK (Deep Learning Package).<\/p>\n\n\n\n<p>Un archivo .dlpk no es solo un modelo: es un conjunto completo y port\u00e1til que re\u00fane todos los elementos necesarios para su ejecuci\u00f3n.<\/p>\n\n\n\n<p>Por lo general, contiene:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>El modelo entrenado (a menudo en formato PyTorch .pth o TensorFlow .h5)<\/li>\n\n\n\n<li>Un archivo de definici\u00f3n JSON que describe la arquitectura del modelo, los par\u00e1metros esperados y los nombres de las clases.<\/li>\n\n\n\n<li>Metadatos: tipo de entrada (raster, mosaico, imagen), tama\u00f1o de los parches, n\u00famero de bandas, normalizaci\u00f3n, etc.<\/li>\n\n\n\n<li>Muestras de entrenamiento (opcionales) para documentar o volver a entrenar el modelo.<\/li>\n<\/ul>\n\n\n\n<p>Gracias a esta organizaci\u00f3n, ArcGIS Pro o ArcGIS Online pueden interpretar autom\u00e1ticamente el modelo, sin necesidad de escribir c\u00f3digo.<\/p>\n\n\n\n<p>Herramientas como \u00abClassify Pixels Using Deep Learning\u00bb o \u00abDetect Objects Using Deep Learning\u00bb leen directamente el .dlpk, cargan el modelo y realizan la inferencia en una raster o un conjunto de im\u00e1genes.<\/p>\n\n\n\n<p>Este enfoque \u00abllave en mano\u00bb presenta dos ventajas principales:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Interoperabilidad: cualquier usuario de ArcGIS puede utilizar un modelo creado en otro lugar, sin dependencias complejas.<\/li>\n\n\n\n<li>Replicabilidad: los metadatos garantizan que el modelo se aplique en las mismas condiciones que durante su entrenamiento.<\/li>\n<\/ol>\n\n\n\n<p>La otra cara de la moneda, por supuesto, es el formato cerrado: el .dlpk sigue vinculado al ecosistema ArcGIS y no siempre es f\u00e1cil de utilizar en otros entornos.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"La_contrapartida_de_codigo_abierto_PyTorch_y_QGIS\"><\/span>La contrapartida de c\u00f3digo abierto: PyTorch y QGIS<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>En el \u00e1mbito del software libre, QGIS no impone ning\u00fan formato propietario.<\/p>\n\n\n\n<p>Los modelos simplemente se guardan en su formato nativo (a menudo .pth para PyTorch o .pt) y se ejecutan mediante scripts Python integrados en Processing Toolbox.<\/p>\n\n\n\n<p>La idea es la misma que en ESRI:<\/p>\n\n\n\n<p>se carga una imagen multiespectral, se aplica un modelo entrenado y se genera un mapa de clases o de probabilidad.<\/p>\n\n\n\n<p>Pero en lugar de basarse en un formato empaquetado como .dlpk, QGIS deja total libertad al desarrollador:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>El modelo se lee con torch.load().<\/li>\n\n\n\n<li>Las bandas de entrada se pueden seleccionar din\u00e1micamente (por ejemplo, B4-B3-B2 para RGB, o B8-B4-B3 en falso color).<\/li>\n\n\n\n<li>El script Python controla todo el flujo de procesamiento: normalizaci\u00f3n, enmascaramiento del agua (NDWI), divisi\u00f3n en bloques, fusi\u00f3n de resultados, etc.<\/li>\n<\/ul>\n\n\n\n<p>Este enfoque permite una flexibilidad m\u00e1xima, especialmente \u00fatil para la investigaci\u00f3n o la experimentaci\u00f3n.<\/p>\n\n\n\n<p>Por ejemplo, un modelo U-Net entrenado en PyTorch se puede aplicar directamente en QGIS mediante un script personalizado, sin depender de ArcGIS Pro.<\/p>\n\n\n\n<p>QGIS se convierte as\u00ed en un aut\u00e9ntico laboratorio de an\u00e1lisis espacial con IA, donde el usuario puede:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>probar varios modelos (.pth) creados por la comunidad,<\/li>\n\n\n\n<li>adaptar los pretratamientos seg\u00fan la zona (franja costera, bosque, urbano&#8230;),<\/li>\n\n\n\n<li>automatizar todo un flujo mediante algoritmos de procesamiento,<\/li>\n\n\n\n<li>y combinar los resultados con otras capas SIG (vegetaci\u00f3n, batimetr\u00eda, ocupaci\u00f3n del suelo&#8230;).<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"En_resumen\"><\/span>En resumen<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Aspecto<\/th><th>ESRI (DLPK)<\/th><th>QGIS (PyTorch)<\/th><\/tr><\/thead><tbody><tr><td><strong>Format<\/strong>o<\/td><td><code>.dlpk<\/code> (paquete completo)<\/td><td><code>.pth<\/code> o <code>.pt<\/code> (solo modelo)<\/td><\/tr><tr><td><strong>Interoperabilidad<\/strong><\/td><td>Simple, pero propietaria<\/td><td>Libre y modificable<\/td><\/tr><tr><td><strong>Uso<\/strong><\/td><td>Herramientas integradas ArcGIS (\u00abClassify Pixels\u00bb, \u00abDetect Objects\u00bb)<\/td><td>Scripts Processing Python personalizados<\/td><\/tr><tr><td><strong>Personalizaci\u00f3n<\/strong><\/td><td>Limitada<\/td><td>Total<\/td><\/tr><tr><td><strong>Curva de aprendizaje<\/strong><\/td><td>M\u00e1s sencilla para el usuario final<\/td><td>M\u00e1s flexible para el desarrollador o investigadorou chercheur<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Ejemplo_practico_segmentacion_de_corales_a_partir_de_imagenes_Sentinel-2_en_QGIS\"><\/span>Ejemplo pr\u00e1ctico: segmentaci\u00f3n de corales a partir de im\u00e1genes Sentinel-2 en QGIS<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Despu\u00e9s de explorar la l\u00f3gica de los modelos profundos y los formatos utilizados por ESRI y QGIS, pasemos a un ejemplo concreto: el an\u00e1lisis de zonas coralinas a partir de im\u00e1genes satelitales Sentinel-2.<br>El objetivo es distinguir las zonas marinas (fondos arenosos, praderas marinas, corales) de las zonas terrestres o turbias, gracias a un modelo U-Net preentrenado en PyTorch.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Datos_utilizados\"><\/span>Datos utilizados<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>La imagen de entrada procede de Sentinel-2, misi\u00f3n del programa europeo Copernicus.<br>Estas im\u00e1genes multiespectrales gratuitas ofrecen una resoluci\u00f3n de 10 a 20 m y cubren varias bandas en el espectro visible e infrarrojo:<\/p>\n\n\n\n<p>BandaNombreLongitud de onda (nm)Uso principalB2Azul490Agua, turbidezB3Verde560Vegetaci\u00f3n, medio marinoB4Rojo665Suelo, vegetaci\u00f3n, coralesB8NIR842Diferenciaci\u00f3n tierra\/aguaB11SWIR11610Humedad, arena, nubes<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Band<\/th><th>Nombre<\/th><th>Longitud de onda (nm)<\/th><th>Uso principal<\/th><\/tr><\/thead><tbody><tr><td>B2<\/td><td>Azul<\/td><td>490<\/td><td>Agua, turbidez<\/td><\/tr><tr><td>B3<\/td><td>Verde<\/td><td>560<\/td><td>Vegetaci\u00f3n, medio marino<\/td><\/tr><tr><td>B4<\/td><td>Rojo<\/td><td>665<\/td><td>Suelo, vegetaci\u00f3n, corales<\/td><\/tr><tr><td>B8<\/td><td>NIR<\/td><td>842<\/td><td>Diferenciaci\u00f3n tierra\/agua<\/td><\/tr><tr><td>B11<\/td><td>SWIR1<\/td><td>1610<\/td><td>Humedad, arena, nubes<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>La trama proviene del procesamiento S2DR3 (Super-resolution Sentinel-2 a 1 m), que permite mejorar la resoluci\u00f3n de todas las bandas de las im\u00e1genes Sentinel 2 hasta alcanzar aproximadamente 1 m (v\u00e9ase \u00abUtilizar S2DR3 en Google Colab para el estudio de los corales en Mauricio\u00bb). La imagen utilizada es la que se emple\u00f3 como ejemplo en el art\u00edculo citado.<br>El usuario solo tiene que cargar el archivo .tif multiespectral, por ejemplo:<br>Palmar_MS.tif.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Procesamiento_en_QGIS\"><\/span>Procesamiento en QGIS<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>El an\u00e1lisis se realiza mediante un algoritmo Python integrado en la caja de herramientas Processing.<\/p>\n\n\n\n<p>Este script carga un modelo PyTorch (unet_coraux.pth) y aplica la segmentaci\u00f3n a la imagen en varios pasos:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Lectura de la trama y normalizaci\u00f3n de las bandas.<br>Los valores se reducen a una escala compatible con el entrenamiento del modelo.<\/li>\n\n\n\n<li>Enmascaramiento opcional de las zonas terrestres<br>Se calcula un \u00edndice NDWI (Normalized Difference Water Index) para aislar el mar.<br>Los p\u00edxeles con un valor NDWI alto se consideran marinos y son procesados por el modelo; los dem\u00e1s se enmascaran.<\/li>\n\n\n\n<li>Divisi\u00f3n en bloques (parches)<br>La imagen se procesa por partes para evitar la sobrecarga de memoria.<br>Cada bloque se analiza de forma independiente y, a continuaci\u00f3n, se fusionan los resultados.<\/li>\n\n\n\n<li>Aplicaci\u00f3n del modelo U-Net<br>El modelo realiza una segmentaci\u00f3n p\u00edxel a p\u00edxel: asigna a cada p\u00edxel una probabilidad de pertenecer a la clase \u00abcoral\u00bb o \u00abno coral\u00bb.<br>El resultado es una trama de salida que contiene los valores de probabilidad o de clase.<\/li>\n\n\n\n<li>Guardar la trama de salida<br>El resultado se guarda en formato GeoTIFF (palmar_model_9.tif), listo para superponerse con otras capas SIG.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Modo_de_funcionamiento\"><\/span>Modo de funcionamiento<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Operaciones_previas\"><\/span>Operaciones previas<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>Vamos a crear un script de procesamiento QGis. Como requisito previo, es necesario instalar<\/p>\n\n\n\n<div class='stb-container stb-style-black stb-caption-box'><div class='stb-caption'><div class='stb-logo'><img class='stb-logo__image' src='data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN\/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz\/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH\/w\/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA\/g88wAAKCRFRHgg\/P9eM4Ors7ONo62Dl8t6r8G\/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt\/qIl7gRoXgugdfeLZrIPQLUAoOnaV\/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl\/AV\/1s+X48\/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H\/LcL\/\/wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93\/+8\/\/UegJQCAZkmScQAAXkQkLlTKsz\/HCAAARKCBKrBBG\/TBGCzABhzBBdzBC\/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD\/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q\/pH5Z\/YkGWcNMw09DpFGgsV\/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY\/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4\/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L\/1U\/W36p\/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N\/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26\/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE\/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV\/MN8C3yLfLT8Nvnl+F30N\/I\/9k\/3r\/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt\/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi\/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a\/zYnKOZarnivN7cyzytuQN5zvn\/\/tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO\/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3\/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA\/0HIw6217nU1R3SPVRSj9Yr60cOxx++\/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3\/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX\/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8\/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb\/1tWeOT3dvfN6b\/fF9\/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR\/cGhYPP\/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF\/6i\/suuFxYvfvjV69fO0ZjRoZfyl5O\/bXyl\/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o\/2j5sfVT0Kf7kxmTk\/8EA5jz\/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5\/wAAgOkAAHUwAADqYAAAOpgAABdvkl\/FRgAAD59JREFUeNrsmnmMXVd9xz9nucvbZvF4GdtjO46dhcRZSGmCSIAExaUFQtoiUVSgFFQBFaISRaBSoH9QVaUUAU2VSrSVoGELSgRpGshCA8GQYGfBcVZsx47j2dc3M2\/ee3c55\/z6xxubpOSPCSX8QXOkq3ve1ZXO+dzfcr7nd54SEX4TmuY3pL0E8hLIi9Ts8z08Ojr3nN9iAgklzdl54iRBCBROcXx8kTgynBxvcuN3D\/Lk0TFtrNmiQrHnA++48qz3vu2KM0VYd\/jYhPrAJ77cHptenqrV0hNac9gH\/Wi73W5bLbz7rZdx9Wv2MDk+RV4UVBoNQhkofUHaV0fCcxPSu669dm0gL8ikWmGtGWy3O+dqFa48d9vQqx99\/MQF01NLGwb6BxJr4fYfPs7iYhcdPCHrLjsJY319tf22kd7T7XR+EkROAO5XbpG1tCBCCNKfZcXe8cmFd1SMvOmc7ZvM7p0jHBltc9UVF9PJFV\/6+r185ZYHGN52Jko8zeZS39z84nl7zt1x3puvPv89N912YEwr\/Q3vw80hhPt\/rSAhBKpJcvnWTYMfuuk7D72FIFz3qXdzbLTJR\/\/pLuKBjdz+4CS3PTDOTXc+QiWJ2LqxD18UlBFs3taHTgZptiPqfUMj3Ux9RIL+k1q9fn2z2fxXYPrFBxHB2uj9Q+v6\/nrThnjbKy85h0svOoPtm4dYLhUbRraw2HV85+FJlFZsP+cMNNDOcogNpi\/ionPWc8bGKnf++Dg7tqznlZeMMDDQtymtJJ8S1Ou8hL8KhAMvGohI0Cay\/1BvND6YJpWkXqtxzesu4Mb\/Psz9Nx1i64YGjeF1dLolmyINSqGCICFgfRUpPT4rObrgIPZ86M9ex3lnrCNNYWx6AQ3U+\/quHB2b+lpfLf3L0he3\/upBRFSSVv+5Uq38eb1SUY16leVOyT9+8yHufGQSSSyPtT1FJaVSq6KNQikFBIIP4DziPFFW0ml1mex45tqeTUMNjo3P8eRTTepVTSWJue\/A47sG+tMvXnjBrkQrfVPQYXUS6v8ColBKqXaWfyatpO+vVaqqUU1ZWMr47Lce4ZsPjlMdqFFppGSRIUpiImvQSvXGDYHECN55sszh05xKYnnv3nO45pLtPDOzxF987kfY4HnDq7bS6XaoN\/pR2g0rrT7\/zDMnl7NW985IB2A1DV9zzdpAQvDPwcha7fdFJnywWkl1f73Ccjfw8Rse5LYnptk0Moitppg0xiYRylq0VSilQQkEQYtQ1SK6k6si15SR5Ws\/HaUQGK4Y9l6+i6KbMT7f4a59T7E8d5wdm2NqtXRrrW4\/7Z0fVbgnRIUXZhHXnkQpCEFotctLa7X6RwcHBpO+WoX5VsGnbz7E3cfn2bx9iKiWYqopNo3RscVEEUor0KrnCOIpCw8aUqMRoxBtGG91mG3nvPW3d\/F7l2ymcCUHD0+ysNjmwANzHD4+yuzcAm97y+UXp\/XKJ4vW8p9ao3PU87uXej4Zf\/2X\/xMfAo1aXL3wZVu+UvroD\/c\/OsMr9uzglgcmuOngBBu3rcM2qkTV9LRFTGyJkghR+ufjBY+4gCtLQlmiypKaBM4aiPnkVbuppxGtlQ7dLMP7AudKHnjsaZqLy0xOT9NaaeGkIJLyXaEovhIQ+eyn\/nZtFvnYF+6m0y15+XnDr7\/u42988w23Psm\/33aYN77+YprKsmFzP1E1wVZibDUmqsSYNMEkEcYa0KBYDXYREecxRqtgFDnIpprh46\/doeqJoSwd1hisMRQltHPHzpF1bFhXYXhTnbt\/dJCJySZbhvs+stBc\/J4ry8k1i8ZaAoMN07hw99B7Dj05a2\/dd4zLf+tMrnrFDtZvqJNbgyQRNo2wadyLjzTCxhZtNFpptFYorUgiEyppJDqJeq4XW3X59n7VV4lwLpxORkortNYoFHnh6WYlWV5y7lkjWGOYXWjtiZJ0b5Skas0g3SzDqnD+xsHK74gyXHnpLqr9NbpeuOjMIX53zzCNaoSJLcZaTGTQ0erkFav3Xox4Ee0VykYaYy1RZHnZUK2X0f+XvysUIoJWGqM1BEjThN1nbqHV6pI5eZcytrpmkLN3btJFKVdNzXbivVfs5FWXbOPEbIcb95\/kwdFFFgpPmkRoazBWY6zBaIM+DcFqvzc7AaV1710HHJzrnF4V1LNgRAmIoFTvudYaVwaGhvqIraGbla\/RqB1rBumrJVsaib3yth88zZdufozLzh\/mrB2DLBWek8sZj8ys0CwDohRaK7QCo1atoBT6WXetFEYrdG+hR2mIrH7u4hYEEQheCNLrA6c\/iHeBXbtHWGq27A\/2PX75mtNvu1NcGLzsUTriq7cfYaG0GKu5+oJh\/uCKM5npeh5e6HKsK3R9oL66UD37657qqtVr9Q1io7nr5DIXDibh5Rsb2jlHQABBIygBQRCRU8sfPgTi2DI42GCpefjlawYps3y3c7I+rcY4rzg23uKP33Qer71ohJ3Dg73PGjzfG13mxqdXmCgDKgrE2vyCiNCnbO4EJQGNsJCV\/NfTTT1Sj9lQjdCiyfPAUidHGcEahQ+ChJ6FAPK8ZHjLRrZsXb99zSBTUwu7RKWxUoZaJeaho002PzzNta88g6IoUNqitWLvjn4u3lDjtrE2t8\/kOK9IIv2s4F31\/RAQ7xDvIQRSA\/vGFhmbX+GanQPUDDxxdJYfHjjBxTtqXLSzThIHfPCE4PG+FzvOOdrtzvo1g+RlWG8ji9IGUFRjQyO1dPKCOOoFLWhCEDZUI959dj\/dsMQtE13iJKJiNbHpZa3gheAd4jwSAoSeZkq14sh8m78fXUA6npUTc7Snltj\/03HeuXcrey9dj\/ehdwVPEMG7QNbN62sXjX5Fi7WI9OODkEQRl501QGyEbl4SiyKJY4zWeBdQGi5dFyMIjy2VLDrPYiYkBhIFwQckeCQ4vHeIc0jpSEQwSpN1utjS01+JaHtP4XvS3zmP8wHnHKherAQRvWaQUE5nSpZwJicrhxiuj7BlncV5hy\/l55kpijBGEzycP5Bw0VDKTNezWHoems+5Z7pDy3m0BMR7gu+5SnC9S7xAIYTlHApP8AGDZ\/+hCc7bZkjiQFmWlM5hjGFqYoaVpaV87SAhn1AevFtBqZj52SmeODbFzpF+NEJe9NKnCMRRhDWKVPf01daaZSuWc\/tTtieKv9s\/BsGjvcc7TyhKQubwWYlkjmxukWx2npAVhDLD5V2enmlx4GHHay\/bTlGWpy1SZCW+LBfXDCKBY6KlLd7V4jSQ5wXfvOMJ9py1iR3DgxRFcWrHSJBAbC3amOesH8ZoWq2M5swSqRKU94TCIXlJyD1SONxKl2xmFp93CWWJ+Jzgc5R3tDs5RVGSFwVBAqDIiwJt7PQLsEj5Mx30uEh5dnAFlUrg6IkZjpyYY9vGBi4EUD054UXwIWC1xhiDUQprNHcdnubz9xxDZyUKIZSBUPYAxHlCt6RoNnF5hlVQrVraKzlOhCjSbByq0O50KZ0DFGXpmJqaR+DwmkGMsY8GCQeCL84WlyG+ACLuO3iSi8\/ZSH+9QhaEEHoZxTuPtbonU7QmNoZ7j0wxNr7IhmqM855QBsR5KAOhdD2I9gpKAt47Mi8ECXgX2DbcYOf2AZbaHXwIaK1YWlrBRhak+Mnas1ZwLRG5W7x7p\/cZynVIk4Tv7z+OF817rr2ATevr5CEQQoTXntJprLGksSEoj1vJ0Z0cJwFxq\/v2AFJ6yuVFytZyb30JHgm+l81Cz1V3bu1DESjyAq2htZLxzMlpnA8zutL3yJq1lpICI+V9oWjPBl8QXAcJXbTk3PHjo9xx33FEHN08J8tzsrwgywoIJZ0s4+v7jrPv0AQV73HtHN8tkMwTugVFc4FyebGXxcSDBE6JK1GgDDRXurS7GS54tNaMjs8xt7DM0nLrWyLMrtkiShlQ8gzivhpc8aFQZnizglWW1Gh++vg4b7hiB2kS4XwgspZqGrHv0Czff3iGnxxZIAhUYk0vnAx4T7GySJmt9MYIAUVACIgKBNWzjIhneaVLN8vxzrO80ub4yRlOjk64bH7sG6EsyzWDaG0BCh\/CjS5vv01ruzmYDkFbEMXs3ALziysMDVTRyuFtRBwJ37nvGX5wcIb+WkwUWUoXUNogoUPZXiSU2bMEbwB6VhHxq0AeE2nQUDqH4JlvtphdyOm285vLlYUD4oq1Fx867cXVNOwfUjb9N2OTv1FaoTCIh9YSjE7O0VfbjHMFA32KsekuE9OLVG1Ai8M7UFrjshY+W0a862lyAcEhEnpVllV5rNCgVneYRoN4jo8ucf+jC3TbxYRV4QtOmxyl1w4S\/CnrKe87zeuVhFcrM3yViEYHYcWXHH5qgl3bhxARxmcLbrrrGCdGF4jihOAEKPHFCr7soJRCUIgLQOjt6bXuSWP9XKGPBLSJuPfRJU6Md2h1Db7sfM5Lfn+0buR0PK0ta52i7m3VZspO8xMmqvyHTWW3IIgrmZiepZN1cWXg8afmeezIBL4EqwNlURKKDiIepQ1B9SaI0ihrfg5gev1ToAjg4ampgMs1hDq+eeSGfPnp6021f3XHpdYOctoPFUhwEMJ9WWvqw6nwRVthOOA59MgRXnHRDvobdb59x0Hml0rq9Qr5coEEhzYWpTTBF70al7Eos1p91Aqs6YEoiyjTS6C+Fx\/agLWK7twTd2ULRz+m4yh71uzWDlK2pn6hbCriblW9Ea8zSWNkbnqW7975AG\/5\/SvYOGiYHB8j8xHKxChtkeAQQFmDMRGo0JvsqiVEW5SOQEUoFSGsQolBjCZfPnJX0TrxXqWjCQi\/ZBH7eQJKKYvP298ubXM5iPucjuoXPv7okwytS+iraiLpIC5FCChvwGiiJAGjCMGhTG\/VRxvQFqViRKUok4CJCSZC4hrBefLxR25wnZMfVTpe8znJCzsfURqUvtt1l\/5Il9knlK28\/d59D9I\/2I9WAe8ygit6ApIERW9j5kShYbUebIEYpSpgKoS0BtUGqjGAa05N5RMHPlPOP\/0v2jTyF\/WgR6EQpX7m85X3aV\/ekRXZh\/MsvzipVNHWYuIY5xxaCWXZqx+b2BKCweURVmKgjsR9qL4BosF1BAvFxGPfkPbKdeXcU\/uVTn9dZ4gKlGoH774quHs2rq9fneWdtxeFeU21Fsfbt2yg3S2YWchRcYwyhjS2NBqWjq+QNCxxwyN6diZ65vu3LPbt\/np7Zemg8WpZ2WQtIfErPtXtlezHrOHL2vCt9uzkSL0irxqsb7pkpdU5o56Y9VhbGxoweudIcJFeWGqtzEy6vH20ODl\/f27qDymTzKqklWFiCL\/8wa566U81L4G8BPL\/A+R\/BgAzCInEE2+\/LgAAAABJRU5ErkJggg==' alt='img'\/><\/div><div class='stb-caption-content'>OsGeo4W shell<\/div><div class='stb-tool'><\/div><\/div><div class='stb-content'><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>python -m pip install torchgeo\npython -m pip install torch torchvision\npython -m pip install segmentation-models-pytorch\n<\/code><\/pre>\n\n\n\n<p><\/div><\/div>\n\n\n\n<p>A continuaci\u00f3n, debemos descargar el modelo deseado. Para ello, en la consola Python de QGIS, introduzca el siguiente script:<\/p>\n\n\n\n<div class='stb-container stb-style-black stb-caption-box'><div class='stb-caption'><div class='stb-logo'><img class='stb-logo__image' src='data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN\/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz\/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH\/w\/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA\/g88wAAKCRFRHgg\/P9eM4Ors7ONo62Dl8t6r8G\/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt\/qIl7gRoXgugdfeLZrIPQLUAoOnaV\/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl\/AV\/1s+X48\/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H\/LcL\/\/wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93\/+8\/\/UegJQCAZkmScQAAXkQkLlTKsz\/HCAAARKCBKrBBG\/TBGCzABhzBBdzBC\/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD\/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q\/pH5Z\/YkGWcNMw09DpFGgsV\/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY\/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4\/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L\/1U\/W36p\/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N\/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26\/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE\/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV\/MN8C3yLfLT8Nvnl+F30N\/I\/9k\/3r\/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt\/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi\/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a\/zYnKOZarnivN7cyzytuQN5zvn\/\/tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO\/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3\/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA\/0HIw6217nU1R3SPVRSj9Yr60cOxx++\/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3\/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX\/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8\/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb\/1tWeOT3dvfN6b\/fF9\/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR\/cGhYPP\/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF\/6i\/suuFxYvfvjV69fO0ZjRoZfyl5O\/bXyl\/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o\/2j5sfVT0Kf7kxmTk\/8EA5jz\/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5\/wAAgOkAAHUwAADqYAAAOpgAABdvkl\/FRgAAD59JREFUeNrsmnmMXVd9xz9nucvbZvF4GdtjO46dhcRZSGmCSIAExaUFQtoiUVSgFFQBFaISRaBSoH9QVaUUAU2VSrSVoGELSgRpGshCA8GQYGfBcVZsx47j2dc3M2\/ee3c55\/z6xxubpOSPCSX8QXOkq3ve1ZXO+dzfcr7nd54SEX4TmuY3pL0E8hLIi9Ts8z08Ojr3nN9iAgklzdl54iRBCBROcXx8kTgynBxvcuN3D\/Lk0TFtrNmiQrHnA++48qz3vu2KM0VYd\/jYhPrAJ77cHptenqrV0hNac9gH\/Wi73W5bLbz7rZdx9Wv2MDk+RV4UVBoNQhkofUHaV0fCcxPSu669dm0gL8ikWmGtGWy3O+dqFa48d9vQqx99\/MQF01NLGwb6BxJr4fYfPs7iYhcdPCHrLjsJY319tf22kd7T7XR+EkROAO5XbpG1tCBCCNKfZcXe8cmFd1SMvOmc7ZvM7p0jHBltc9UVF9PJFV\/6+r185ZYHGN52Jko8zeZS39z84nl7zt1x3puvPv89N912YEwr\/Q3vw80hhPt\/rSAhBKpJcvnWTYMfuuk7D72FIFz3qXdzbLTJR\/\/pLuKBjdz+4CS3PTDOTXc+QiWJ2LqxD18UlBFs3taHTgZptiPqfUMj3Ux9RIL+k1q9fn2z2fxXYPrFBxHB2uj9Q+v6\/nrThnjbKy85h0svOoPtm4dYLhUbRraw2HV85+FJlFZsP+cMNNDOcogNpi\/ionPWc8bGKnf++Dg7tqznlZeMMDDQtymtJJ8S1Ou8hL8KhAMvGohI0Cay\/1BvND6YJpWkXqtxzesu4Mb\/Psz9Nx1i64YGjeF1dLolmyINSqGCICFgfRUpPT4rObrgIPZ86M9ex3lnrCNNYWx6AQ3U+\/quHB2b+lpfLf3L0he3\/upBRFSSVv+5Uq38eb1SUY16leVOyT9+8yHufGQSSSyPtT1FJaVSq6KNQikFBIIP4DziPFFW0ml1mex45tqeTUMNjo3P8eRTTepVTSWJue\/A47sG+tMvXnjBrkQrfVPQYXUS6v8ColBKqXaWfyatpO+vVaqqUU1ZWMr47Lce4ZsPjlMdqFFppGSRIUpiImvQSvXGDYHECN55sszh05xKYnnv3nO45pLtPDOzxF987kfY4HnDq7bS6XaoN\/pR2g0rrT7\/zDMnl7NW985IB2A1DV9zzdpAQvDPwcha7fdFJnywWkl1f73Ccjfw8Rse5LYnptk0Moitppg0xiYRylq0VSilQQkEQYtQ1SK6k6si15SR5Ws\/HaUQGK4Y9l6+i6KbMT7f4a59T7E8d5wdm2NqtXRrrW4\/7Z0fVbgnRIUXZhHXnkQpCEFotctLa7X6RwcHBpO+WoX5VsGnbz7E3cfn2bx9iKiWYqopNo3RscVEEUor0KrnCOIpCw8aUqMRoxBtGG91mG3nvPW3d\/F7l2ymcCUHD0+ysNjmwANzHD4+yuzcAm97y+UXp\/XKJ4vW8p9ao3PU87uXej4Zf\/2X\/xMfAo1aXL3wZVu+UvroD\/c\/OsMr9uzglgcmuOngBBu3rcM2qkTV9LRFTGyJkghR+ufjBY+4gCtLQlmiypKaBM4aiPnkVbuppxGtlQ7dLMP7AudKHnjsaZqLy0xOT9NaaeGkIJLyXaEovhIQ+eyn\/nZtFvnYF+6m0y15+XnDr7\/u42988w23Psm\/33aYN77+YprKsmFzP1E1wVZibDUmqsSYNMEkEcYa0KBYDXYREecxRqtgFDnIpprh46\/doeqJoSwd1hisMRQltHPHzpF1bFhXYXhTnbt\/dJCJySZbhvs+stBc\/J4ry8k1i8ZaAoMN07hw99B7Dj05a2\/dd4zLf+tMrnrFDtZvqJNbgyQRNo2wadyLjzTCxhZtNFpptFYorUgiEyppJDqJeq4XW3X59n7VV4lwLpxORkortNYoFHnh6WYlWV5y7lkjWGOYXWjtiZJ0b5Skas0g3SzDqnD+xsHK74gyXHnpLqr9NbpeuOjMIX53zzCNaoSJLcZaTGTQ0erkFav3Xox4Ee0VykYaYy1RZHnZUK2X0f+XvysUIoJWGqM1BEjThN1nbqHV6pI5eZcytrpmkLN3btJFKVdNzXbivVfs5FWXbOPEbIcb95\/kwdFFFgpPmkRoazBWY6zBaIM+DcFqvzc7AaV1710HHJzrnF4V1LNgRAmIoFTvudYaVwaGhvqIraGbla\/RqB1rBumrJVsaib3yth88zZdufozLzh\/mrB2DLBWek8sZj8ys0CwDohRaK7QCo1atoBT6WXetFEYrdG+hR2mIrH7u4hYEEQheCNLrA6c\/iHeBXbtHWGq27A\/2PX75mtNvu1NcGLzsUTriq7cfYaG0GKu5+oJh\/uCKM5npeh5e6HKsK3R9oL66UD37657qqtVr9Q1io7nr5DIXDibh5Rsb2jlHQABBIygBQRCRU8sfPgTi2DI42GCpefjlawYps3y3c7I+rcY4rzg23uKP33Qer71ohJ3Dg73PGjzfG13mxqdXmCgDKgrE2vyCiNCnbO4EJQGNsJCV\/NfTTT1Sj9lQjdCiyfPAUidHGcEahQ+ChJ6FAPK8ZHjLRrZsXb99zSBTUwu7RKWxUoZaJeaho002PzzNta88g6IoUNqitWLvjn4u3lDjtrE2t8\/kOK9IIv2s4F31\/RAQ7xDvIQRSA\/vGFhmbX+GanQPUDDxxdJYfHjjBxTtqXLSzThIHfPCE4PG+FzvOOdrtzvo1g+RlWG8ji9IGUFRjQyO1dPKCOOoFLWhCEDZUI959dj\/dsMQtE13iJKJiNbHpZa3gheAd4jwSAoSeZkq14sh8m78fXUA6npUTc7Snltj\/03HeuXcrey9dj\/ehdwVPEMG7QNbN62sXjX5Fi7WI9OODkEQRl501QGyEbl4SiyKJY4zWeBdQGi5dFyMIjy2VLDrPYiYkBhIFwQckeCQ4vHeIc0jpSEQwSpN1utjS01+JaHtP4XvS3zmP8wHnHKherAQRvWaQUE5nSpZwJicrhxiuj7BlncV5hy\/l55kpijBGEzycP5Bw0VDKTNezWHoems+5Z7pDy3m0BMR7gu+5SnC9S7xAIYTlHApP8AGDZ\/+hCc7bZkjiQFmWlM5hjGFqYoaVpaV87SAhn1AevFtBqZj52SmeODbFzpF+NEJe9NKnCMRRhDWKVPf01daaZSuWc\/tTtieKv9s\/BsGjvcc7TyhKQubwWYlkjmxukWx2npAVhDLD5V2enmlx4GHHay\/bTlGWpy1SZCW+LBfXDCKBY6KlLd7V4jSQ5wXfvOMJ9py1iR3DgxRFcWrHSJBAbC3amOesH8ZoWq2M5swSqRKU94TCIXlJyD1SONxKl2xmFp93CWWJ+Jzgc5R3tDs5RVGSFwVBAqDIiwJt7PQLsEj5Mx30uEh5dnAFlUrg6IkZjpyYY9vGBi4EUD054UXwIWC1xhiDUQprNHcdnubz9xxDZyUKIZSBUPYAxHlCt6RoNnF5hlVQrVraKzlOhCjSbByq0O50KZ0DFGXpmJqaR+DwmkGMsY8GCQeCL84WlyG+ACLuO3iSi8\/ZSH+9QhaEEHoZxTuPtbonU7QmNoZ7j0wxNr7IhmqM855QBsR5KAOhdD2I9gpKAt47Mi8ECXgX2DbcYOf2AZbaHXwIaK1YWlrBRhak+Mnas1ZwLRG5W7x7p\/cZynVIk4Tv7z+OF817rr2ATevr5CEQQoTXntJprLGksSEoj1vJ0Z0cJwFxq\/v2AFJ6yuVFytZyb30JHgm+l81Cz1V3bu1DESjyAq2htZLxzMlpnA8zutL3yJq1lpICI+V9oWjPBl8QXAcJXbTk3PHjo9xx33FEHN08J8tzsrwgywoIJZ0s4+v7jrPv0AQV73HtHN8tkMwTugVFc4FyebGXxcSDBE6JK1GgDDRXurS7GS54tNaMjs8xt7DM0nLrWyLMrtkiShlQ8gzivhpc8aFQZnizglWW1Gh++vg4b7hiB2kS4XwgspZqGrHv0Czff3iGnxxZIAhUYk0vnAx4T7GySJmt9MYIAUVACIgKBNWzjIhneaVLN8vxzrO80ub4yRlOjk64bH7sG6EsyzWDaG0BCh\/CjS5vv01ruzmYDkFbEMXs3ALziysMDVTRyuFtRBwJ37nvGX5wcIb+WkwUWUoXUNogoUPZXiSU2bMEbwB6VhHxq0AeE2nQUDqH4JlvtphdyOm285vLlYUD4oq1Fx867cXVNOwfUjb9N2OTv1FaoTCIh9YSjE7O0VfbjHMFA32KsekuE9OLVG1Ai8M7UFrjshY+W0a862lyAcEhEnpVllV5rNCgVneYRoN4jo8ucf+jC3TbxYRV4QtOmxyl1w4S\/CnrKe87zeuVhFcrM3yViEYHYcWXHH5qgl3bhxARxmcLbrrrGCdGF4jihOAEKPHFCr7soJRCUIgLQOjt6bXuSWP9XKGPBLSJuPfRJU6Md2h1Db7sfM5Lfn+0buR0PK0ta52i7m3VZspO8xMmqvyHTWW3IIgrmZiepZN1cWXg8afmeezIBL4EqwNlURKKDiIepQ1B9SaI0ihrfg5gev1ToAjg4ampgMs1hDq+eeSGfPnp6021f3XHpdYOctoPFUhwEMJ9WWvqw6nwRVthOOA59MgRXnHRDvobdb59x0Hml0rq9Qr5coEEhzYWpTTBF70al7Eos1p91Aqs6YEoiyjTS6C+Fx\/agLWK7twTd2ULRz+m4yh71uzWDlK2pn6hbCriblW9Ea8zSWNkbnqW7975AG\/5\/SvYOGiYHB8j8xHKxChtkeAQQFmDMRGo0JvsqiVEW5SOQEUoFSGsQolBjCZfPnJX0TrxXqWjCQi\/ZBH7eQJKKYvP298ubXM5iPucjuoXPv7okwytS+iraiLpIC5FCChvwGiiJAGjCMGhTG\/VRxvQFqViRKUok4CJCSZC4hrBefLxR25wnZMfVTpe8znJCzsfURqUvtt1l\/5Il9knlK28\/d59D9I\/2I9WAe8ygit6ApIERW9j5kShYbUebIEYpSpgKoS0BtUGqjGAa05N5RMHPlPOP\/0v2jTyF\/WgR6EQpX7m85X3aV\/ekRXZh\/MsvzipVNHWYuIY5xxaCWXZqx+b2BKCweURVmKgjsR9qL4BosF1BAvFxGPfkPbKdeXcU\/uVTn9dZ4gKlGoH774quHs2rq9fneWdtxeFeU21Fsfbt2yg3S2YWchRcYwyhjS2NBqWjq+QNCxxwyN6diZ65vu3LPbt\/np7Zemg8WpZ2WQtIfErPtXtlezHrOHL2vCt9uzkSL0irxqsb7pkpdU5o56Y9VhbGxoweudIcJFeWGqtzEy6vH20ODl\/f27qDymTzKqklWFiCL\/8wa566U81L4G8BPL\/A+R\/BgAzCInEE2+\/LgAAAABJRU5ErkJggg==' alt='img'\/><\/div><div class='stb-caption-content'>Python Console<\/div><div class='stb-tool'><\/div><\/div><div class='stb-content'><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import segmentation_models_pytorch as smp\nimport torch\n\n# U-Net RGB pr\u00e9-entra\u00een\u00e9\nmodel = smp.Unet(\n    encoder_name=\"resnet34\",\n    encoder_weights=\"imagenet\",\n    in_channels=3,\n    classes=1  # corail\/non-corail\n)\n\n# Sauvegarde pour QGIS\ntorch.save(model, \"<strong><em>c:\/models\/unet_coraux.pth<\/em><\/strong>\")\n<\/code><\/pre>\n\n\n\n<p><\/div><\/div>\n\n\n\n<p>En este ejemplo, guardamos los modelos descargados en un directorio c:\/models<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Configuracion_del_script_de_procesamiento\"><\/span>Configuraci\u00f3n del script de procesamiento<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>En QGIS \u2192 Caja de herramientas de procesamiento \u2192 Scripts \u2192 Nuevo script,<\/p>\n\n\n\n<div class='stb-container stb-style-black stb-caption-box'><div class='stb-caption'><div class='stb-logo'><img class='stb-logo__image' src='data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN\/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz\/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH\/w\/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA\/g88wAAKCRFRHgg\/P9eM4Ors7ONo62Dl8t6r8G\/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt\/qIl7gRoXgugdfeLZrIPQLUAoOnaV\/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl\/AV\/1s+X48\/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H\/LcL\/\/wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93\/+8\/\/UegJQCAZkmScQAAXkQkLlTKsz\/HCAAARKCBKrBBG\/TBGCzABhzBBdzBC\/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD\/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q\/pH5Z\/YkGWcNMw09DpFGgsV\/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY\/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4\/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L\/1U\/W36p\/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N\/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26\/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE\/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV\/MN8C3yLfLT8Nvnl+F30N\/I\/9k\/3r\/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt\/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi\/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a\/zYnKOZarnivN7cyzytuQN5zvn\/\/tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO\/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3\/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA\/0HIw6217nU1R3SPVRSj9Yr60cOxx++\/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3\/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX\/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8\/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb\/1tWeOT3dvfN6b\/fF9\/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR\/cGhYPP\/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF\/6i\/suuFxYvfvjV69fO0ZjRoZfyl5O\/bXyl\/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o\/2j5sfVT0Kf7kxmTk\/8EA5jz\/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5\/wAAgOkAAHUwAADqYAAAOpgAABdvkl\/FRgAAD59JREFUeNrsmnmMXVd9xz9nucvbZvF4GdtjO46dhcRZSGmCSIAExaUFQtoiUVSgFFQBFaISRaBSoH9QVaUUAU2VSrSVoGELSgRpGshCA8GQYGfBcVZsx47j2dc3M2\/ee3c55\/z6xxubpOSPCSX8QXOkq3ve1ZXO+dzfcr7nd54SEX4TmuY3pL0E8hLIi9Ts8z08Ojr3nN9iAgklzdl54iRBCBROcXx8kTgynBxvcuN3D\/Lk0TFtrNmiQrHnA++48qz3vu2KM0VYd\/jYhPrAJ77cHptenqrV0hNac9gH\/Wi73W5bLbz7rZdx9Wv2MDk+RV4UVBoNQhkofUHaV0fCcxPSu669dm0gL8ikWmGtGWy3O+dqFa48d9vQqx99\/MQF01NLGwb6BxJr4fYfPs7iYhcdPCHrLjsJY319tf22kd7T7XR+EkROAO5XbpG1tCBCCNKfZcXe8cmFd1SMvOmc7ZvM7p0jHBltc9UVF9PJFV\/6+r185ZYHGN52Jko8zeZS39z84nl7zt1x3puvPv89N912YEwr\/Q3vw80hhPt\/rSAhBKpJcvnWTYMfuuk7D72FIFz3qXdzbLTJR\/\/pLuKBjdz+4CS3PTDOTXc+QiWJ2LqxD18UlBFs3taHTgZptiPqfUMj3Ux9RIL+k1q9fn2z2fxXYPrFBxHB2uj9Q+v6\/nrThnjbKy85h0svOoPtm4dYLhUbRraw2HV85+FJlFZsP+cMNNDOcogNpi\/ionPWc8bGKnf++Dg7tqznlZeMMDDQtymtJJ8S1Ou8hL8KhAMvGohI0Cay\/1BvND6YJpWkXqtxzesu4Mb\/Psz9Nx1i64YGjeF1dLolmyINSqGCICFgfRUpPT4rObrgIPZ86M9ex3lnrCNNYWx6AQ3U+\/quHB2b+lpfLf3L0he3\/upBRFSSVv+5Uq38eb1SUY16leVOyT9+8yHufGQSSSyPtT1FJaVSq6KNQikFBIIP4DziPFFW0ml1mex45tqeTUMNjo3P8eRTTepVTSWJue\/A47sG+tMvXnjBrkQrfVPQYXUS6v8ColBKqXaWfyatpO+vVaqqUU1ZWMr47Lce4ZsPjlMdqFFppGSRIUpiImvQSvXGDYHECN55sszh05xKYnnv3nO45pLtPDOzxF987kfY4HnDq7bS6XaoN\/pR2g0rrT7\/zDMnl7NW985IB2A1DV9zzdpAQvDPwcha7fdFJnywWkl1f73Ccjfw8Rse5LYnptk0Moitppg0xiYRylq0VSilQQkEQYtQ1SK6k6si15SR5Ws\/HaUQGK4Y9l6+i6KbMT7f4a59T7E8d5wdm2NqtXRrrW4\/7Z0fVbgnRIUXZhHXnkQpCEFotctLa7X6RwcHBpO+WoX5VsGnbz7E3cfn2bx9iKiWYqopNo3RscVEEUor0KrnCOIpCw8aUqMRoxBtGG91mG3nvPW3d\/F7l2ymcCUHD0+ysNjmwANzHD4+yuzcAm97y+UXp\/XKJ4vW8p9ao3PU87uXej4Zf\/2X\/xMfAo1aXL3wZVu+UvroD\/c\/OsMr9uzglgcmuOngBBu3rcM2qkTV9LRFTGyJkghR+ufjBY+4gCtLQlmiypKaBM4aiPnkVbuppxGtlQ7dLMP7AudKHnjsaZqLy0xOT9NaaeGkIJLyXaEovhIQ+eyn\/nZtFvnYF+6m0y15+XnDr7\/u42988w23Psm\/33aYN77+YprKsmFzP1E1wVZibDUmqsSYNMEkEcYa0KBYDXYREecxRqtgFDnIpprh46\/doeqJoSwd1hisMRQltHPHzpF1bFhXYXhTnbt\/dJCJySZbhvs+stBc\/J4ry8k1i8ZaAoMN07hw99B7Dj05a2\/dd4zLf+tMrnrFDtZvqJNbgyQRNo2wadyLjzTCxhZtNFpptFYorUgiEyppJDqJeq4XW3X59n7VV4lwLpxORkortNYoFHnh6WYlWV5y7lkjWGOYXWjtiZJ0b5Skas0g3SzDqnD+xsHK74gyXHnpLqr9NbpeuOjMIX53zzCNaoSJLcZaTGTQ0erkFav3Xox4Ee0VykYaYy1RZHnZUK2X0f+XvysUIoJWGqM1BEjThN1nbqHV6pI5eZcytrpmkLN3btJFKVdNzXbivVfs5FWXbOPEbIcb95\/kwdFFFgpPmkRoazBWY6zBaIM+DcFqvzc7AaV1710HHJzrnF4V1LNgRAmIoFTvudYaVwaGhvqIraGbla\/RqB1rBumrJVsaib3yth88zZdufozLzh\/mrB2DLBWek8sZj8ys0CwDohRaK7QCo1atoBT6WXetFEYrdG+hR2mIrH7u4hYEEQheCNLrA6c\/iHeBXbtHWGq27A\/2PX75mtNvu1NcGLzsUTriq7cfYaG0GKu5+oJh\/uCKM5npeh5e6HKsK3R9oL66UD37657qqtVr9Q1io7nr5DIXDibh5Rsb2jlHQABBIygBQRCRU8sfPgTi2DI42GCpefjlawYps3y3c7I+rcY4rzg23uKP33Qer71ohJ3Dg73PGjzfG13mxqdXmCgDKgrE2vyCiNCnbO4EJQGNsJCV\/NfTTT1Sj9lQjdCiyfPAUidHGcEahQ+ChJ6FAPK8ZHjLRrZsXb99zSBTUwu7RKWxUoZaJeaho002PzzNta88g6IoUNqitWLvjn4u3lDjtrE2t8\/kOK9IIv2s4F31\/RAQ7xDvIQRSA\/vGFhmbX+GanQPUDDxxdJYfHjjBxTtqXLSzThIHfPCE4PG+FzvOOdrtzvo1g+RlWG8ji9IGUFRjQyO1dPKCOOoFLWhCEDZUI959dj\/dsMQtE13iJKJiNbHpZa3gheAd4jwSAoSeZkq14sh8m78fXUA6npUTc7Snltj\/03HeuXcrey9dj\/ehdwVPEMG7QNbN62sXjX5Fi7WI9OODkEQRl501QGyEbl4SiyKJY4zWeBdQGi5dFyMIjy2VLDrPYiYkBhIFwQckeCQ4vHeIc0jpSEQwSpN1utjS01+JaHtP4XvS3zmP8wHnHKherAQRvWaQUE5nSpZwJicrhxiuj7BlncV5hy\/l55kpijBGEzycP5Bw0VDKTNezWHoems+5Z7pDy3m0BMR7gu+5SnC9S7xAIYTlHApP8AGDZ\/+hCc7bZkjiQFmWlM5hjGFqYoaVpaV87SAhn1AevFtBqZj52SmeODbFzpF+NEJe9NKnCMRRhDWKVPf01daaZSuWc\/tTtieKv9s\/BsGjvcc7TyhKQubwWYlkjmxukWx2npAVhDLD5V2enmlx4GHHay\/bTlGWpy1SZCW+LBfXDCKBY6KlLd7V4jSQ5wXfvOMJ9py1iR3DgxRFcWrHSJBAbC3amOesH8ZoWq2M5swSqRKU94TCIXlJyD1SONxKl2xmFp93CWWJ+Jzgc5R3tDs5RVGSFwVBAqDIiwJt7PQLsEj5Mx30uEh5dnAFlUrg6IkZjpyYY9vGBi4EUD054UXwIWC1xhiDUQprNHcdnubz9xxDZyUKIZSBUPYAxHlCt6RoNnF5hlVQrVraKzlOhCjSbByq0O50KZ0DFGXpmJqaR+DwmkGMsY8GCQeCL84WlyG+ACLuO3iSi8\/ZSH+9QhaEEHoZxTuPtbonU7QmNoZ7j0wxNr7IhmqM855QBsR5KAOhdD2I9gpKAt47Mi8ECXgX2DbcYOf2AZbaHXwIaK1YWlrBRhak+Mnas1ZwLRG5W7x7p\/cZynVIk4Tv7z+OF817rr2ATevr5CEQQoTXntJprLGksSEoj1vJ0Z0cJwFxq\/v2AFJ6yuVFytZyb30JHgm+l81Cz1V3bu1DESjyAq2htZLxzMlpnA8zutL3yJq1lpICI+V9oWjPBl8QXAcJXbTk3PHjo9xx33FEHN08J8tzsrwgywoIJZ0s4+v7jrPv0AQV73HtHN8tkMwTugVFc4FyebGXxcSDBE6JK1GgDDRXurS7GS54tNaMjs8xt7DM0nLrWyLMrtkiShlQ8gzivhpc8aFQZnizglWW1Gh++vg4b7hiB2kS4XwgspZqGrHv0Czff3iGnxxZIAhUYk0vnAx4T7GySJmt9MYIAUVACIgKBNWzjIhneaVLN8vxzrO80ub4yRlOjk64bH7sG6EsyzWDaG0BCh\/CjS5vv01ruzmYDkFbEMXs3ALziysMDVTRyuFtRBwJ37nvGX5wcIb+WkwUWUoXUNogoUPZXiSU2bMEbwB6VhHxq0AeE2nQUDqH4JlvtphdyOm285vLlYUD4oq1Fx867cXVNOwfUjb9N2OTv1FaoTCIh9YSjE7O0VfbjHMFA32KsekuE9OLVG1Ai8M7UFrjshY+W0a862lyAcEhEnpVllV5rNCgVneYRoN4jo8ucf+jC3TbxYRV4QtOmxyl1w4S\/CnrKe87zeuVhFcrM3yViEYHYcWXHH5qgl3bhxARxmcLbrrrGCdGF4jihOAEKPHFCr7soJRCUIgLQOjt6bXuSWP9XKGPBLSJuPfRJU6Md2h1Db7sfM5Lfn+0buR0PK0ta52i7m3VZspO8xMmqvyHTWW3IIgrmZiepZN1cWXg8afmeezIBL4EqwNlURKKDiIepQ1B9SaI0ihrfg5gev1ToAjg4ampgMs1hDq+eeSGfPnp6021f3XHpdYOctoPFUhwEMJ9WWvqw6nwRVthOOA59MgRXnHRDvobdb59x0Hml0rq9Qr5coEEhzYWpTTBF70al7Eos1p91Aqs6YEoiyjTS6C+Fx\/agLWK7twTd2ULRz+m4yh71uzWDlK2pn6hbCriblW9Ea8zSWNkbnqW7975AG\/5\/SvYOGiYHB8j8xHKxChtkeAQQFmDMRGo0JvsqiVEW5SOQEUoFSGsQolBjCZfPnJX0TrxXqWjCQi\/ZBH7eQJKKYvP298ubXM5iPucjuoXPv7okwytS+iraiLpIC5FCChvwGiiJAGjCMGhTG\/VRxvQFqViRKUok4CJCSZC4hrBefLxR25wnZMfVTpe8znJCzsfURqUvtt1l\/5Il9knlK28\/d59D9I\/2I9WAe8ygit6ApIERW9j5kShYbUebIEYpSpgKoS0BtUGqjGAa05N5RMHPlPOP\/0v2jTyF\/WgR6EQpX7m85X3aV\/ekRXZh\/MsvzipVNHWYuIY5xxaCWXZqx+b2BKCweURVmKgjsR9qL4BosF1BAvFxGPfkPbKdeXcU\/uVTn9dZ4gKlGoH774quHs2rq9fneWdtxeFeU21Fsfbt2yg3S2YWchRcYwyhjS2NBqWjq+QNCxxwyN6diZ65vu3LPbt\/np7Zemg8WpZ2WQtIfErPtXtlezHrOHL2vCt9uzkSL0irxqsb7pkpdU5o56Y9VhbGxoweudIcJFeWGqtzEy6vH20ODl\/f27qDymTzKqklWFiCL\/8wa566U81L4G8BPL\/A+R\/BgAzCInEE2+\/LgAAAABJRU5ErkJggg==' alt='img'\/><\/div><div class='stb-caption-content'>traitement<\/div><div class='stb-tool'><\/div><\/div><div class='stb-content'><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># -*- coding: utf-8 -*-\n\"\"\"\nAlgorithme QGIS : Segmentation Coraux (U-Net) avec option masquage terrestre\nCompatible QGIS 3.44+\n\"\"\"\nfrom qgis.core import (\n    QgsProcessing,\n    QgsProcessingAlgorithm,\n    QgsProcessingParameterRasterLayer,\n    QgsProcessingParameterFile,\n    QgsProcessingParameterEnum,\n    QgsProcessingParameterRasterDestination,\n    QgsProcessingParameterBoolean,\n)\nfrom qgis.PyQt.QtCore import QCoreApplication\nimport torch\nimport torch.serialization\nimport numpy as np\nfrom osgeo import gdal\nfrom scipy.signal import windows\n\n\nclass SegmentationCoraux(QgsProcessingAlgorithm):\n    \"\"\"Segmentation des images Sentinel-2 \u00e0 1m avec un mod\u00e8le U-Net\"\"\"\n\n    BAND_OPTIONS = &#091;\"RGB (4-3-2)\", \"Fausse couleur (8-4-3)\"]\n\n    def initAlgorithm(self, config=None):\n        self.addParameter(\n            QgsProcessingParameterRasterLayer(\n                \"raster_input\",\n                self.tr(\"Image Sentinel-2 (GeoTIFF multibandes)\")\n            )\n        )\n\n        self.addParameter(\n            QgsProcessingParameterEnum(\n                \"band_set\",\n                self.tr(\"S\u00e9lection manuelle des bandes\"),\n                options=self.BAND_OPTIONS,\n                defaultValue=0\n            )\n        )\n\n        self.addParameter(\n            QgsProcessingParameterFile(\n                \"model_path\",\n                self.tr(\"Mod\u00e8le PyTorch (.pth)\"),\n                extension=\"pth\"\n            )\n        )\n\n        self.addParameter(\n            QgsProcessingParameterRasterDestination(\n                \"output_raster\",\n                self.tr(\"Raster de sortie (masque)\")\n            )\n        )\n\n        # --- Nouvelle option : masquage terrestre ---\n        self.addParameter(\n            QgsProcessingParameterBoolean(\n                \"mask_land\",\n                self.tr(\"Masquer les zones terrestres (NDWI)\"),\n                defaultValue=True\n            )\n        )\n\n    def processAlgorithm(self, parameters, context, feedback):\n        model_path = self.parameterAsFile(parameters, \"model_path\", context)\n        mask_land = self.parameterAsBool(parameters, \"mask_land\", context)\n        band_set = self.parameterAsEnum(parameters, \"band_set\", context)\n\n        feedback.pushInfo(\"Chargement du mod\u00e8le PyTorch...\")\n        try:\n            from segmentation_models_pytorch.decoders.unet.model import Unet\n            torch.serialization.add_safe_globals(&#091;Unet])\n        except Exception as e:\n            feedback.pushInfo(f\"Avertissement : impossible d\u2019ajouter Unet aux classes s\u00fbres : {e}\")\n\n        model = torch.load(model_path, map_location=torch.device('cpu'), weights_only=False)\n        model.eval()\n\n        raster_input = self.parameterAsRasterLayer(parameters, \"raster_input\", context)\n        ds = gdal.Open(raster_input.source())\n        feedback.pushInfo(f\"Ouverture du raster : {raster_input.source()}\")\n        nrows, ncols = ds.RasterYSize, ds.RasterXSize\n\n        # --- D\u00e9tecter automatiquement les canaux d'entr\u00e9e ---\n        conv1_weights = model.encoder.conv1.weight.data\n        n_channels = conv1_weights.shape&#091;1]\n        feedback.pushInfo(f\"Le mod\u00e8le attend {n_channels} canaux d'entr\u00e9e.\")\n\n        if n_channels == 3:\n            # Analyser l\u2019importance des canaux\n            channel_mean = conv1_weights.abs().mean(dim=(0, 2, 3)).numpy()\n            sorted_idx = list(np.argsort(-channel_mean))\n            feedback.pushInfo(f\"Classement des canaux par importance : {sorted_idx}\")\n\n            band_selection = &#091;4, 3, 2]  # RGB classique\n            feedback.pushInfo(f\"Utilisation automatique des bandes : {band_selection} (RGB)\")\n        else:\n            band_selection = &#091;4, 3, 2] if band_set == 0 else &#091;8, 4, 3]\n            feedback.pushInfo(f\"Utilisation manuelle des bandes : {band_selection}\")\n\n        # --- Lecture des bandes s\u00e9lectionn\u00e9es ---\n        img_list = &#091;]\n        for b in band_selection:\n            band = ds.GetRasterBand(b)\n            arr = band.ReadAsArray().astype(np.float32)\n            img_list.append(arr)\n        img = np.stack(img_list, axis=0)\n\n        # Normalisation\n        feedback.pushInfo(\"Normalisation des valeurs...\")\n        img = (img - img.min()) \/ (img.max() - img.min() + 1e-6)\n\n        # --- Calcul NDWI si option activ\u00e9e ---\n        if mask_land and ds.RasterCount &gt;= 8:\n            try:\n                B3 = ds.GetRasterBand(3).ReadAsArray().astype(np.float32)\n                B8 = ds.GetRasterBand(8).ReadAsArray().astype(np.float32)\n                ndwi = (B3 - B8) \/ (B3 + B8 + 1e-6)\n                water_mask = ndwi &gt; 0\n                feedback.pushInfo(\"NDWI calcul\u00e9 : les zones terrestres seront exclues.\")\n            except Exception as e:\n                water_mask = np.ones((nrows, ncols), dtype=bool)\n                feedback.pushInfo(f\"NDWI non calculable ({e}), toutes les zones seront trait\u00e9es.\")\n        else:\n            water_mask = np.ones((nrows, ncols), dtype=bool)\n            feedback.pushInfo(\"Masquage terrestre d\u00e9sactiv\u00e9.\")\n\n        # --- Traitement par blocs ---\n        block_size = 2048\n        overlap = 512\n        output_mask = np.zeros((nrows, ncols), dtype=np.float32)\n        weight = np.zeros((nrows, ncols), dtype=np.float32)\n\n        total_blocks = ((nrows \/\/ (block_size - overlap) + 1) *\n                        (ncols \/\/ (block_size - overlap) + 1))\n        done = 0\n        feedback.pushInfo(\"D\u00e9but du traitement par blocs...\")\n\n        for y in range(0, nrows, block_size - overlap):\n            for x in range(0, ncols, block_size - overlap):\n                if feedback.isCanceled():\n                    break\n\n                block = img&#091;:, y:y+block_size, x:x+block_size]\n                if block.size == 0:\n                    continue\n\n                mask_block_water = water_mask&#091;y:y+block_size, x:x+block_size]\n                if not mask_block_water.any():\n                    continue\n\n                # ======= BLOC ORIGINAL PR\u00c9SERV\u00c9 =======\n                with torch.no_grad():\n                    block_tensor = torch.from_numpy(block).unsqueeze(0)\n                    pred = model(block_tensor)\n                    mask_block = pred.squeeze().numpy()\n\n                h, w = mask_block.shape\n                mask_block *= mask_block_water&#091;:h, :w]\n\n                # Fen\u00eatre Hanning\n                win_y = windows.hann(h)&#091;:, None]\n                win_x = windows.hann(w)&#091;None, :]\n                weight_block = win_y * win_x\n\n                output_mask&#091;y:y+h, x:x+w] += mask_block * weight_block\n                weight&#091;y:y+h, x:x+w] += weight_block\n\n                done += 1\n                progress = int(100 * done \/ total_blocks)\n                feedback.setProgress(progress)\n                # ======= FIN DU BLOC ORIGINAL =======\n\n        # Fusion finale\n        output_mask \/= np.maximum(weight, 1e-6)\n        output_mask = np.clip(output_mask, 0, 1)\n\n        # --- Sauvegarde GeoTIFF ---\n        feedback.pushInfo(\"Sauvegarde du masque final...\")\n        driver = gdal.GetDriverByName(\"GTiff\")\n        out_path = self.parameterAsOutputLayer(parameters, \"output_raster\", context)\n        out_ds = driver.Create(out_path, ncols, nrows, 1, gdal.GDT_Float32)\n        out_ds.SetGeoTransform(ds.GetGeoTransform())\n        out_ds.SetProjection(ds.GetProjection())\n        out_ds.GetRasterBand(1).WriteArray(output_mask)\n        out_ds.FlushCache()\n\n        feedback.pushInfo(\"\u2705 Segmentation termin\u00e9e avec succ\u00e8s.\")\n        return {\"output_raster\": out_path}\n\n    # --- M\u00e9tadonn\u00e9es ---\n    def name(self):\n        return \"segmentation_coraux\"\n\n    def displayName(self):\n        return self.tr(\"Segmentation des images Sentinel 2 \u00e0 1m (U-Net)\")\n\n    def group(self):\n        return self.tr(\"Deep Learning\")\n\n    def groupId(self):\n        return \"deeplearning\"\n\n    def tr(self, string):\n        return QCoreApplication.translate(\"SegmentationCoraux\", string)\n\n    def createInstance(self):\n        return SegmentationCoraux()\n\n<\/code><\/pre>\n\n\n\n<p><\/div><\/div>\n\n\n\n<p>En un pr\u00f3ximo art\u00edculo encontrar\u00e1 explicaciones sobre las diferentes partes del c\u00f3digo.<\/p>\n\n\n\n<p>El script QGIS que se presenta aqu\u00ed permite aplicar modelos de segmentaci\u00f3n de im\u00e1genes basados en U\u2011Net guardados en formato PyTorch (.pth). Est\u00e1 dise\u00f1ado para procesar im\u00e1genes multiespectrales, como las procedentes de los sat\u00e9lites Sentinel\u20112, y adapta autom\u00e1ticamente las bandas utilizadas en funci\u00f3n del n\u00famero de canales de entrada que espera el modelo. Por ejemplo, si el modelo se entrena con im\u00e1genes RGB, el script seleccionar\u00e1 las bandas Rojo, Verde y Azul; si el modelo espera m\u00e1s canales, propone una selecci\u00f3n manual o utiliza todas las bandas disponibles. El c\u00f3digo tambi\u00e9n incluye la posibilidad de ocultar las zonas terrestres mediante el c\u00e1lculo del NDWI, lo que permite centrar la segmentaci\u00f3n en las zonas acu\u00e1ticas, por ejemplo, para identificar los corales. En la pr\u00e1ctica, cualquier modelo U-Net PyTorch correctamente guardado puede cargarse y aplicarse, siempre que la arquitectura y los pesos est\u00e9n incluidos en el archivo .pth.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Uso\"><\/span>Uso<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>Ejecute el script. Se abrir\u00e1 la siguiente ventana:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2025\/11\/deeplearning.jpg?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"506\" data-attachment-id=\"15920\" data-permalink=\"https:\/\/www.sigterritoires.fr\/index.php\/quand-le-deep-learning-plonge-sous-la-surface-cartographier-les-coraux-avec-qgis-et-pytorch\/deeplearning\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2025\/11\/deeplearning.jpg?fit=1749%2C1383&amp;ssl=1\" data-orig-size=\"1749,1383\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"deeplearning\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2025\/11\/deeplearning.jpg?fit=640%2C506&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2025\/11\/deeplearning.jpg?resize=640%2C506&#038;ssl=1\" alt=\"\" class=\"wp-image-15920\" srcset=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2025\/11\/deeplearning.jpg?resize=1024%2C810&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2025\/11\/deeplearning.jpg?resize=300%2C237&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2025\/11\/deeplearning.jpg?resize=768%2C607&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2025\/11\/deeplearning.jpg?resize=1536%2C1215&amp;ssl=1 1536w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2025\/11\/deeplearning.jpg?w=1749&amp;ssl=1 1749w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2025\/11\/deeplearning.jpg?w=1280&amp;ssl=1 1280w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/figure>\n\n\n\n<p>La selecci\u00f3n manual de bandas solo se utiliza si el script no puede determinar, a partir del modelo, qu\u00e9 bandas se deben utilizar.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Interpretacion_del_resultado\"><\/span>Interpretaci\u00f3n del resultado<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>La trama resultante del modelo representa un mapa de probabilidad:<br>los valores cercanos a 1 indican una fuerte presencia de corales, mientras que los cercanos a 0 corresponden a zonas sin corales (arena, algas, profundidad, etc.).<\/p>\n\n\n\n<p>Una simbolog\u00eda adaptada (del azul claro al rojo) permite visualizar f\u00e1cilmente la distribuci\u00f3n espacial de las zonas con probable presencia de corales.<br>Al combinar este mapa con otros datos (batimetr\u00eda, sustrato, turbidez), es posible estimar la vulnerabilidad o la degradaci\u00f3n de los arrecifes a lo largo del tiempo.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2025\/11\/deeplearningoutput.jpg?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"439\" data-attachment-id=\"15921\" data-permalink=\"https:\/\/www.sigterritoires.fr\/index.php\/quand-le-deep-learning-plonge-sous-la-surface-cartographier-les-coraux-avec-qgis-et-pytorch\/deeplearningoutput\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2025\/11\/deeplearningoutput.jpg?fit=2257%2C1549&amp;ssl=1\" data-orig-size=\"2257,1549\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}\" data-image-title=\"deeplearningoutput\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2025\/11\/deeplearningoutput.jpg?fit=640%2C439&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2025\/11\/deeplearningoutput.jpg?resize=640%2C439&#038;ssl=1\" alt=\"\" class=\"wp-image-15921\" srcset=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2025\/11\/deeplearningoutput.jpg?resize=1024%2C703&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2025\/11\/deeplearningoutput.jpg?resize=300%2C206&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2025\/11\/deeplearningoutput.jpg?resize=768%2C527&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2025\/11\/deeplearningoutput.jpg?resize=1536%2C1054&amp;ssl=1 1536w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2025\/11\/deeplearningoutput.jpg?resize=2048%2C1406&amp;ssl=1 2048w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2025\/11\/deeplearningoutput.jpg?w=1280&amp;ssl=1 1280w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2025\/11\/deeplearningoutput.jpg?w=1920&amp;ssl=1 1920w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Ventajas_de_este_enfoque\"><\/span>Ventajas de este enfoque<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>La integraci\u00f3n de PyTorch en QGIS abre nuevas perspectivas para la cartograf\u00eda medioambiental asistida por inteligencia artificial:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>C\u00f3digo abierto y reproducible: todo el proceso puede compartirse, modificarse o adaptarse a otras zonas costeras.<\/li>\n\n\n\n<li>Autonom\u00eda local: no se necesita ArcGIS Pro ni una costosa licencia para probar o aplicar modelos de aprendizaje profundo.<\/li>\n\n\n\n<li>Experimentaci\u00f3n flexible: se pueden probar otras arquitecturas (SegNet, DeepLabV3, etc.) o adaptar el preprocesamiento a las especificidades de cada zona.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Hacia_un_ecosistema_de_modelos_abiertos\"><\/span>Hacia un ecosistema de modelos abiertos<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>A largo plazo, se podr\u00eda imaginar una biblioteca compartida de modelos medioambientales de c\u00f3digo abierto \u2014el equivalente libre del formato DLPK\u2014 en la que cada .pth ir\u00eda acompa\u00f1ado de su archivo de descripci\u00f3n (bandas, normalizaci\u00f3n, clases).<\/p>\n\n\n\n<p>QGIS podr\u00eda entonces ofrecer una interfaz para importar, probar y documentar estos modelos, facilitando su reutilizaci\u00f3n en contextos tropicales, costeros o forestales.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Conclusion\"><\/span>Conclusi\u00f3n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>El auge del aprendizaje profundo marca una nueva etapa en la evoluci\u00f3n de la geom\u00e1tica.<\/p>\n\n\n\n<p>Mientras que el procesamiento cl\u00e1sico de im\u00e1genes se basaba en umbrales e \u00edndices espectrales, los modelos neuronales ahora aprenden a reconocer formas, texturas y firmas complejas directamente en los p\u00edxeles.<\/p>\n\n\n\n<p>Gracias a herramientas como ArcGIS Pro (con sus DLPK) y QGIS (a trav\u00e9s de PyTorch y scripts personalizados), esta potencia est\u00e1 al alcance de todos: investigadores, t\u00e9cnicos o aficionados a la cartograf\u00eda medioambiental.<\/p>\n\n\n\n<p>El ejemplo que se presenta aqu\u00ed \u2014la segmentaci\u00f3n de corales a partir de im\u00e1genes Sentinel-2\u2014 ilustra el potencial de estos enfoques para el an\u00e1lisis detallado de los entornos costeros y la preservaci\u00f3n de los ecosistemas marinos.<\/p>\n\n\n\n<p>El reto ya no es solo t\u00e9cnico, sino tambi\u00e9n colectivo: poner en com\u00fan los modelos, documentar sus entradas, compartir los m\u00e9todos y hacer que el aprendizaje profundo sea m\u00e1s transparente, reproducible y abierto.<\/p>\n\n\n\n<p>El futuro de la teledetecci\u00f3n se construir\u00e1 probablemente en la encrucijada de estos dos mundos \u2014la ingenier\u00eda de software y el conocimiento del terreno\u2014 para transformar los datos satelitales en verdaderos indicadores del estado ecol\u00f3gico.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n","protected":false},"excerpt":{"rendered":"<p>El aprendizaje profundo est\u00e1 revolucionando el an\u00e1lisis de im\u00e1genes satelitales. Durante mucho tiempo reservado a los grandes laboratorios o al software propietario, hoy en d\u00eda se abre al mundo libre gracias a PyTorch y QGIS. Este&hellip;<\/p>\n","protected":false},"author":1,"featured_media":15925,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"give_campaign_id":0,"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"sfsi_plus_gutenberg_text_before_share":"","sfsi_plus_gutenberg_show_text_before_share":"","sfsi_plus_gutenberg_icon_type":"","sfsi_plus_gutenberg_icon_alignemt":"","sfsi_plus_gutenburg_max_per_row":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3859],"tags":[3879,3881,1369],"class_list":["post-16041","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-iaes","tag-ia-es","tag-pytorch-es","tag-qgis-es"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2025\/11\/deeplearningavant.jpeg?fit=272%2C198&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/p6XU0A-4aJ","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/posts\/16041","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/comments?post=16041"}],"version-history":[{"count":0,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/posts\/16041\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/media\/15925"}],"wp:attachment":[{"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/media?parent=16041"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/categories?post=16041"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/tags?post=16041"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}