{"id":1098691,"date":"2020-12-29T02:18:29","date_gmt":"2020-12-29T10:18:29","guid":{"rendered":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=1098691"},"modified":"2021-04-30T00:25:33","modified_gmt":"2021-04-30T07:25:33","slug":"sar-to-rgb-translation-using-cyclegan","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/imagery\/sar-to-rgb-translation-using-cyclegan","title":{"rendered":"SAR to RGB Translation using CycleGAN"},"author":65681,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"_searchwp_excluded":""},"categories":[738191,430042,22931],"tags":[186132,758081,35661,758071],"industry":[],"product":[36841,36561],"class_list":["post-1098691","blog","type-blog","status-publish","format-standard","hentry","category-developers","category-education","category-imagery","tag-deep-learning","tag-image-translation","tag-machine-learning","tag-sar","product-api-python","product-arcgis-pro"],"acf":{"short_description":"An overview of Synthetic-aperture Radar (SAR) to RGB image translation using the recently implemented CycleGAN model in the ArcGIS API for Python","flexible_content":[{"acf_fc_layout":"content","content":"<p>This blog will provide an overview of Synthetic-Aperture Radar (SAR) to RGB image translation using the recently implemented CycleGAN model in the <a href=\"https:\/\/developers.arcgis.com\/python\/\">ArcGIS API for Python<\/a>.<\/p>\n<h2>Motivation<\/h2>\n<p>Consider a scenario in which a cloudy day is preventing the use of optical imagery for earth observation. Synthetic-aperture Radar (SAR) which is an active data collection type provides an alternative method of image capture that can penetrate clouds and produce the desired ground imagery.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":1099231,"id":1099231,"title":"SAR_RGB","filename":"SAR_RGB.gif","filesize":1242778,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/SAR_RGB.gif","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/imagery\/sar-to-rgb-translation-using-cyclegan\/sar_rgb","alt":"","author":"65681","description":"","caption":"SAR vs Optical image on a cloudy day","name":"sar_rgb","status":"inherit","uploaded_to":1098691,"date":"2020-12-29 09:58:19","modified":"2020-12-29 09:58:32","menu_order":0,"mime_type":"image\/gif","type":"image","subtype":"gif","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":680,"height":382,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/SAR_RGB-213x200.gif","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/SAR_RGB.gif","medium-width":464,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/SAR_RGB.gif","medium_large-width":680,"medium_large-height":382,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/SAR_RGB.gif","large-width":680,"large-height":382,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/SAR_RGB.gif","1536x1536-width":680,"1536x1536-height":382,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/SAR_RGB.gif","2048x2048-width":680,"2048x2048-height":382,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/SAR_RGB.gif","card_image-width":680,"card_image-height":382,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/SAR_RGB.gif","wide_image-width":680,"wide_image-height":382}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>While this application of SAR is obviously useful, it is a complex technology with its own hurdles for those unfamiliar with it. Fortunately, deep learning image translation models allow users to convert SAR images to a more easily understandable optical RGB image.<\/p>\n<p>One such model is CycleGAN, which has recently been added to the <a href=\"https:\/\/developers.arcgis.com\/python\/guide\/geospatial-deep-learning\/\">arcgis.learn<\/a> module of ArcGIS API for Python. The rest of this blog will go through the steps showing how the model can be used.<\/p>\n<p class=\"graf graf--p\">It is important to note that the CycleGAN model expects unpaired data and it does not have any information on mapping SAR to RGB pixels, so it may map dark pixels in the source image to darker shaded pixels in the other image which may not be right always (especially in agricultural land areas). If this kind of problem is faced where results are mismatched because of wrong mapping,\u00a0<a class=\"cs id\" href=\"https:\/\/developers.arcgis.com\/python\/guide\/how-pix2pix-works\/\" rel=\"noopener nofollow\">Pix2Pix\u00a0<\/a>model which expects paired data can be used.<\/p>\n<h2>Data and preprocessing<\/h2>\n<p>The sample data we will be using is a single band (HH) Capella Space\u2019s simulated SAR imagery which we received in tiff format and optical RGB imagery for Rotterdam in the Netherlands. We have converted the single band SAR imagery to 8 bit unsigned, 3 bands raster using the <a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/help\/analysis\/raster-functions\/extract-bands-function.htm\"><em>Extract Bands<\/em><\/a> raster function in ArcGIS Pro, which will allow us to export 3 band JPEG images for data preparation.<\/p>\n<h2>Exporting training samples<\/h2>\n<p>Deep learning models need training data to learn from, so we will use the <a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/tool-reference\/image-analyst\/export-training-data-for-deep-learning.htm\">Export Training Data for Deep Learning<\/a> tool in ArcGIS Pro to export appropriate training samples from our data. ArcGIS Pro has recently added support for exporting data in the <em>Export Tiles<\/em> format, which we will be using for this task. This newly added format allows you to export image chips of a defined size without requiring any labels. With this process, we exported 3087 chips, of which we used approximately 90% (2773) images for training and the remaining 308 images for validating our model.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":1099141,"id":1099141,"title":"exported_chips","filename":"exported_chips-1.png","filesize":217950,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/exported_chips-1.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/imagery\/sar-to-rgb-translation-using-cyclegan\/exported_chips-2","alt":"","author":"65681","description":"","caption":"Exported chips using Export Tiles format","name":"exported_chips-2","status":"inherit","uploaded_to":1098691,"date":"2020-12-29 07:37:14","modified":"2020-12-29 07:37:24","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":763,"height":420,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/exported_chips-1-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/exported_chips-1.png","medium-width":464,"medium-height":255,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/exported_chips-1.png","medium_large-width":763,"medium_large-height":420,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/exported_chips-1.png","large-width":763,"large-height":420,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/exported_chips-1.png","1536x1536-width":763,"1536x1536-height":420,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/exported_chips-1.png","2048x2048-width":763,"2048x2048-height":420,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/exported_chips-1.png","card_image-width":763,"card_image-height":420,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/exported_chips-1.png","wide_image-width":763,"wide_image-height":420}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<h2>Training the SAR to RGB image translation model<\/h2>\n<p>After exporting the training data, we used <a href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-enterprise\/analytics\/introducing-arcgis-notebooks\/\">ArcGIS Notebooks<\/a> and the <a href=\"https:\/\/developers.arcgis.com\/python\/guide\/geospatial-deep-learning\/\">arcgis.learn<\/a> module in the Python API to train the model.<\/p>\n<h3>Data preparation<\/h3>\n<p>Before we can begin to train our model, we first need to prepare our data. To do this, we used the <em>prepare_data() <\/em>function available in the API and passed the <em>dataset_type<\/em> parameter as \u201cCycleGAN\u201d. The <em>prepare_data()<\/em> function prepares a data object from the training data that we exported in the previous step. This data object consists of training and validation data sets with the specified transformations, chip size, batch size, split percentage, etc.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":1106541,"id":1106541,"title":"prepare_data","filename":"prepare_data-1.png","filesize":278591,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/prepare_data-1.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/imagery\/sar-to-rgb-translation-using-cyclegan\/prepare_data-2","alt":"","author":"65681","description":"","caption":"Data Preparation","name":"prepare_data-2","status":"inherit","uploaded_to":1098691,"date":"2021-01-08 06:41:20","modified":"2021-01-08 06:42:01","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":1360,"height":754,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/prepare_data-1-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/prepare_data-1.png","medium-width":464,"medium-height":257,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/prepare_data-1.png","medium_large-width":768,"medium_large-height":426,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/prepare_data-1.png","large-width":1360,"large-height":754,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/prepare_data-1.png","1536x1536-width":1360,"1536x1536-height":754,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/prepare_data-1.png","2048x2048-width":1360,"2048x2048-height":754,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/prepare_data-1-826x458.png","card_image-width":826,"card_image-height":458,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/prepare_data-1.png","wide_image-width":1360,"wide_image-height":754}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<h3>Model Training<\/h3>\n<p>After we prepared the data, we then began the process of training our model using the <em>fit()<\/em> method in the API.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":1098951,"id":1098951,"title":"fit","filename":"fit.png","filesize":45956,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/fit.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/imagery\/sar-to-rgb-translation-using-cyclegan\/fit","alt":"","author":"65681","description":"","caption":"Model Fitting","name":"fit","status":"inherit","uploaded_to":1098691,"date":"2020-12-29 06:13:36","modified":"2020-12-29 06:13:55","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":1094,"height":1125,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/fit-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/fit.png","medium-width":254,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/fit.png","medium_large-width":768,"medium_large-height":790,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/fit.png","large-width":1050,"large-height":1080,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/fit.png","1536x1536-width":1094,"1536x1536-height":1125,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/fit.png","2048x2048-width":1094,"2048x2048-height":1125,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/fit-452x465.png","card_image-width":452,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/fit-1050x1080.png","wide_image-width":1050,"wide_image-height":1080}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>From the statistics in the figure above, we can see that our validation loss continues to decrease with each epoch of training. The resulting validation loss of our initial 25 epochs still left room for improvement, so we trained the model for an additional 25 epochs.<\/p>\n<h2>Visualize the results<\/h2>\n<p>Next, we will validate the model by visualizing a few samples from the validation data set we prepared by simply calling <em>show_results() <\/em>using the API.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":1106551,"id":1106551,"title":"show_results","filename":"show_results.png","filesize":370698,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/show_results.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/imagery\/sar-to-rgb-translation-using-cyclegan\/show_results","alt":"","author":"65681","description":"Results achieved from the model after 50 epochs","caption":"Results achieved after training the model for 50 epochs","name":"show_results","status":"inherit","uploaded_to":1098691,"date":"2021-01-08 06:42:33","modified":"2021-01-08 06:47:18","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":1332,"height":992,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/show_results-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/show_results.png","medium-width":350,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/show_results.png","medium_large-width":768,"medium_large-height":572,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/show_results.png","large-width":1332,"large-height":992,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/show_results.png","1536x1536-width":1332,"1536x1536-height":992,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/show_results.png","2048x2048-width":1332,"2048x2048-height":992,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/show_results-624x465.png","card_image-width":624,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/show_results.png","wide_image-width":1332,"wide_image-height":992}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"image","image":{"ID":1099251,"id":1099251,"title":"Result_compressed","filename":"Result_compressed.gif","filesize":733972,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/Result_compressed.gif","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/imagery\/sar-to-rgb-translation-using-cyclegan\/result_compressed","alt":"","author":"65681","description":"","caption":"Optical imagery vs translated imagery using the model we trained","name":"result_compressed","status":"inherit","uploaded_to":1098691,"date":"2020-12-29 10:01:20","modified":"2020-12-29 10:01:37","menu_order":0,"mime_type":"image\/gif","type":"image","subtype":"gif","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":680,"height":382,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/Result_compressed-213x200.gif","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/Result_compressed.gif","medium-width":464,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/Result_compressed.gif","medium_large-width":680,"medium_large-height":382,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/Result_compressed.gif","large-width":680,"large-height":382,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/Result_compressed.gif","1536x1536-width":680,"1536x1536-height":382,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/Result_compressed.gif","2048x2048-width":680,"2048x2048-height":382,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/Result_compressed.gif","card_image-width":680,"card_image-height":382,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/Result_compressed.gif","wide_image-width":680,"wide_image-height":382}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>After training for 50 epochs, the results in the screenshot above indicate that our model was trained well and can realistically convert SAR to RGB images, as well as RGB images to SAR.<\/p>\n<h2>Inferencing<\/h2>\n<p>Once we were satisfied with the results of our trained model, we performed inferencing on a larger scale to convert SAR imagery to RGB. We did this by using the <a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/tool-reference\/image-analyst\/classify-pixels-using-deep-learning.htm\"><em>Classify Pixels using Deep Learning<\/em><\/a> tool available in ArcGIS Pro.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":1099041,"id":1099041,"title":"classify","filename":"classify.png","filesize":56162,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/classify.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/imagery\/sar-to-rgb-translation-using-cyclegan\/classify","alt":"","author":"65681","description":"","caption":"Classify pixels using deep learning tool in ArcGIS Pro","name":"classify","status":"inherit","uploaded_to":1098691,"date":"2020-12-29 06:51:48","modified":"2020-12-29 06:52:06","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":726,"height":676,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/classify-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/classify.png","medium-width":280,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/classify.png","medium_large-width":726,"medium_large-height":676,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/classify.png","large-width":726,"large-height":676,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/classify.png","1536x1536-width":726,"1536x1536-height":676,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/classify.png","2048x2048-width":726,"2048x2048-height":676,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/classify-499x465.png","card_image-width":499,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/classify.png","wide_image-width":726,"wide_image-height":676}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>The resulting inferenced imagery is presented in the figure below. You can observe that the SAR imagery is now more interpretable by humans after being translated to optical imagery using the model.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":1099161,"id":1099161,"title":"Inferenced Result","filename":"Inferenced-Result.png","filesize":170481,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/Inferenced-Result.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/imagery\/sar-to-rgb-translation-using-cyclegan\/inferenced-result","alt":"","author":"65681","description":"","caption":"SAR to RGB image translated using the process","name":"inferenced-result","status":"inherit","uploaded_to":1098691,"date":"2020-12-29 07:41:22","modified":"2020-12-29 07:41:32","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":604,"height":337,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/Inferenced-Result-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/Inferenced-Result.png","medium-width":464,"medium-height":259,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/Inferenced-Result.png","medium_large-width":604,"medium_large-height":337,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/Inferenced-Result.png","large-width":604,"large-height":337,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/Inferenced-Result.png","1536x1536-width":604,"1536x1536-height":337,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/Inferenced-Result.png","2048x2048-width":604,"2048x2048-height":337,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/Inferenced-Result.png","card_image-width":604,"card_image-height":337,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/Inferenced-Result.png","wide_image-width":604,"wide_image-height":337}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<h2>Conclusion<\/h2>\n<p>In this post, we have seen a practical application of using generative deep learning to convert Synthetic-aperture Radar (SAR) imagery to optical RGB imagery. This is made possible through the image-to-image translation models like CycleGAN in the <u><a href=\"https:\/\/developers.arcgis.com\/python\/guide\/geospatial-deep-learning\/\">arcgis.learn<\/a><\/u> module of ArcGIS API for Python.<\/p>\n<p>Earth observation is an important, yet challenging task, especially on cloudy days. SAR to RGB image translation using models like CycleGAN can be a great tool to overcome the limitations of optical imagery. The exercise shows how generative deep learning models can help us reap the benefits of SAR imagery even on cloudy days.<\/p>\n"},{"acf_fc_layout":"content","content":"<h2>Acknowledgment<\/h2>\n<div>We wish to acknowledge Capella Space for making the SAR imagery available for this study. Capella has <u><a title=\"https:\/\/www.capellaspace.com\/capella-unveils-worlds-highest-resolution-commercial-sar-imagery\/\" href=\"https:\/\/www.capellaspace.com\/capella-unveils-worlds-highest-resolution-commercial-sar-imagery\/\" target=\"_blank\" rel=\"noreferrer noopener\">recently unveiled<\/a><\/u> the world\u2019s highest-resolution commercial SAR imagery that allows us to monitor our planet in all-weather and in all-light conditions.<\/div>\n"}],"authors":[{"ID":65681,"user_firstname":"Guneet","user_lastname":"Mutreja","nickname":"gmutreja@esri.com_esriinc","user_nicename":"gmutrejaesri-com_esriinc","display_name":"Guneet Mutreja","user_email":"gmutreja@esri.com","user_url":"","user_registered":"2020-07-17 07:08:26","user_description":"Product Engineer at Esri R&amp;D Center in New Delhi. Believer in the fact that Geospatial technology together with AI can solve the world's biggest problems.","user_avatar":"<img data-del=\"avatar\" src='https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/01\/coverPhoto_resized-scaled-e1609734243292-213x187.jpg' class='avatar pp-user-avatar avatar-96 photo ' height='96' width='96'\/>"},{"ID":6911,"user_firstname":"Rohit","user_lastname":"Singh","nickname":"Rohit Singh","user_nicename":"rsinghesri-com","display_name":"Rohit Singh","user_email":"rsingh@esri.com","user_url":"","user_registered":"2018-03-02 00:19:00","user_description":"Rohit Singh is Director of Esri\u2019s R&amp;D Center in New Delhi, leading the design and development of Geospatial AI capabilities across the ArcGIS platform. He has played a key role in the development of ArcGIS API for Python, ArcGIS Java Engine API, and the Linux enablement of ArcGIS. An alumnus of IIT Kharagpur, Rohit holds an MS in Computer Science with specialization in AI from Georgia Tech.","user_avatar":"<img data-del=\"avatar\" src='https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/RohitSingh_AISummit2025-213x200.jpeg' class='avatar pp-user-avatar avatar-96 photo ' height='96' width='96'\/>"}],"related_articles":"","card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/card-3.png","wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/banner_3_resized_compressed.jpg"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>SAR to RGB Translation using CycleGAN<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/imagery\/sar-to-rgb-translation-using-cyclegan\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SAR to RGB Translation using CycleGAN\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/imagery\/sar-to-rgb-translation-using-cyclegan\" \/>\n<meta property=\"og:site_name\" content=\"ArcGIS Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/esrigis\/\" \/>\n<meta property=\"article:modified_time\" content=\"2021-04-30T07:25:33+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@ESRI\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/imagery\/sar-to-rgb-translation-using-cyclegan#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/imagery\/sar-to-rgb-translation-using-cyclegan\"},\"author\":{\"name\":\"Guneet Mutreja\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/86342e15b4e8173a11bd87585a4a0e49\"},\"headline\":\"SAR to RGB Translation using CycleGAN\",\"datePublished\":\"2020-12-29T10:18:29+00:00\",\"dateModified\":\"2021-04-30T07:25:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/imagery\/sar-to-rgb-translation-using-cyclegan\"},\"wordCount\":6,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"keywords\":[\"deep learning\",\"Image Translation\",\"machine learning\",\"SAR\"],\"articleSection\":[\"Developers\",\"Education\",\"Imagery &amp; Remote Sensing\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/imagery\/sar-to-rgb-translation-using-cyclegan#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/imagery\/sar-to-rgb-translation-using-cyclegan\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/imagery\/sar-to-rgb-translation-using-cyclegan\",\"name\":\"SAR to RGB Translation using CycleGAN\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2020-12-29T10:18:29+00:00\",\"dateModified\":\"2021-04-30T07:25:33+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/imagery\/sar-to-rgb-translation-using-cyclegan#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/imagery\/sar-to-rgb-translation-using-cyclegan\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/imagery\/sar-to-rgb-translation-using-cyclegan#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SAR to RGB Translation using CycleGAN\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"name\":\"ArcGIS Blog\",\"description\":\"Get insider info from Esri product teams\",\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\",\"name\":\"Esri\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"width\":400,\"height\":400,\"caption\":\"Esri\"},\"image\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/esrigis\/\",\"https:\/\/x.com\/ESRI\",\"https:\/\/www.linkedin.com\/company\/5311\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/86342e15b4e8173a11bd87585a4a0e49\",\"name\":\"Guneet Mutreja\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/01\/coverPhoto_resized-scaled-e1609734243292-213x187.jpg\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/01\/coverPhoto_resized-scaled-e1609734243292-213x187.jpg\",\"caption\":\"Guneet Mutreja\"},\"description\":\"Product Engineer at Esri R&amp;D Center in New Delhi. Believer in the fact that Geospatial technology together with AI can solve the world's biggest problems.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/guneet-mutreja-a3ab5aa4\/\",\"https:\/\/x.com\/GuneetMutreja\"],\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/author\/gmutrejaesri-com_esriinc\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"SAR to RGB Translation using CycleGAN","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/imagery\/sar-to-rgb-translation-using-cyclegan","og_locale":"en_US","og_type":"article","og_title":"SAR to RGB Translation using CycleGAN","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/imagery\/sar-to-rgb-translation-using-cyclegan","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","article_modified_time":"2021-04-30T07:25:33+00:00","twitter_card":"summary_large_image","twitter_site":"@ESRI","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/imagery\/sar-to-rgb-translation-using-cyclegan#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/imagery\/sar-to-rgb-translation-using-cyclegan"},"author":{"name":"Guneet Mutreja","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/86342e15b4e8173a11bd87585a4a0e49"},"headline":"SAR to RGB Translation using CycleGAN","datePublished":"2020-12-29T10:18:29+00:00","dateModified":"2021-04-30T07:25:33+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/imagery\/sar-to-rgb-translation-using-cyclegan"},"wordCount":6,"commentCount":0,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"keywords":["deep learning","Image Translation","machine learning","SAR"],"articleSection":["Developers","Education","Imagery &amp; Remote Sensing"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/imagery\/sar-to-rgb-translation-using-cyclegan#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/imagery\/sar-to-rgb-translation-using-cyclegan","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/imagery\/sar-to-rgb-translation-using-cyclegan","name":"SAR to RGB Translation using CycleGAN","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2020-12-29T10:18:29+00:00","dateModified":"2021-04-30T07:25:33+00:00","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/imagery\/sar-to-rgb-translation-using-cyclegan#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/imagery\/sar-to-rgb-translation-using-cyclegan"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/imagery\/sar-to-rgb-translation-using-cyclegan#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"SAR to RGB Translation using CycleGAN"}]},{"@type":"WebSite","@id":"https:\/\/www.esri.com\/arcgis-blog\/#website","url":"https:\/\/www.esri.com\/arcgis-blog\/","name":"ArcGIS Blog","description":"Get insider info from Esri product teams","publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization","name":"Esri","url":"https:\/\/www.esri.com\/arcgis-blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","width":400,"height":400,"caption":"Esri"},"image":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/esrigis\/","https:\/\/x.com\/ESRI","https:\/\/www.linkedin.com\/company\/5311\/"]},{"@type":"Person","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/86342e15b4e8173a11bd87585a4a0e49","name":"Guneet Mutreja","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/","url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/01\/coverPhoto_resized-scaled-e1609734243292-213x187.jpg","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/01\/coverPhoto_resized-scaled-e1609734243292-213x187.jpg","caption":"Guneet Mutreja"},"description":"Product Engineer at Esri R&amp;D Center in New Delhi. Believer in the fact that Geospatial technology together with AI can solve the world's biggest problems.","sameAs":["https:\/\/www.linkedin.com\/in\/guneet-mutreja-a3ab5aa4\/","https:\/\/x.com\/GuneetMutreja"],"url":"https:\/\/www.esri.com\/arcgis-blog\/author\/gmutrejaesri-com_esriinc"}]}},"text_date":"December 29, 2020","author_name":"Multiple Authors","author_page":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/imagery\/sar-to-rgb-translation-using-cyclegan","custom_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/banner_3_resized_compressed.jpg","primary_product":"ArcGIS API for Python","tag_data":[{"term_id":186132,"name":"deep learning","slug":"deep-learning","term_group":0,"term_taxonomy_id":186132,"taxonomy":"post_tag","description":"","parent":0,"count":65,"filter":"raw"},{"term_id":758081,"name":"Image Translation","slug":"image-translation","term_group":0,"term_taxonomy_id":758081,"taxonomy":"post_tag","description":"","parent":0,"count":1,"filter":"raw"},{"term_id":35661,"name":"machine learning","slug":"machine-learning","term_group":0,"term_taxonomy_id":35661,"taxonomy":"post_tag","description":"","parent":0,"count":41,"filter":"raw"},{"term_id":758071,"name":"SAR","slug":"sar","term_group":0,"term_taxonomy_id":758071,"taxonomy":"post_tag","description":"","parent":0,"count":16,"filter":"raw"}],"category_data":[{"term_id":738191,"name":"Developers","slug":"developers","term_group":0,"term_taxonomy_id":738191,"taxonomy":"category","description":"","parent":0,"count":422,"filter":"raw"},{"term_id":430042,"name":"Education","slug":"education","term_group":0,"term_taxonomy_id":430042,"taxonomy":"category","description":"","parent":0,"count":80,"filter":"raw"},{"term_id":22931,"name":"Imagery &amp; Remote Sensing","slug":"imagery","term_group":0,"term_taxonomy_id":22931,"taxonomy":"category","description":"","parent":0,"count":767,"filter":"raw"}],"product_data":[{"term_id":36841,"name":"ArcGIS API for Python","slug":"api-python","term_group":0,"term_taxonomy_id":36841,"taxonomy":"product","description":"","parent":36601,"count":151,"filter":"raw"},{"term_id":36561,"name":"ArcGIS Pro","slug":"arcgis-pro","term_group":0,"term_taxonomy_id":36561,"taxonomy":"product","description":"","parent":0,"count":2036,"filter":"raw"}],"primary_product_link":"https:\/\/www.esri.com\/arcgis-blog\/?s=#&products=api-python","_links":{"self":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/1098691","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/users\/65681"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/comments?post=1098691"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/1098691\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=1098691"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=1098691"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=1098691"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=1098691"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=1098691"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}