class: center, middle, inverse, title-slide .title[ # Images satellitaires en Haïti : une application aux analyses de risques de catastrophes naturelles en Haïti ] .author[ ### de Marcellis-Warin, N., Theodore, N., Warin, Th. ] .date[ ### March 31, 2023 ] --- class: center, middle, inverse # Contexte de la recherche --- ## Contexte de la recherche 1. Exposition d’Haïti aux risques naturels 2. Vulnérabilité d’Haïti aux catastrophes naturelles 3. Cadre d’action de Sendai pour la réduction des risques de catastrophe (RRC) 2015-2030 4. Essor de l’utilisation des images de télédétection satellitaires et de l’intelligence artificielle dans la gestion des catastrophes naturelle --- class: inverse, center, middle # Table des matières --- 1. Introduction 2. Revue de la littérature 3. Données 4. Analyse 5. Résultats 6. Recherche future et conclusion --- class: inverse, middle, center # 1. Introduction --- ## Introduction 1. Tendance Haussière des catastrophes (changement climatique) 2. Catastrophes naturelles différent de phénomène naturel 3. Exposition de tous les pays aux phénomènes naturels 4. Disparité entre les pays développés et les pays en développement face aux catastrophes naturelles 5. Enjeux lies aux catastrophes naturelles 6. Essor de l’utilisation de la télédétection multispectrale (télédétection faite avec les satellites) dans la gestion des catastrophes naturelles et application des méthodes d’apprentissage automatique dans l’analyse des images de télédétection par satellite. --- ## Question de recherche Comment la télédétection par imagerie satellitaire pourrait-elle contribuer à la gestion des risques liés aux catastrophes naturelles en Haïti ? - L’application des puissants algorithmes d’apprentissage automatique et d’apprentissage profond aux traitements des images de télédétection par satellite pourrait-elle contribuer dans la gestion des risques environnementaux en Haïti ? - La combinaison de l’imagerie satellite et de l’apprentissage automatique pourrait-elle détecter et prédire les catastrophes naturelles en Haïti ? --- class: inverse, middle, center # 2. Revue de la littérature --- ## Revue de la littérature .panelset[ .panel[.panel-name[Tableau 1] | Auteur/Année | Titre | Catastrophe naturelle | Méthode/Modèle | Description | |-------------------------|------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------| | (Noel et al., 2022) | Analyses of 2010 and 2021 Earthquakes that Struck Haiti Using a Deep Learning Network | Tremblement de terre | Réseau d’apprentissage profond (Deep Learning) | Evaluation des dommages causés par les tremblements de terre du 12 janvier 2010 et du 14 Aout 2021 | | (Qin et al., 2021) | Landslide Detection from Open Satellite Imagery Using Distant Domain Transfer Learning. | Glissement de terrain | Modèle AM-DDTL avec une précision de classification de 94 % | Détection des glissements de terrain dans le district de Longgang basé sur des images de télédétection (CHINE) | ] .panel[.panel-name[Tableau 2] | Auteur/Année | Titre | Catastrophe naturelle | Méthode/Modèle | Description | |-------------------------|------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------| | (Gupta & Roy, 2020) | A Hybrid Model based on Fused Features for Detection of Natural Disasters from Satellite Images | Eupriton volcanique / Ourage / Inondation / Tremblement de terre / Tsunami / Feu de fôret | Modèle hybride combinant les caractéristiques extraites par la transformée en ondelettes et l'apprentissage en profondeur [Local Binary Pattern & wavelet image scattering] | Détection des catastrophes naturelles à partir d'images satellites basées sur des caractéristiques fusionnées | | (Scrivani et al., 2014) | An approach based on satellite image time series mining to identify region susceptible to desertification. | Désertification | Clustering algorithm | Identifier des zones potentielles susceptibles d'un processus de désertification (BRESIL) | ] ] --- class: inverse, middle, center # 3. Données --- .panelset[ .panel[.panel-name[Données Raster - code] Nous prenons des données de République dominicaine: ```r # long lat aoi <- matrix(data = c(22.85, 45.93, # Upper left corner 22.95, 45.93, # Upper right corner 22.95, 45.85, # Bottom right corner 22.85, 45.85, # Bottom left corner 22.85, 45.93), # Upper left corner - closure ncol = 2, byrow = TRUE) set_aoi(aoi) view_aoi() ``` ] .panel[.panel-name[Données Raster - résultats] Nous prenons des données de République dominicaine:
] ] --- .panelset[ .panel[.panel-name[Collecte des images] - Nous collectons les données sur Sentinel - le fichier de données est de la taille 1663, 34. - Nous gardons seulement les données Level-2A et cloudcov inférieur à 1, c'est à dire des données très peu polluées - le fichier final est donc 28, 34 (observations and variables). ] .panel[.panel-name[Carte] ``` ## Downloading previews... ## [Preview 1/1] Downloading preview 'S2A_MSIL2A_20220722T092041_N0400_R093_T34TFR_20220722T134859' to './data_previews/sentinel-2/S2A_MSIL2A_20220722T092041_N0400_R093_T34TFR_20220722T134859_preview.jpg'... ## ## Georeferncing previews... ## [Preview 1/1] Converting './data_previews/sentinel-2/S2A_MSIL2A_20220722T092041_N0400_R093_T34TFR_20220722T134859_preview.jpg' into './data_previews/sentinel-2/S2A_MSIL2A_20220722T092041_N0400_R093_T34TFR_20220722T134859_preview.tif'... ## Columns added to records: 'preview_file_jpg', 'preview_file' ## Composing preview map... ```
] .panel[.panel-name[Carte RGB] ``` ## [1] TRUE ``` ``` ## [1] TRUE ```
] ] --- .panelset[ .panel[.panel-name[Préparation des données] - Les bandes de 20 m ont été rééchantillonnées à 10 m. Le rééchantillonnage est nécessaire car sinon on ne peut pas construire un objet raster "brique" à utiliser pour les prédictions. - Centrage et normalisation des données - Les réseaux de neurones nécessitent une normalisation. - Ce processus implique de soustraire la moyenne et de diviser par l'écart type pour chaque variable/caractéristique/bande. ] .panel[.panel-name[Polygones vers points]
] .panel[.panel-name[De points à prédicteurs] ![](presentation_risques_files/figure-html/unnamed-chunk-15-1.png)<!-- --> ] ] --- class: inverse, middle, center # 4. Modèles --- ## Choix de modèles Pour la reconnaissance des images, nous allons prendre les paramètres du meilleur des trois modèles: - forêt aléatoire - SVM - réseaux neuronaux --- ## Diviser en train et tester - L'ensemble de données de formation sera utilisé pour le réglage du modèle par validation croisée et recherche de grille. - Ensuite, nous utiliserons les modèles finaux réglés sur l'ensemble de données de test pour créer des matrices de confusion. ``` ## ## agriculture construction forest pasture water ## 1141 691 946 590 296 ``` ``` ## ## agriculture construction forest pasture water ## 489 296 405 252 126 ``` --- ## Base pour tous les modèles - L'ensemble de données est utilisé pour effectuer la validation croisée (CV) et la recherche de grille pour le réglage du modèle. Une fois que les paramètres optimaux/meilleurs ont été trouvés, un modèle final est adapté à l'ensemble des données d'apprentissage à l'aide de ces résultats. - Les indices CV doivent correspondre lors de la comparaison de plusieurs modèles, afin d'obtenir une comparaison équitable. Par conséquent, `folds` passera à l'argument `trainControl` pour chaque type de modèle. - Dans l'ensemble, cela est important pour pouvoir comparer les différents types de modèles. --- .panelset[ .panel[.panel-name[Forêt aléatoire] Le réglage ici a été effectué via l'argument `mtry`, qui peut varier de 2 jusqu'au nombre total de prédicteurs (bandes) utilisés (ici, 11). Ainsi, l'optimisation a été effectuée via la validation croisée et la recherche de grille . - Le modèle final/optimal, stocké dans `model_rf,` correspond à `mtry` = 8 avec la plus grande précision = NA. ] .panel[.panel-name[Résultats] ``` ## user system elapsed ## 3.608 0.359 19.748 ``` <img src="presentation_risques_files/figure-html/unnamed-chunk-16-1.png" width="50%" style="display: block; margin: auto;" /> ] .panel[.panel-name[Interprétation] - **La précision** semble vraiment élevée, bien meilleure que le modèle "sans taux d'information" qui prédit toujours la classe dominante (ici, le premier niveau du facteur `classe` - agriculture); - La **sensibilité** (rappel) fait référence au **taux de vrais positifs** (le modèle détecte correctement la classe) ; - La **spécificité** est le **vrai taux négatif** (le modèle rejette correctement la classe) ] .panel[.panel-name[Matrice de confusion 1] ``` ## Confusion Matrix and Statistics ## ## Reference ## Prediction agriculture construction forest pasture water ## agriculture 483 7 0 7 0 ## construction 2 289 0 0 0 ## forest 2 0 405 4 1 ## pasture 2 0 0 241 0 ## water 0 0 0 0 125 ## ## Overall Statistics ## ## Accuracy : 0.9841 ## 95% CI : (0.9766, 0.9897) ## No Information Rate : 0.3119 ## P-Value [Acc > NIR] : < 2.2e-16 ## ## Kappa : 0.9792 ## ## Mcnemar's Test P-Value : NA ## ## Statistics by Class: ## ## Class: agriculture Class: construction Class: forest ## Sensitivity 0.9877 0.9764 1.0000 ## Specificity 0.9870 0.9984 0.9940 ## Pos Pred Value 0.9718 0.9931 0.9830 ## Neg Pred Value 0.9944 0.9945 1.0000 ## Prevalence 0.3119 0.1888 0.2583 ## Detection Rate 0.3080 0.1843 0.2583 ## Detection Prevalence 0.3170 0.1856 0.2628 ## Balanced Accuracy 0.9874 0.9874 0.9970 ## Class: pasture Class: water ## Sensitivity 0.9563 0.99206 ## Specificity 0.9985 1.00000 ## Pos Pred Value 0.9918 1.00000 ## Neg Pred Value 0.9917 0.99931 ## Prevalence 0.1607 0.08036 ## Detection Rate 0.1537 0.07972 ## Detection Prevalence 0.1550 0.07972 ## Balanced Accuracy 0.9774 0.99603 ``` ] .panel[.panel-name[Matrice confusion 2] - Vous pouvez également obtenir une matrice de confusion pour le modèle final en utilisant l'ensemble des données de train. Ceci est différent de l'approche ci-dessus. Cependant, vous souhaiterez généralement voir une matrice de confusion basée sur l'ensemble de données de test. Dans les deux cas, on peut voir que le modèle est le plus confus quant à la distinction entre les classes d'utilisation des terres de pâturage et d'agriculture. En revanche, le modèle "semble super certain" lors de la classification de l'eau. ] .panel[.panel-name[Résultats] ``` ## ## Call: ## randomForest(x = x, y = y, mtry = param$mtry, importance = TRUE, allowParallel = TRUE) ## Type of random forest: classification ## Number of trees: 500 ## No. of variables tried at each split: 8 ## ## OOB estimate of error rate: 1.56% ## Confusion matrix: ## agriculture construction forest pasture water class.error ## agriculture 1127 2 4 8 0 0.01226994 ## construction 14 677 0 0 0 0.02026049 ## forest 9 0 932 5 0 0.01479915 ## pasture 5 0 10 575 0 0.02542373 ## water 0 0 0 0 296 0.00000000 ``` ] .panel[.panel-name[Prédicteurs 1]
] .panel[.panel-name[Prédicteurs 2]
] .panel[.panel-name[Prédicteurs 3 ] ![](presentation_risques_files/figure-html/unnamed-chunk-20-1.png)<!-- --> ] ] --- .panelset[ .panel[.panel-name[SVM] - Machine à vecteur de support régularisée L2 (double) avec noyau linéaire. ] .panel[.panel-name[Matrice de confusion 1] ``` ## user system elapsed ## 0.644 0.111 16.060 ``` <img src="presentation_risques_files/figure-html/unnamed-chunk-21-1.png" width="50%" style="display: block; margin: auto;" /> ] .panel[.panel-name[Matrice de confusion 2] ``` ## Confusion Matrix and Statistics ## ## Reference ## Prediction agriculture construction forest pasture water ## agriculture 472 8 0 18 0 ## construction 6 286 0 0 0 ## forest 2 1 404 1 2 ## pasture 9 1 1 233 0 ## water 0 0 0 0 124 ## ## Overall Statistics ## ## Accuracy : 0.9688 ## 95% CI : (0.9589, 0.9768) ## No Information Rate : 0.3119 ## P-Value [Acc > NIR] : < 2.2e-16 ## ## Kappa : 0.9593 ## ## Mcnemar's Test P-Value : NA ## ## Statistics by Class: ## ## Class: agriculture Class: construction Class: forest ## Sensitivity 0.9652 0.9662 0.9975 ## Specificity 0.9759 0.9953 0.9948 ## Pos Pred Value 0.9478 0.9795 0.9854 ## Neg Pred Value 0.9841 0.9922 0.9991 ## Prevalence 0.3119 0.1888 0.2583 ## Detection Rate 0.3010 0.1824 0.2577 ## Detection Prevalence 0.3176 0.1862 0.2615 ## Balanced Accuracy 0.9706 0.9807 0.9962 ## Class: pasture Class: water ## Sensitivity 0.9246 0.98413 ## Specificity 0.9916 1.00000 ## Pos Pred Value 0.9549 1.00000 ## Neg Pred Value 0.9856 0.99861 ## Prevalence 0.1607 0.08036 ## Detection Rate 0.1486 0.07908 ## Detection Prevalence 0.1556 0.07908 ## Balanced Accuracy 0.9581 0.99206 ``` ] ] --- .panelset[ .panel[.panel-name[Réseaux neuronaux] ``` ## # weights: 245 ## initial value 11096.609811 ## iter 10 value 1263.270830 ## iter 20 value 320.267974 ## iter 30 value 110.425716 ## iter 40 value 59.210373 ## iter 50 value 38.276167 ## iter 60 value 34.281204 ## iter 70 value 32.265556 ## iter 80 value 30.941623 ## iter 90 value 30.363548 ## iter 100 value 29.870011 ## iter 110 value 29.383020 ## iter 120 value 29.086305 ## iter 130 value 28.809274 ## iter 140 value 28.597146 ## iter 150 value 28.482670 ## iter 160 value 28.398691 ## iter 170 value 28.324374 ## iter 180 value 28.240997 ## iter 190 value 28.159566 ## iter 200 value 28.099439 ## iter 210 value 28.045517 ## iter 220 value 27.990300 ## iter 230 value 27.920579 ## iter 240 value 27.843964 ## iter 250 value 27.783127 ## iter 260 value 27.753913 ## iter 270 value 27.715663 ## iter 280 value 27.685069 ## iter 290 value 27.658917 ## iter 300 value 27.639776 ## iter 310 value 27.623300 ## iter 320 value 27.609914 ## iter 330 value 27.593739 ## iter 340 value 27.566230 ## iter 350 value 27.544702 ## iter 360 value 27.500714 ## iter 370 value 27.406819 ## iter 380 value 27.382549 ## iter 390 value 27.371658 ## iter 400 value 27.356837 ## iter 410 value 27.325557 ## iter 420 value 27.294497 ## iter 430 value 27.277397 ## iter 440 value 27.265587 ## iter 450 value 27.256363 ## iter 460 value 27.245143 ## iter 470 value 27.235062 ## iter 480 value 27.227831 ## iter 490 value 27.222070 ## iter 500 value 27.207633 ## iter 510 value 27.179092 ## iter 520 value 27.161930 ## iter 530 value 27.155770 ## iter 540 value 27.154581 ## iter 550 value 27.154346 ## iter 560 value 27.154301 ## iter 570 value 27.154292 ## iter 570 value 27.154292 ## iter 570 value 27.154292 ## final value 27.154292 ## converged ``` ] .panel[.panel-name[Matrice de confusion 1] ``` ## user system elapsed ## 4.596 0.217 21.475 ``` <img src="presentation_risques_files/figure-html/unnamed-chunk-23-1.png" width="50%" style="display: block; margin: auto;" /> ] .panel[.panel-name[Matrice de confusion 2] ``` ## Confusion Matrix and Statistics ## ## Reference ## Prediction agriculture construction forest pasture water ## agriculture 486 2 1 0 0 ## construction 1 294 0 0 0 ## forest 0 0 404 1 0 ## pasture 2 0 0 251 0 ## water 0 0 0 0 126 ## ## Overall Statistics ## ## Accuracy : 0.9955 ## 95% CI : (0.9908, 0.9982) ## No Information Rate : 0.3119 ## P-Value [Acc > NIR] : < 2.2e-16 ## ## Kappa : 0.9942 ## ## Mcnemar's Test P-Value : NA ## ## Statistics by Class: ## ## Class: agriculture Class: construction Class: forest ## Sensitivity 0.9939 0.9932 0.9975 ## Specificity 0.9972 0.9992 0.9991 ## Pos Pred Value 0.9939 0.9966 0.9975 ## Neg Pred Value 0.9972 0.9984 0.9991 ## Prevalence 0.3119 0.1888 0.2583 ## Detection Rate 0.3099 0.1875 0.2577 ## Detection Prevalence 0.3119 0.1881 0.2583 ## Balanced Accuracy 0.9955 0.9962 0.9983 ## Class: pasture Class: water ## Sensitivity 0.9960 1.00000 ## Specificity 0.9985 1.00000 ## Pos Pred Value 0.9921 1.00000 ## Neg Pred Value 0.9992 1.00000 ## Prevalence 0.1607 0.08036 ## Detection Rate 0.1601 0.08036 ## Detection Prevalence 0.1614 0.08036 ## Balanced Accuracy 0.9973 1.00000 ``` ] .panel[.panel-name[Prédicteurs] <img src="presentation_risques_files/figure-html/nnet-importance-1.png" width="50%" style="display: block; margin: auto;" /> ] .panel[.panel-name[Diagramme] ![](presentation_risques_files/figure-html/unnamed-chunk-25-1.png)<!-- --> ] ] --- .panelset[ .panel[.panel-name[Model comparison] - Nous comparons les trois types de modèles en utilisant le cadre défini par le package `caret` via la fonction `resamples()` tant que les indices de train des observations correspondent (ce que nous nous sommes assurés qu'ils font en définissant des graines spécifiques). - Ici, nous comparons les résultats obtenus via la validation croisée sur le jeu de données du train lorsque nous avons ajusté les modèles. - En général, le modèle avec la précision médiane la plus élevée est le "gagnant", ainsi qu'une plage plus petite entre la précision min et max. ] .panel[.panel-name[Visuel 1] ![](presentation_risques_files/figure-html/unnamed-chunk-26-1.png)<!-- --> ] .panel[.panel-name[Visuel 2] ``` ## [1] "Accuracy" "Kappa" "Mean_Balanced_Accuracy" ## [4] "Mean_Detection_Rate" "Mean_F1" "Mean_Neg_Pred_Value" ## [7] "Mean_Pos_Pred_Value" "Mean_Precision" "Mean_Recall" ## [10] "Mean_Sensitivity" "Mean_Specificity" ``` ] .panel[.panel-name[t-test] ``` ## ## Call: ## summary.diff.resamples(object = .) ## ## p-value adjustment: bonferroni ## Upper diagonal: estimates of the difference ## Lower diagonal: p-value for H0: difference = 0 ## ## Accuracy ## rf svm nnet ## rf -0.03136 -0.04825 ## svm 3.478e-07 -0.01689 ## nnet 1.403e-07 2.355e-06 ``` ] .panel[.panel-name[Interprétation] - Les tests `\(t\)` appariés avec corrections multi-tests de Bonferroni sur les p-values montrent qu'il existe des différences significatives entre le modèle de réseau de neurones et les deux autres, alors qu'il n'y a pas de différences significatives entre les modèles de forêt aléatoire et SVM. - Dans notre cas, nous pouvons choisir le modèle de réseau de neurones comme le "meilleur" type de modèle. Cependant, les différences sont vraiment faibles entre les précisions. Le réseau de neurones a une précision légèrement meilleure que le modèle de forêt aléatoire, seulement par 4.83%. ] ] --- ## Temps système ``` ## user system elapsed ## 24.404 0.387 24.792 ``` ---
``` ## class id hex ## 1: agriculture 1 #ff7f00 ## 2: construction 2 #e41a1c ## 3: forest 3 #4daf4a ## 4: pasture 4 #984ea3 ## 5: water 5 #377eb8 ``` --- class: inverse, middle, center # 5. Résultats --- ## Résultats --- class: inverse, middle, center # 6. Recherche future et conclusions --- # Recherche future et conclusions L’imagerie des drones est prochainement envisagée dans d’Haiti --- class: inverse, middle, center # Merci! 6. Recherche future et conclusion