﻿{"id":16042,"date":"2025-12-05T10:00:00","date_gmt":"2025-12-05T09:00:00","guid":{"rendered":"https:\/\/www.sigterritoires.fr\/?p=16042"},"modified":"2025-11-28T21:48:04","modified_gmt":"2025-11-28T20:48:04","slug":"quando-o-deep-learning-mergulha-abaixo-da-superficie-mapeando-corais-com-qgis-e-pytorch","status":"publish","type":"post","link":"https:\/\/www.sigterritoires.fr\/index.php\/pt\/quando-o-deep-learning-mergulha-abaixo-da-superficie-mapeando-corais-com-qgis-e-pytorch\/","title":{"rendered":"Quando o Deep Learning mergulha abaixo da superf\u00edcie: mapeando corais com QGIS e PyTorch"},"content":{"rendered":"\n<p>O Deep Learning est\u00e1 revolucionando a an\u00e1lise de imagens de sat\u00e9lite.<\/p>\n\n\n\n<p>Por muito tempo reservado a grandes laborat\u00f3rios ou softwares propriet\u00e1rios, hoje ele se abre ao mundo livre gra\u00e7as ao PyTorch e ao QGIS.<\/p>\n\n\n\n<p>Este artigo explora os princ\u00edpios do Deep Learning aplicado \u00e0 geom\u00e1tica, a compara\u00e7\u00e3o entre os modelos da ESRI e aqueles que podem ser usados no QGIS, e conclui com um caso concreto: a detec\u00e7\u00e3o autom\u00e1tica de \u00e1reas de corais a partir de imagens 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\/pt\/quando-o-deep-learning-mergulha-abaixo-da-superficie-mapeando-corais-com-qgis-e-pytorch\/#Introducao_ao_Deep_Learning_aplicado_a_geomatica\" >Introdu\u00e7\u00e3o ao Deep Learning aplicado \u00e0 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\/pt\/quando-o-deep-learning-mergulha-abaixo-da-superficie-mapeando-corais-com-qgis-e-pytorch\/#Por_que_%E2%80%9Cprofundo%E2%80%9D\" >Por que \u201cprofundo\u201d?<\/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\/pt\/quando-o-deep-learning-mergulha-abaixo-da-superficie-mapeando-corais-com-qgis-e-pytorch\/#Deep_Learning_e_teledetecao\" >Deep Learning e teledete\u00e7\u00e3o<\/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\/pt\/quando-o-deep-learning-mergulha-abaixo-da-superficie-mapeando-corais-com-qgis-e-pytorch\/#O_formato_DLPK_da_ESRI\" >O formato DLPK da 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\/pt\/quando-o-deep-learning-mergulha-abaixo-da-superficie-mapeando-corais-com-qgis-e-pytorch\/#O_equivalente_em_codigo_aberto_PyTorch_e_QGIS\" >O equivalente em c\u00f3digo aberto: PyTorch e 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\/pt\/quando-o-deep-learning-mergulha-abaixo-da-superficie-mapeando-corais-com-qgis-e-pytorch\/#Resumo\" >Resumo<\/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\/pt\/quando-o-deep-learning-mergulha-abaixo-da-superficie-mapeando-corais-com-qgis-e-pytorch\/#Exemplo_pratico_segmentacao_de_corais_a_partir_de_imagens_Sentinel-2_no_QGIS\" >Exemplo pr\u00e1tico: segmenta\u00e7\u00e3o de corais a partir de imagens Sentinel-2 no 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\/pt\/quando-o-deep-learning-mergulha-abaixo-da-superficie-mapeando-corais-com-qgis-e-pytorch\/#Dados_utilizados\" >Dados 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\/pt\/quando-o-deep-learning-mergulha-abaixo-da-superficie-mapeando-corais-com-qgis-e-pytorch\/#Processamento_no_QGIS\" >Processamento no 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\/pt\/quando-o-deep-learning-mergulha-abaixo-da-superficie-mapeando-corais-com-qgis-e-pytorch\/#Modo_de_funcionamento\" >Modo de funcionamento<\/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\/pt\/quando-o-deep-learning-mergulha-abaixo-da-superficie-mapeando-corais-com-qgis-e-pytorch\/#Operacoes_previas\" >Opera\u00e7\u00f5es pr\u00e9vias<\/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\/pt\/quando-o-deep-learning-mergulha-abaixo-da-superficie-mapeando-corais-com-qgis-e-pytorch\/#Configuracao_do_script_de_processamento\" >Configura\u00e7\u00e3o do script de processamento<\/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\/pt\/quando-o-deep-learning-mergulha-abaixo-da-superficie-mapeando-corais-com-qgis-e-pytorch\/#Utilizacao\" >Utiliza\u00e7\u00e3o<\/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\/pt\/quando-o-deep-learning-mergulha-abaixo-da-superficie-mapeando-corais-com-qgis-e-pytorch\/#Interpretacao_do_resultado\" >Interpreta\u00e7\u00e3o do 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\/pt\/quando-o-deep-learning-mergulha-abaixo-da-superficie-mapeando-corais-com-qgis-e-pytorch\/#Rumo_a_um_ecossistema_de_modelos_abertos\" >Rumo a um ecossistema de modelos abertos<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/pt\/quando-o-deep-learning-mergulha-abaixo-da-superficie-mapeando-corais-com-qgis-e-pytorch\/#Conclusao\" >Conclus\u00e3o<\/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=\"Introducao_ao_Deep_Learning_aplicado_a_geomatica\"><\/span>Introdu\u00e7\u00e3o ao Deep Learning aplicado \u00e0 geom\u00e1tica<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>O Deep Learning (ou aprendizagem profunda) \u00e9 um ramo da intelig\u00eancia artificial inspirado no funcionamento do c\u00e9rebro humano. Baseia-se em redes de neur\u00f4nios artificiais capazes de aprender a partir de exemplos, sem que lhes sejam explicitamente ditadas todas as regras.<\/p>\n\n\n\n<p>Ao contr\u00e1rio dos m\u00e9todos tradicionais de classifica\u00e7\u00e3o \u2014 nos quais os indicadores e limites s\u00e3o escolhidos pelo pr\u00f3prio usu\u00e1rio \u2014, o Deep Learning descobre automaticamente as estruturas e os padr\u00f5es relevantes nos dados.<\/p>\n\n\n\n<p>No campo da geom\u00e1tica, essa abordagem abre perspectivas impressionantes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>reconhecimento de \u00e1reas urbanas, agr\u00edcolas ou florestais a partir de imagens de sat\u00e9lite,<\/li>\n\n\n\n<li>detec\u00e7\u00e3o de mudan\u00e7as ou cat\u00e1strofes naturais,<\/li>\n\n\n\n<li>identifica\u00e7\u00e3o de elementos espec\u00edficos (estradas, telhados, corais, navios, etc.),<\/li>\n\n\n\n<li>segmenta\u00e7\u00e3o precisa de paisagens a partir de imagens Sentinel, PlanetScope ou drone.<\/li>\n<\/ul>\n\n\n\n<p>O princ\u00edpio \u00e9 simples: treina-se um modelo com um grande conjunto de imagens anotadas, at\u00e9 que ele aprenda a reproduzir a tarefa desejada (por exemplo, distinguir \u00e1gua, vegeta\u00e7\u00e3o e areia). Uma vez treinado, o modelo pode ser aplicado a novas \u00e1reas, para gerar automaticamente mapas tem\u00e1ticos de alta resolu\u00e7\u00e3o.<\/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=\"Por_que_%E2%80%9Cprofundo%E2%80%9D\"><\/span>Por que \u201cprofundo\u201d?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>O termo \u201cprofundo\u201d vem do fato de que essas redes possuem v\u00e1rias camadas sucessivas \u2014 \u00e0s vezes dezenas.<\/p>\n\n\n\n<p>Cada camada aprende a reconhecer padr\u00f5es cada vez mais complexos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>as primeiras camadas detectam bordas e texturas,<\/li>\n\n\n\n<li>as seguintes identificam formas ou estruturas,<\/li>\n\n\n\n<li>e as \u00faltimas compreendem objetos inteiros ou contextos.<\/li>\n<\/ul>\n\n\n\n<p>\u00c9 essa hierarquia de representa\u00e7\u00f5es que d\u00e1 ao Deep Learning seu poder, mas tamb\u00e9m seu apetite por dados e poder de computa\u00e7\u00e3o.<\/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=\"Deep_Learning_e_teledetecao\"><\/span>Deep Learning e teledete\u00e7\u00e3o<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Na teledete\u00e7\u00e3o, os modelos mais utilizados s\u00e3o os de segmenta\u00e7\u00e3o de imagens, capazes de atribuir uma classe a cada pixel.<\/p>\n\n\n\n<p>Arquiteturas como U-Net, DeepLab ou Mask R-CNN tornaram-se refer\u00eancias para a cartografia autom\u00e1tica a partir de imagens multiespectrais.<\/p>\n\n\n\n<p>Esses modelos s\u00e3o geralmente treinados com frameworks como PyTorch ou TensorFlow e, em seguida, implantados em ambientes GIS.<\/p>\n\n\n\n<p>Os dois grandes mundos se interessaram por isso:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>ESRI<\/strong>, com seu formato de modelo .dlpk (Deep Learning Package) integrado ao ArcGIS Pro e ao ArcGIS Online;<\/li>\n\n\n\n<li><strong>QGIS<\/strong>, que permite usar modelos PyTorch ou TensorFlow por meio da Caixa de Ferramentas de Processamento ou 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=\"O_formato_DLPK_da_ESRI\"><\/span>O formato DLPK da ESRI<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>A ESRI foi uma das primeiras empresas de SIG a integrar o Deep Learning diretamente em seu ecossistema ArcGIS.<\/p>\n\n\n\n<p>Para facilitar a troca e a implanta\u00e7\u00e3o de modelos, a empresa criou um formato padr\u00e3o: o DLPK (Deep Learning Package).<\/p>\n\n\n\n<p>Um arquivo .dlpk n\u00e3o \u00e9 apenas um modelo: \u00e9 um conjunto completo e port\u00e1til, reunindo todos os elementos necess\u00e1rios para sua execu\u00e7\u00e3o.<\/p>\n\n\n\n<p>Ele geralmente cont\u00e9m:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>O modelo treinado (geralmente no formato PyTorch .pth ou TensorFlow .h5)<\/li>\n\n\n\n<li>Um arquivo de defini\u00e7\u00e3o JSON descrevendo a arquitetura do modelo, os par\u00e2metros esperados e os nomes das classes<\/li>\n\n\n\n<li>Metadados: tipo de entrada (raster, bloco, imagem), tamanho dos patches, n\u00famero de bandas, normaliza\u00e7\u00e3o, etc.<\/li>\n\n\n\n<li>Amostras de treinamento (opcionais) para documentar ou retreinar o modelo.<\/li>\n<\/ul>\n\n\n\n<p>Gra\u00e7as a essa organiza\u00e7\u00e3o, o ArcGIS Pro ou o ArcGIS Online sabem interpretar automaticamente o modelo, sem a necessidade de escrever c\u00f3digo.<\/p>\n\n\n\n<p>Ferramentas como \u201cClassify Pixels Using Deep Learning\u201d ou \u201cDetect Objects Using Deep Learning\u201d leem diretamente o .dlpk, carregam o modelo e realizam a infer\u00eancia em um raster ou conjunto de imagens.<\/p>\n\n\n\n<p>Essa abordagem \u201cchave na m\u00e3o\u201d apresenta duas vantagens principais:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Interoperabilidade: um modelo criado em outro lugar pode ser usado por qualquer usu\u00e1rio do ArcGIS, sem depend\u00eancias complexas.<\/li>\n\n\n\n<li>Replicabilidade: os metadados garantem que o modelo seja aplicado nas mesmas condi\u00e7\u00f5es em que foi treinado.<\/li>\n<\/ol>\n\n\n\n<p>O reverso da moeda, \u00e9 claro, \u00e9 o formato fechado: o .dlpk permanece vinculado ao ecossistema ArcGIS e nem sempre \u00e9 f\u00e1cil de usar em outros lugares.<\/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=\"O_equivalente_em_codigo_aberto_PyTorch_e_QGIS\"><\/span>O equivalente em c\u00f3digo aberto: PyTorch e QGIS<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>No mundo do c\u00f3digo aberto, o QGIS n\u00e3o imp\u00f5e um formato propriet\u00e1rio.<\/p>\n\n\n\n<p>Os modelos s\u00e3o simplesmente salvos em seu formato nativo (geralmente .pth para PyTorch ou .pt) e executados por meio de scripts Python integrados ao Processing Toolbox.<\/p>\n\n\n\n<p>A ideia \u00e9 a mesma da ESRI:<\/p>\n\n\n\n<p>carregamos uma imagem multiespectral, aplicamos um modelo treinado e geramos um mapa de classes ou de probabilidade.<\/p>\n\n\n\n<p>Mas, em vez de se basear em um formato empacotado como o .dlpk, o QGIS d\u00e1 total liberdade ao desenvolvedor:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>O modelo \u00e9 lido com torch.load().<\/li>\n\n\n\n<li>As faixas de entrada podem ser selecionadas dinamicamente (por exemplo, B4-B3-B2 para RGB ou B8-B4-B3 em falsa cor).<\/li>\n\n\n\n<li>O script Python controla todo o fluxo de processamento: normaliza\u00e7\u00e3o, mascaramento da \u00e1gua (NDWI), divis\u00e3o em blocos, fus\u00e3o dos resultados, etc.<\/li>\n<\/ul>\n\n\n\n<p>Essa abordagem permite m\u00e1xima flexibilidade, particularmente \u00fatil para pesquisa ou experimenta\u00e7\u00e3o.<\/p>\n\n\n\n<p>Por exemplo, um modelo U-Net treinado no PyTorch pode ser aplicado diretamente no QGIS por meio de um script personalizado \u2014 sem depender do ArcGIS Pro.<\/p>\n\n\n\n<p>O QGIS se torna ent\u00e3o um verdadeiro laborat\u00f3rio de an\u00e1lise espacial com IA, onde o usu\u00e1rio pode:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>testar v\u00e1rios modelos (.pth) da comunidade,<\/li>\n\n\n\n<li>adaptar os pr\u00e9-processamentos de acordo com a \u00e1rea (faixa costeira, floresta, urbana&#8230;),<\/li>\n\n\n\n<li>automatizar todo um fluxo por meio de algoritmos de processamento,<\/li>\n\n\n\n<li>e combinar os resultados com outras camadas GIS (vegeta\u00e7\u00e3o, batimetria, ocupa\u00e7\u00e3o do solo&#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=\"Resumo\"><\/span>Resumo<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> (pacote completo)<\/td><td><code>.pth<\/code> ou <code>.pt<\/code> (somente modelo)<\/td><\/tr><tr><td><strong>Interoperabilidade<\/strong><\/td><td>Simples, mas propriet\u00e1ria<\/td><td>Livre e modific\u00e1vel<\/td><\/tr><tr><td><strong>Utiliza\u00e7\u00e3o<\/strong><\/td><td>Ferramentas integradas ArcGIS (\u201cClassify Pixels\u201d, \u201cDetect Objects\u201d<\/td><td>Scripts Processing Python personalizados<\/td><\/tr><tr><td><strong>Personaliza\u00e7\u00e3o<\/strong><\/td><td>Limitada<\/td><td>Total<\/td><\/tr><tr><td><strong>Curva de aprendizagem<\/strong><\/td><td>Mais simples para o usu\u00e1rio final<\/td><td>Mais flex\u00edvel para o desenvolvedor ou pesquisador<\/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=\"Exemplo_pratico_segmentacao_de_corais_a_partir_de_imagens_Sentinel-2_no_QGIS\"><\/span>Exemplo pr\u00e1tico: segmenta\u00e7\u00e3o de corais a partir de imagens Sentinel-2 no QGIS<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Depois de explorar a l\u00f3gica dos modelos profundos e os formatos usados pela ESRI e pelo QGIS, vamos passar a um exemplo concreto: a an\u00e1lise de \u00e1reas de corais a partir de imagens de sat\u00e9lite Sentinel-2.<br>O objetivo \u00e9 distinguir as \u00e1reas marinhas (fundos arenosos, ervas marinhas, corais) das \u00e1reas terrestres ou turvas, usando um modelo U-Net pr\u00e9-treinado no 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=\"Dados_utilizados\"><\/span>Dados utilizados<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>A imagem de entrada prov\u00e9m do Sentinel-2, miss\u00e3o do programa europeu Copernicus.<br>Estas imagens multiespectrais gratuitas oferecem uma resolu\u00e7\u00e3o de 10 a 20 m e cobrem v\u00e1rias bandas no vis\u00edvel e no infravermelho:s gratuites offrent une r\u00e9solution de 10 \u00e0 20 m et couvrent plusieurs bandes dans le visible et l\u2019infrarouge :<\/p>\n\n\n\n<p>FaixaNomeComprimento de onda (nm)Uso principalB2Azul490\u00c1gua, turbidezB3Verde560Vegeta\u00e7\u00e3o, meio marinhoB4Vermelho665Solo, vegeta\u00e7\u00e3o, coraisB8NIR842Diferencia\u00e7\u00e3o terra\/\u00e1guaB11SWIR11610Umidade, areia, nuvens<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Faixa<\/th><th>Nome<\/th><th>Comprimento de onda (nm)<\/th><th>Uso principal<\/th><\/tr><\/thead><tbody><tr><td>B2<\/td><td>Azul<\/td><td>490<\/td><td>\u00c1gua, turbidez<\/td><\/tr><tr><td>B3<\/td><td>Verde<\/td><td>560<\/td><td>Vegeta\u00e7\u00e3o, meio marinho<\/td><\/tr><tr><td>B4<\/td><td>Vermelho<\/td><td>665<\/td><td>Solo, vegeta\u00e7\u00e3o, corais<\/td><\/tr><tr><td>B8<\/td><td>NIR<\/td><td>842<\/td><td>Diferencia\u00e7\u00e3o terra\/\u00e1gua<\/td><\/tr><tr><td>B11<\/td><td>SWIR1<\/td><td>1610<\/td><td>Umidade, areia, nuvens<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>A grade \u00e9 resultado do processamento S2DR3 &#8211; Super-resolu\u00e7\u00e3o Sentinel-2 a 1 m, que permite melhorar a resolu\u00e7\u00e3o de todas as faixas das imagens Sentinel 2 para atingir cerca de 1 m (ver \u201cUsar S2DR3 no Google Colab para o estudo dos corais nas Ilhas Maur\u00edcio\u201d). A imagem utilizada \u00e9 a que serviu de exemplo no artigo citado.<br>O usu\u00e1rio simplesmente carrega o arquivo .tif multiespectral, por exemplo:<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=\"Processamento_no_QGIS\"><\/span>Processamento no QGIS<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>A an\u00e1lise \u00e9 realizada por meio de um algoritmo Python integrado na caixa de ferramentas Processing.<\/p>\n\n\n\n<p>Este script carrega um modelo PyTorch (unet_coraux.pth) e aplica a segmenta\u00e7\u00e3o \u00e0 imagem em v\u00e1rias etapas:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Leitura da trama e normaliza\u00e7\u00e3o das bandas.<br>Os valores s\u00e3o reduzidos a uma escala compat\u00edvel com o treinamento do modelo.<\/li>\n\n\n\n<li>Mascaramento opcional das \u00e1reas terrestres.<br>Um \u00edndice NDWI (Normalized Difference Water Index) \u00e9 calculado para isolar o mar.<br>Os pixels com um valor NDWI alto s\u00e3o considerados marinhos e s\u00e3o processados pelo modelo; os demais s\u00e3o mascarados.<\/li>\n\n\n\n<li>Divis\u00e3o em blocos (patches).<br>A imagem \u00e9 processada em partes para evitar sobrecarga de mem\u00f3ria.<br>Cada bloco \u00e9 analisado de forma independente e, em seguida, os resultados s\u00e3o combinados.<\/li>\n\n\n\n<li>Aplica\u00e7\u00e3o do modelo U-Net<br>O modelo realiza uma segmenta\u00e7\u00e3o pixel a pixel: atribui a cada pixel uma probabilidade de pertencer \u00e0 classe \u201ccoral\u201d ou \u201cn\u00e3o coral\u201d.<br>O resultado \u00e9 uma trama de sa\u00edda que cont\u00e9m os valores de probabilidade ou de classe.<\/li>\n\n\n\n<li>Salvar a trama de sa\u00edda<br>O resultado \u00e9 salvo no formato GeoTIFF (palmar_model_9.tif), pronto para ser sobreposto a outras camadas 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_funcionamento\"><\/span>Modo de funcionamento<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Operacoes_previas\"><\/span>Opera\u00e7\u00f5es pr\u00e9vias<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>Vamos criar um script de processamento QGis. Como pr\u00e9-requisito, \u00e9 necess\u00e1rio 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>Em seguida, devemos baixar o modelo desejado. Para isso, na console python do QGis, insira o seguinte 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>Neste exemplo, salvamos os modelos baixados em um diret\u00f3rio 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=\"Configuracao_do_script_de_processamento\"><\/span>Configura\u00e7\u00e3o do script de processamento<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>Em QGIS \u2192 Caixa de ferramentas de processamento \u2192 Scripts \u2192 Novo 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>Em um pr\u00f3ximo artigo, voc\u00ea encontrar\u00e1 explica\u00e7\u00f5es sobre as diferentes partes do c\u00f3digo.<\/p>\n\n\n\n<p>O script QGIS apresentado aqui permite aplicar modelos de segmenta\u00e7\u00e3o de imagens baseados em U\u2011Net salvos no formato PyTorch (.pth). Ele foi projetado para processar imagens multiespectrais, como as provenientes dos sat\u00e9lites Sentinel\u20112, e adapta automaticamente as faixas utilizadas de acordo com o n\u00famero de canais de entrada esperado pelo modelo. Por exemplo, se o modelo for treinado em imagens RGB, o script selecionar\u00e1 as bandas Vermelha, Verde e Azul; se o modelo esperar mais canais, ele oferecer\u00e1 uma sele\u00e7\u00e3o manual ou utilizar\u00e1 todas as bandas dispon\u00edveis. O c\u00f3digo tamb\u00e9m integra a possibilidade de ocultar \u00e1reas terrestres atrav\u00e9s do c\u00e1lculo do NDWI, o que permite concentrar a segmenta\u00e7\u00e3o em \u00e1reas aqu\u00e1ticas, por exemplo, para identificar corais. Na pr\u00e1tica, qualquer modelo U-Net PyTorch corretamente salvo pode ser carregado e aplicado, desde que a arquitetura e os pesos estejam inclu\u00eddos no arquivo .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=\"Utilizacao\"><\/span>Utiliza\u00e7\u00e3o<span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p>Execute o script. A seguinte janela ser\u00e1 aberta:<\/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>A sele\u00e7\u00e3o manual das faixas s\u00f3 \u00e9 utilizada se o script n\u00e3o conseguir determinar, a partir do modelo, quais as faixas a 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=\"Interpretacao_do_resultado\"><\/span>Interpreta\u00e7\u00e3o do resultado<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>O raster resultante do modelo representa um mapa de probabilidade:<br>os valores pr\u00f3ximos de 1 indicam uma forte presen\u00e7a de corais, enquanto os valores pr\u00f3ximos de 0 correspondem a \u00e1reas sem corais (areia, algas, profundidade, etc.).<\/p>\n\n\n\n<p>Uma simbologia adequada (do azul claro ao vermelho) permite visualizar facilmente a distribui\u00e7\u00e3o espacial das \u00e1reas prov\u00e1veis de corais.<br>Ao combinar este mapa com outros dados (batimetria, substrato, turbidez), torna-se poss\u00edvel estimar a vulnerabilidade ou a degrada\u00e7\u00e3o dos recifes ao longo do tempo.<\/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<p>Vantagens desta abordagem<\/p>\n\n\n\n<p>A integra\u00e7\u00e3o do PyTorch no QGIS abre novas perspetivas para a cartografia ambiental assistida por intelig\u00eancia artificial:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>C\u00f3digo aberto e reproduz\u00edvel: todo o processo pode ser compartilhado, modificado ou adaptado a outras zonas costeiras.<\/li>\n\n\n\n<li>Autonomia local: n\u00e3o h\u00e1 necessidade do ArcGIS Pro nem de licen\u00e7as caras para testar ou aplicar modelos de Deep Learning.<\/li>\n\n\n\n<li>Experimenta\u00e7\u00e3o flex\u00edvel: \u00e9 poss\u00edvel testar outras arquiteturas (SegNet, DeepLabV3, etc.) ou adaptar o pr\u00e9-processamento \u00e0s 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=\"Rumo_a_um_ecossistema_de_modelos_abertos\"><\/span>Rumo a um ecossistema de modelos abertos<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>A longo prazo, poder\u00edamos imaginar uma biblioteca compartilhada de modelos ambientais de c\u00f3digo aberto \u2014 o equivalente livre do formato DLPK \u2014 onde cada .pth seria acompanhado por seu arquivo de descri\u00e7\u00e3o (faixas, normaliza\u00e7\u00e3o, classes).<\/p>\n\n\n\n<p>O QGIS poderia ent\u00e3o oferecer uma interface para importar, testar e documentar esses modelos, facilitando sua reutiliza\u00e7\u00e3o em contextos tropicais, litor\u00e2neos ou florestais.<\/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=\"Conclusao\"><\/span>Conclus\u00e3o<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>O crescimento do Deep Learning marca uma nova etapa na evolu\u00e7\u00e3o da geom\u00e1tica.<\/p>\n\n\n\n<p>Enquanto os tratamentos de imagens cl\u00e1ssicos se baseavam em limites e \u00edndices espectrais, os modelos neuronais agora aprendem a reconhecer formas, texturas e assinaturas complexas diretamente nos pixels.<\/p>\n\n\n\n<p>Gra\u00e7as a ferramentas como o ArcGIS Pro (com seus DLPK) e o QGIS (via PyTorch e scripts personalizados), esse poder se torna acess\u00edvel a todos: pesquisadores, t\u00e9cnicos ou entusiastas da cartografia ambiental.<\/p>\n\n\n\n<p>O exemplo apresentado aqui \u2014 a segmenta\u00e7\u00e3o de corais a partir de imagens Sentinel-2 \u2014 ilustra o potencial dessas abordagens para a an\u00e1lise detalhada de ambientes costeiros e a preserva\u00e7\u00e3o de ecossistemas marinhos.<\/p>\n\n\n\n<p>O desafio n\u00e3o \u00e9 mais apenas t\u00e9cnico, mas tamb\u00e9m coletivo: compartilhar modelos, documentar suas entradas, compartilhar m\u00e9todos e tornar o Deep Learning mais transparente, reproduz\u00edvel e aberto.<\/p>\n\n\n\n<p>O futuro da teledete\u00e7\u00e3o provavelmente ser\u00e1 constru\u00eddo na interse\u00e7\u00e3o desses dois mundos \u2014 engenharia de software e conhecimento do terreno \u2014 para transformar os dados de sat\u00e9lite em verdadeiros indicadores do estado ecol\u00f3gico.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n","protected":false},"excerpt":{"rendered":"<p>O Deep Learning est\u00e1 revolucionando a an\u00e1lise de imagens de sat\u00e9lite. Por muito tempo reservado a grandes laborat\u00f3rios ou softwares propriet\u00e1rios, hoje ele se abre ao mundo livre gra\u00e7as ao PyTorch e ao QGIS. Este artigo&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":[3861],"tags":[3883,3885,2160],"class_list":["post-16042","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-iapt","tag-ia-pt","tag-pytorch-pt","tag-qgis-pt"],"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-4aK","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/posts\/16042","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=16042"}],"version-history":[{"count":0,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/posts\/16042\/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=16042"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/categories?post=16042"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/tags?post=16042"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}