{"id":282792,"date":"2018-07-24T06:00:24","date_gmt":"2018-07-24T13:00:24","guid":{"rendered":"http:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=282792"},"modified":"2024-05-13T10:12:05","modified_gmt":"2024-05-13T17:12:05","slug":"how-we-did-it-integrating-arcgis-and-machine-learning-at-uc-2018","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/how-we-did-it-integrating-arcgis-and-machine-learning-at-uc-2018","title":{"rendered":"How we did it: Integrating ArcGIS and deep learning at UC 2018"},"author":7351,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"_searchwp_excluded":""},"categories":[23341],"tags":[174212,186132,164102,35661,24341],"industry":[],"product":[36841],"class_list":["post-282792","blog","type-blog","status-publish","format-standard","hentry","category-analytics","tag-artificial-intelligence","tag-deep-learning","tag-jupyter-notebook","tag-machine-learning","tag-python","product-api-python"],"acf":{"short_description":"We demonstrated an integration of ArcGIS with innovative deep learning tools at this year's plenary. Learn how we built our model!","flexible_content":[{"acf_fc_layout":"content","content":"<p>At the plenary session of this year\u2019s Esri User Conference, we demonstrated an integration of ArcGIS software with the latest innovations in deep learning to perform detection of swimming pools using aerial <a href=\"https:\/\/www.esri.com\/en-us\/capabilities\/imagery-remote-sensing\/overview\">imagery<\/a>. We then went a step further to identify pools in a state of neglect, which will empower health inspectors to help prevent the spread of vector-borne diseases.<\/p>\n<p><strong>Update (August 2021):<\/strong> We now have a pre-trained deep learning model for swimming pool detection! Read <a href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-living-atlas\/announcements\/pre-trained-deep-learning-models-update-july-2021\/\">this blog<\/a> to learn more about it.<\/p>\n"},{"acf_fc_layout":"youtube","start_time":"0","end_time":"","youtube_video_url":"<iframe title=\"ArcGIS Infused with AI &amp; ML Integration\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/z_CrA2sMPFY?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>"},{"acf_fc_layout":"content","content":"<p>Today, we&#8217;ll show you how we did it, and how ArcGIS made the process much easier. Our notebooks and script files are published\u00a0<a href=\"https:\/\/github.com\/Esri\/arcgis-python-api\/tree\/master\/talks\/uc2018\/Plenary\/pools\">here<\/a>\u00a0on GitHub; for complete methodology details, see <a href=\"https:\/\/medium.com\/geoai\/swimming-pool-detection-and-classification-using-deep-learning-aaf4a3a5e652\">our post<\/a> on Medium.<\/p>\n"},{"acf_fc_layout":"content","content":"<p>The demo tackled two challenges facing the city of Redlands, California. Let&#8217;s take a closer look at them.<\/p>\n<h3>Challenge #1: Update assessor data<\/h3>\n<p>Tax assessors at local government agencies must often rely on\u00a0expensive and infrequent surveys, leading to assessment inaccuracies. Swimming pools are an important part of assessment records because they impact the value of the property. Finding pools that are not on the assessment roll (such as those recently constructed) will be valuable to the assessor, and will ultimately mean additional revenue for the community.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":282912,"id":282912,"title":"pools1","filename":"pools1.png","filesize":147878,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools1.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/how-we-did-it-integrating-arcgis-and-machine-learning-at-uc-2018\/pools1","alt":"Visualizing pools in ArcGIS Pro","author":"7351","description":"","caption":"Visualizing residential parcels in ArcGIS Pro; parcels assessed with pools are in blue. Note that some parcels with pools are missing, indicating outdated data. ","name":"pools1","status":"inherit","uploaded_to":282792,"date":"2018-07-19 21:53:47","modified":"2018-07-19 23:03:02","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":800,"height":516,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools1.png","thumbnail-width":213,"thumbnail-height":137,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools1.png","medium-width":405,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools1.png","medium_large-width":768,"medium_large-height":495,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools1.png","large-width":800,"large-height":516,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools1.png","1536x1536-width":800,"1536x1536-height":516,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools1.png","2048x2048-width":800,"2048x2048-height":516,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools1.png","card_image-width":721,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools1.png","wide_image-width":800,"wide_image-height":516}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>Doing this through GIS and AI would certainly reduce the expensive human labor involved in updating the records through field visits of each property.<\/p>\n<h3>Challenge #2: Identify neglected pools<\/h3>\n<p>If a swimming pool is neglected, as when the property is foreclosed, it often turns a green color and becomes inviting to mosquitoes &#8211; standing water with no inputs or outputs. The sheer volume of properties affected in warmer climates, even as the market rebounded, has made the detection of these risky pools challenging for many organizations.<\/p>\n<p>Public health and mosquito control agencies are tasked with protecting the public from vector-borne diseases, including viruses carried by mosquitoes like West Nile and Chikungunya. These agencies need a simple solution that helps them locate neglected pools from imagery and then use this intelligence to drive <a href=\"http:\/\/solutions.arcgis.com\/local-government\/public-works\/mosquito-control\/\">field activity and mitigation efforts<\/a>.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":283052,"id":283052,"title":"pools2","filename":"pools2.png","filesize":110537,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools2.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/how-we-did-it-integrating-arcgis-and-machine-learning-at-uc-2018\/pools2","alt":"","author":"7351","description":"","caption":"A healthy swimming pool (left) and a possibly neglected pool (right)  seen from above.","name":"pools2","status":"inherit","uploaded_to":282792,"date":"2018-07-19 21:59:03","modified":"2018-07-19 22:00:04","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":800,"height":539,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools2.png","thumbnail-width":213,"thumbnail-height":144,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools2.png","medium-width":387,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools2.png","medium_large-width":768,"medium_large-height":517,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools2.png","large-width":800,"large-height":539,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools2.png","1536x1536-width":800,"1536x1536-height":539,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools2.png","2048x2048-width":800,"2048x2048-height":539,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools2.png","card_image-width":690,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools2.png","wide_image-width":800,"wide_image-height":539}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<h2>Creating our training data<\/h2>\n<p>There\u2019s a golden rule of deep learning: <em>The more training data you give, the better the results<\/em>.<em>\u00a0<\/em>Deep learning models become powerful and accurate when they are fed huge quantities of data to learn from. To build our model, we needed to teach it what a swimming pool looks like from above, and then train it with a lot of imagery.<\/p>\n<p>When we started, we couldn\u2019t find an openly available labeled dataset for swimming pool detection using aerial imagery, so we labeled around 2,000 swimming pools in cities in southern California. Using ArcGIS Pro made the process faster.<\/p>\n<p>In Pro, we have access to a host of aerial, satellite and drone imagery from Esri and its partners; we used the Esri World Imagery basemap for labeling. Pro includes a simple interface to label data, as well as advanced GIS functionality, including tools for reviewing data to manage its quality. ArcGIS Pro\u2019s geoprocessing tools allowed us to create buffers and bounding boxes around labeled pool locations, and it includes 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, which creates the labeled image chips like the ones our model needed.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":282922,"id":282922,"title":"pools3","filename":"pools3.png","filesize":126031,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools3.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/how-we-did-it-integrating-arcgis-and-machine-learning-at-uc-2018\/pools3","alt":"Export Training Data for Deep Learning tool","author":"7351","description":"","caption":"Working with the Export Training Data for Deep Learning tool in ArcGIS Pro.","name":"pools3","status":"inherit","uploaded_to":282792,"date":"2018-07-19 21:53:53","modified":"2018-07-19 22:00:58","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":800,"height":516,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools3.png","thumbnail-width":213,"thumbnail-height":137,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools3.png","medium-width":405,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools3.png","medium_large-width":768,"medium_large-height":495,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools3.png","large-width":800,"large-height":516,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools3.png","1536x1536-width":800,"1536x1536-height":516,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools3.png","2048x2048-width":800,"2048x2048-height":516,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools3.png","card_image-width":721,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools3.png","wide_image-width":800,"wide_image-height":516}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>We created a shapefile containing the labeled pool locations using ArcGIS Pro and chipped out 224 px by 224 px images from the imagery using the locations in the shapefile. Our GitHub repository includes a\u00a0<a href=\"https:\/\/github.com\/Esri\/arcgis-python-api\/blob\/master\/talks\/uc2018\/Plenary\/pools\/Export%20Training%20Samples.ipynb\">notebook<\/a>\u00a0demonstrating this approach.<\/p>\n"},{"acf_fc_layout":"content","content":"<h2>Choosing our imagery<\/h2>\n<p>When training a deep learning model, it\u2019s important to use the most current and spatially accurate imagery. The image resolution at which you perform the training and inference and the imagery bands you use are also critical decision points.<\/p>\n<p>The ArcGIS platform provides access to the <a href=\"https:\/\/livingatlas.arcgis.com\/en\/\">Living Atlas of the World<\/a>, which includes imagery from Landsat, Sentinel and <a href=\"https:\/\/www.fsa.usda.gov\/programs-and-services\/aerial-photography\/imagery-programs\/naip-imagery\/\">NAIP<em>\u00a0(<\/em>National Agriculture Imagery Program)<\/a> satellites. High-resolution imagery is also available through Esri partners, including 7cm imagery from Nearmap and Vexcel.<\/p>\n<p>NAIP imagery is acquired every two years during the growing seasons throughout the continental U.S. This imagery has a 1-meter resolution and comes in four bands \u2013 red, green, blue, and near-infrared. We chose NAIP imagery because it\u2019s free for U.S. counties and states, and covers the whole \u201clower 48.\u201d<\/p>\n<p>Effectively distinguishing\u00a0<em>clean<\/em>\u00a0(healthy) and<em> green <\/em>(neglected)\u00a0pools, on the other hand, requires a closer lens and more recent data. Nearmap and Vexcel imagery is collected much more often and provides a much higher resolution. We chose to use Nearmap imagery for our neglected-pool detection, as it\u2019s included in the Esri World Imagery basemap for the area of Redlands.<\/p>\n"},{"acf_fc_layout":"sidebar","content":"<h3>Obstacle: Finding the right bands<\/h3>\n<p>Aerial imagery often includes bands other than just the visible spectrum. We experimented with several band configurations to find the best imagery for our model.<\/p>\n<p>When we tried using the visible spectrum (RGB), the inference model was not very accurate at identifying swimming pools from the imagery.\u00a0Normalized difference vegetation index (NDVI) imagery &#8211; which measures the difference between red and near-infrared bands &#8211; also gave us disappointing test results.<\/p>\n<p>We turned to the <strong>Color Infrared<\/strong> band combination of the NAIP imagery. This uses near-infrared, red, and green bands, allowing pools to stand out in bright blue as significantly cooler than their surroundings. This gave us the best results, especially after we scaled up our training data, and it&#8217;s what we used for the final model.<\/p>\n","image_reference":false,"layout":"standard","image_reference_figure":"","snippet":"","spotlight_name":"","section_title":"","position":"Center","spotlight_image":false},{"acf_fc_layout":"content","content":"<h2>Training the model<\/h2>\n<p>We used a Single Shot MultiBox Detector (SSD)-inspired architecture with <a href=\"https:\/\/arxiv.org\/abs\/1708.02002\">focal loss<\/a> to train our pool detector. Integration with deep learning libraries like <strong>PyTorch<\/strong> and <strong>fast.ai<\/strong> made this process fast and efficient.<\/p>\n<p>For the imagery our model would use in training, we created chips from NAIP Color Infrared imagery. We were able to get decent results with around 2,000 chips, but the model made mistakes in detecting all pools. At this point, we recalled the golden rule!<\/p>\n<p>We did heavy data augmentation by taking 50 random &#8220;jitters&#8221; of images around each pool location. Using this technique, we were able to convert those 2,000 images to 100,000 images. Upon training the complete model again, our validation tests were much more satisfactory.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":283712,"id":283712,"title":"pools12 (2)","filename":"pools12-2.png","filesize":55622,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools12-2.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/how-we-did-it-integrating-arcgis-and-machine-learning-at-uc-2018\/pools12-2","alt":"Training the model","author":"7351","description":"","caption":"A result slide from the training stage of our model.  Note the use of the near-infrared band in the NAIP Color Infrared band combination.","name":"pools12-2","status":"inherit","uploaded_to":282792,"date":"2018-07-19 23:45:52","modified":"2018-07-19 23:46:12","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":800,"height":298,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools12-2.png","thumbnail-width":213,"thumbnail-height":79,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools12-2.png","medium-width":464,"medium-height":173,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools12-2.png","medium_large-width":768,"medium_large-height":286,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools12-2.png","large-width":800,"large-height":298,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools12-2.png","1536x1536-width":800,"1536x1536-height":298,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools12-2.png","2048x2048-width":800,"2048x2048-height":298,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools12-2.png","card_image-width":800,"card_image-height":298,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools12-2.png","wide_image-width":800,"wide_image-height":298}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>Once our model was fully trained and giving us good results, we tested it on a larger area of the NAIP imagery. We split the larger image into smaller chips, as the model requires. All these chips were simultaneously passed as a batch to the model, and its pool-detection predictions were gathered, combined and visualized in ArcGIS.<\/p>\n"},{"acf_fc_layout":"sidebar","content":"<h3>Obstacle: Missing pools on chip edges<\/h3>\n<p>When observing the visualizations carefully, we found there were still several missing pools. We also noticed a strange trend: The missing pools often lay in a line either horizontally or vertically. This indicated the missing pools were all at the edges of their image chips.<\/p>\n<p>We remedied this using <strong>test time augmentation<\/strong>, in which we showed our model two differently cropped versions of each image chip and have it run predictions on both versions. This simple strategy allowed the missing pools to be detected with precision.<\/p>\n","image_reference":false,"layout":"standard","image_reference_figure":"","snippet":"","spotlight_name":"","section_title":"","position":"Center","spotlight_image":false},{"acf_fc_layout":"content","content":"<p>To run our model on the entire city, we used the capabilities of ArcGIS API for Python. We took the extent of the city of Redlands and exported NAIP images from that area. We then used the simple pipeline described above to collect predictions on all chips within each exported image, and converted them into a feature layer by transforming from image to geographic coordinates.<\/p>\n<h3><\/h3>\n<p>&nbsp;<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":284112,"id":284112,"title":"pools_card","filename":"pools_card.png","filesize":798326,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools_card.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/how-we-did-it-integrating-arcgis-and-machine-learning-at-uc-2018\/pools_card","alt":"","author":"7351","description":"","caption":"","name":"pools_card","status":"inherit","uploaded_to":282792,"date":"2018-07-20 17:07:14","modified":"2018-07-20 17:07:14","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":826,"height":465,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools_card.png","thumbnail-width":213,"thumbnail-height":120,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools_card.png","medium-width":464,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools_card.png","medium_large-width":768,"medium_large-height":432,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools_card.png","large-width":826,"large-height":465,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools_card.png","1536x1536-width":826,"1536x1536-height":465,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools_card.png","2048x2048-width":826,"2048x2048-height":465,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools_card.png","card_image-width":826,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools_card.png","wide_image-width":826,"wide_image-height":465}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"sidebar","content":"<h3>Obstacle: False positives<\/h3>\n<p>Deep learning is great at what it does, but can still make silly mistakes at times\u200a\u2014\u200afor instance, we occasionally got false positives for pools on freeways or on the hills!<\/p>\n<p>One common mistake was identifying natural water bodies, which also appear blue in NAIP imagery, as pools.<\/p>\n<p>To discard these false positives, we used ArcGIS Online to overlay the detected pools with the layer of residential parcels, and to throw away the ones that didn\u2019t intersect with the parcels layer.<\/p>\n","image_reference":false,"layout":"standard","image_reference_figure":"","snippet":"","spotlight_name":"","section_title":"","position":"Center","spotlight_image":false},{"acf_fc_layout":"content","content":"<h2>Identifying parcels with unassessed pools<\/h2>\n<p>With our pool-detection model ready, we applied it to solve our first challenge: identifying pools in Redlands that are not listed on their parcel\u2019s tax assessment. The\u00a0<a href=\"http:\/\/doc.arcgis.com\/en\/arcgis-online\/analyze\/join-features.htm\">Join Features<\/a>\u00a0tool in ArcGIS Online helped us here.<\/p>\n<p>We began with a feature layer of all Redlands parcels. The attribute table of that layer includes the <code>pool_<\/code> field, which indicates whether the county assessor includes a swimming pool for a given parcel. Next, we added a feature layer with the results of our pool-detection model, and used Join Features to add the relevant parcel fields to that layer.<\/p>\n<p>We then created a third feature layer with each parcel for which the <code>pool_<\/code> field was empty, but within which our model had detected a pool.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":282962,"id":282962,"title":"pools6","filename":"pools6.png","filesize":145572,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools6.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/how-we-did-it-integrating-arcgis-and-machine-learning-at-uc-2018\/pools6","alt":"Pool layers view","author":"7351","description":"","caption":"Zooming in on our finished layers. The red parcels have a pool detected, but are not assessed as having one by the county.","name":"pools6","status":"inherit","uploaded_to":282792,"date":"2018-07-19 21:54:08","modified":"2018-07-19 22:03:30","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":1000,"height":310,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools6.png","thumbnail-width":213,"thumbnail-height":66,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools6.png","medium-width":464,"medium-height":144,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools6.png","medium_large-width":768,"medium_large-height":238,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools6.png","large-width":1000,"large-height":310,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools6.png","1536x1536-width":1000,"1536x1536-height":310,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools6.png","2048x2048-width":1000,"2048x2048-height":310,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools6.png","card_image-width":826,"card_image-height":256,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools6.png","wide_image-width":1000,"wide_image-height":310}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>This new layer identified nearly 600 new pools that were not marked correctly in the county database. ArcGIS Online then made it easy to visualize our results. You can explore this web map containing our three feature layers:<\/p>\n"},{"acf_fc_layout":"content","content":"<h2>Clean or green?<\/h2>\n<p>Now that our model could accurately identify swimming pools from aerial imagery, we could tackle our second challenge \u2013 to label them as\u00a0<em>clean or green\u00a0<\/em>(neglected pools, sometimes also referred to as\u00a0\u201czombie pools\u201d). Green pools often contain algae and can be breeding grounds for mosquitoes and other insects. Mosquito control agencies need a simple solution that helps them locate such pools and drive field activity and mitigation efforts.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":283732,"id":283732,"title":"pools7 (2)","filename":"pools7-2.png","filesize":64590,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools7-2.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/how-we-did-it-integrating-arcgis-and-machine-learning-at-uc-2018\/pools7-2","alt":"Clean and green pools","author":"7351","description":"","caption":"","name":"pools7-2","status":"inherit","uploaded_to":282792,"date":"2018-07-19 23:52:40","modified":"2018-07-19 23:54:21","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":800,"height":310,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools7-2.png","thumbnail-width":213,"thumbnail-height":83,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools7-2.png","medium-width":464,"medium-height":180,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools7-2.png","medium_large-width":768,"medium_large-height":298,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools7-2.png","large-width":800,"large-height":310,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools7-2.png","1536x1536-width":800,"1536x1536-height":310,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools7-2.png","2048x2048-width":800,"2048x2048-height":310,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools7-2.png","card_image-width":800,"card_image-height":310,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools7-2.png","wide_image-width":800,"wide_image-height":310}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>We trained our model using recent high-resolution Nearmap imagery (7 cm resolution) and a large data set of manually labeled clean or green pools. As before, we took multiple &#8220;jittered&#8221; images of each green pool to increase the number of training images the network could study.<\/p>\n<p>Once the model was ready to distinguish clean and green pools, we ran the inference pipeline on our Redlands city imagery. Take a look at this web map, which shows zombie pools potentially at risk of being mosquito breeding grounds!<\/p>\n"},{"acf_fc_layout":"sidebar","content":"<h3>Obstacle: Processing time<\/h3>\n<p>We faced a big problem for our UC demo: It took ten minutes &#8211; a relatively long time &#8211; for a single machine to detect and analyze all swimming pools in the entire city of Redlands, which covers more than 100,000 km<sup>2 <\/sup>of ground.<\/p>\n<p>To speed things up, we turned to distributed computing. We wrote a Python script to spread the work across multiple graphics processing units (GPUs) in the cloud. This enabled us to complete our entire inference on stage within 50 seconds. If we wanted to expand our search area to all of San Bernardino County, the largest county in the U.S., we could detect all pools in under an hour.<\/p>\n","image_reference":false,"layout":"standard","image_reference_figure":"","snippet":"","spotlight_name":"","section_title":"","position":"Center","spotlight_image":false},{"acf_fc_layout":"quote","author_name":"Jay Theodore","author_profession_organization":"Chief Technology Officer, ArcGIS Enterprise","image":{"ID":286512,"id":286512,"title":"Esri-Jay-Theodore-280x280","filename":"Esri-Jay-Theodore-280x280.jpg","filesize":13936,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/Esri-Jay-Theodore-280x280.jpg","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/how-we-did-it-integrating-arcgis-and-machine-learning-at-uc-2018\/esri-jay-theodore-280x280","alt":"","author":"7351","description":"","caption":"","name":"esri-jay-theodore-280x280","status":"inherit","uploaded_to":282792,"date":"2018-07-24 16:09:55","modified":"2018-07-24 16:09:55","menu_order":0,"mime_type":"image\/jpeg","type":"image","subtype":"jpeg","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":280,"height":280,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/Esri-Jay-Theodore-280x280.jpg","thumbnail-width":200,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/Esri-Jay-Theodore-280x280.jpg","medium-width":261,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/Esri-Jay-Theodore-280x280.jpg","medium_large-width":280,"medium_large-height":280,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/Esri-Jay-Theodore-280x280.jpg","large-width":280,"large-height":280,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/Esri-Jay-Theodore-280x280.jpg","1536x1536-width":280,"1536x1536-height":280,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/Esri-Jay-Theodore-280x280.jpg","2048x2048-width":280,"2048x2048-height":280,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/Esri-Jay-Theodore-280x280.jpg","card_image-width":280,"card_image-height":280,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/Esri-Jay-Theodore-280x280.jpg","wide_image-width":280,"wide_image-height":280}},"text":"We are seeing excellent results as we integrate AI techniques into the ArcGIS platform. This includes machine learning and deep learning algorithms that can do automated object detection, classification and extraction ... delivering a highly accurate model that can facilitate deeper analysis and predict precise outcomes, at minimal cost."},{"acf_fc_layout":"content","content":"<h2>The benefits of ArcGIS integration<\/h2>\n<p>A primary goal of this project was to apply the latest research in deep learning and use it to solve real-world problems, be it to update county records or to assist mosquito abatement drives. The ArcGIS platform includes a host of capabilities &#8211; online mapping, big data analysis, collaboration, and field mobility &#8211; to help achieve these goals.<\/p>\n<p>Once we had obtained the locations of the detected swimming pools, it was easy to use the analysis tools in ArcGIS Online to identify parcels that were not being accessed correctly. The\u00a0<a href=\"https:\/\/developers.arcgis.com\/python\/guide\/introduction-to-the-spatial-dataframe\/\">Spatial DataFrame<\/a>\u00a0in\u00a0<a href=\"http:\/\/developers.arcgis.com\/python\">ArcGIS API for Python<\/a>\u00a0enabled us to generate Pythonic reports of such properties, and to create information products such as GIS layers to be visualized in web maps or used for further analysis.<\/p>\n<p>The API\u2019s map widget for Jupyter notebooks allowed us to visualize detected pools and residential parcels, and provided renderers and symbology to make it easy to understand the generated maps. The maps could then be\u00a0saved as web maps\u00a0and shared with collaborators.<\/p>\n<p>Esri has also recently introduced (as beta) an\u00a0<a href=\"https:\/\/github.com\/Esri\/image-visit-template\">Image Visit configurable app template<\/a>\u00a0that lets image analysts visually inspect the results of an object detection workflow and categorize each as either a correct or an incorrect detection. A live demo of the configured web app is\u00a0<a href=\"http:\/\/maps.arcgis.com\/apps\/ImageVisit\/index.html?appid=5502f61d9d944cd2900021970682bfed\">here<\/a>. This information could then also be fed into better training or to filter the results and prioritize field activities.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":284902,"id":284902,"title":"pools10","filename":"pools10-1.png","filesize":99808,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools10-1.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/how-we-did-it-integrating-arcgis-and-machine-learning-at-uc-2018\/pools10-2","alt":"Image Visit app","author":"7351","description":"","caption":"The Image Visit app enables visual inspection of the neglected pools detected by our deep learning model.","name":"pools10-2","status":"inherit","uploaded_to":282792,"date":"2018-07-20 23:06:11","modified":"2018-07-20 23:06: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":560,"height":426,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools10-1.png","thumbnail-width":213,"thumbnail-height":162,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools10-1.png","medium-width":343,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools10-1.png","medium_large-width":560,"medium_large-height":426,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools10-1.png","large-width":560,"large-height":426,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools10-1.png","1536x1536-width":560,"1536x1536-height":426,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools10-1.png","2048x2048-width":560,"2048x2048-height":426,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools10-1.png","card_image-width":560,"card_image-height":426,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools10-1.png","wide_image-width":560,"wide_image-height":426}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>We could then use the field mobility capabilities of the ArcGIS platform.\u00a0<a href=\"http:\/\/www.esri.com\/products\/workforce\">Workforce for ArcGIS<\/a>\u00a0allows for creation of assignments for mobile workers, such as inspectors in mosquito control agencies. We used the recently introduced apps module in ArcGIS API for Python\u00a0to automate creation of Workforce assignments for mosquito-control field workers based on the results of the neglected pool detection analysis.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":284912,"id":284912,"title":"pools11","filename":"pools11-1.png","filesize":96836,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools11-1.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/how-we-did-it-integrating-arcgis-and-machine-learning-at-uc-2018\/pools11-2","alt":"Workforce inspection assignments","author":"7351","description":"","caption":"Viewing pool inspection assignments in Workforce for ArcGIS. At 10.6.1, Workforce is now available as a web app.","name":"pools11-2","status":"inherit","uploaded_to":282792,"date":"2018-07-20 23:06:48","modified":"2018-07-20 23:07:03","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":560,"height":369,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools11-1.png","thumbnail-width":213,"thumbnail-height":140,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools11-1.png","medium-width":396,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools11-1.png","medium_large-width":560,"medium_large-height":369,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools11-1.png","large-width":560,"large-height":369,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools11-1.png","1536x1536-width":560,"1536x1536-height":369,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools11-1.png","2048x2048-width":560,"2048x2048-height":369,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools11-1.png","card_image-width":560,"card_image-height":369,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools11-1.png","wide_image-width":560,"wide_image-height":369}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>We have only scratched the surface of what&#8217;s possible. This is just one application of GIS and AI integration &#8211; there are countless others waiting to be powered by these amazing technologies. Stay tuned for more exciting stuff coming out soon!<\/p>\n<p><em>This post was written with <a href=\"https:\/\/twitter.com\/divyanshjha\">Divyansh Jha<\/a>, a deep learning intern in our New Delhi office.<\/em><\/p>\n"}],"authors":[{"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\/2018\/07\/1_17wkvk94x7EKx8u33FQdwA.png","wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools_banner.png"},"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>How we did it: Integrating ArcGIS and deep learning at UC 2018<\/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\/analytics\/how-we-did-it-integrating-arcgis-and-machine-learning-at-uc-2018\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How we did it: Integrating ArcGIS and deep learning at UC 2018\" \/>\n<meta property=\"og:description\" content=\"Go behind the scenes of our User Conference plenary demo detecting &quot;zombie pools&quot; using ArcGIS and the latest innovations in deep learning.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/how-we-did-it-integrating-arcgis-and-machine-learning-at-uc-2018\" \/>\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=\"2024-05-13T17:12:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.esri.com\/arcgis-blog\/wp-content\/uploads\/2018\/07\/pools_banner.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Go behind the scenes of our User Conference plenary demo detecting &quot;zombie pools&quot; using ArcGIS and the latest innovations in deep learning.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools_banner.png\" \/>\n<meta name=\"twitter:site\" content=\"@ESRI\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"12 minutes\" \/>\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\/analytics\/how-we-did-it-integrating-arcgis-and-machine-learning-at-uc-2018#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/how-we-did-it-integrating-arcgis-and-machine-learning-at-uc-2018\"},\"author\":{\"name\":\"Scott M. MacDonald\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/20f8361bd8ff478e880aca06aab66ee9\"},\"headline\":\"How we did it: Integrating ArcGIS and deep learning at UC 2018\",\"datePublished\":\"2018-07-24T13:00:24+00:00\",\"dateModified\":\"2024-05-13T17:12:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/how-we-did-it-integrating-arcgis-and-machine-learning-at-uc-2018\"},\"wordCount\":11,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"keywords\":[\"Artificial Intelligence\",\"deep learning\",\"Jupyter Notebook\",\"machine learning\",\"python\"],\"articleSection\":[\"Analytics\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/how-we-did-it-integrating-arcgis-and-machine-learning-at-uc-2018#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/how-we-did-it-integrating-arcgis-and-machine-learning-at-uc-2018\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/how-we-did-it-integrating-arcgis-and-machine-learning-at-uc-2018\",\"name\":\"How we did it: Integrating ArcGIS and deep learning at UC 2018\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2018-07-24T13:00:24+00:00\",\"dateModified\":\"2024-05-13T17:12:05+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/how-we-did-it-integrating-arcgis-and-machine-learning-at-uc-2018#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/how-we-did-it-integrating-arcgis-and-machine-learning-at-uc-2018\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/how-we-did-it-integrating-arcgis-and-machine-learning-at-uc-2018#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How we did it: Integrating ArcGIS and deep learning at UC 2018\"}]},{\"@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\/20f8361bd8ff478e880aca06aab66ee9\",\"name\":\"Scott M. MacDonald\",\"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\/2018\/05\/headshot-vignette.png\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/05\/headshot-vignette.png\",\"caption\":\"Scott M. MacDonald\"},\"url\":\"\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How we did it: Integrating ArcGIS and deep learning at UC 2018","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\/analytics\/how-we-did-it-integrating-arcgis-and-machine-learning-at-uc-2018","og_locale":"en_US","og_type":"article","og_title":"How we did it: Integrating ArcGIS and deep learning at UC 2018","og_description":"Go behind the scenes of our User Conference plenary demo detecting \"zombie pools\" using ArcGIS and the latest innovations in deep learning.","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/how-we-did-it-integrating-arcgis-and-machine-learning-at-uc-2018","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","article_modified_time":"2024-05-13T17:12:05+00:00","og_image":[{"url":"https:\/\/www.esri.com\/arcgis-blog\/wp-content\/uploads\/2018\/07\/pools_banner.png","width":1920,"height":1080,"type":"image\/png"}],"twitter_card":"summary_large_image","twitter_description":"Go behind the scenes of our User Conference plenary demo detecting \"zombie pools\" using ArcGIS and the latest innovations in deep learning.","twitter_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools_banner.png","twitter_site":"@ESRI","twitter_misc":{"Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/how-we-did-it-integrating-arcgis-and-machine-learning-at-uc-2018#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/how-we-did-it-integrating-arcgis-and-machine-learning-at-uc-2018"},"author":{"name":"Scott M. MacDonald","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/20f8361bd8ff478e880aca06aab66ee9"},"headline":"How we did it: Integrating ArcGIS and deep learning at UC 2018","datePublished":"2018-07-24T13:00:24+00:00","dateModified":"2024-05-13T17:12:05+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/how-we-did-it-integrating-arcgis-and-machine-learning-at-uc-2018"},"wordCount":11,"commentCount":0,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"keywords":["Artificial Intelligence","deep learning","Jupyter Notebook","machine learning","python"],"articleSection":["Analytics"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/how-we-did-it-integrating-arcgis-and-machine-learning-at-uc-2018#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/how-we-did-it-integrating-arcgis-and-machine-learning-at-uc-2018","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/how-we-did-it-integrating-arcgis-and-machine-learning-at-uc-2018","name":"How we did it: Integrating ArcGIS and deep learning at UC 2018","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2018-07-24T13:00:24+00:00","dateModified":"2024-05-13T17:12:05+00:00","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/how-we-did-it-integrating-arcgis-and-machine-learning-at-uc-2018#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/how-we-did-it-integrating-arcgis-and-machine-learning-at-uc-2018"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/api-python\/analytics\/how-we-did-it-integrating-arcgis-and-machine-learning-at-uc-2018#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"How we did it: Integrating ArcGIS and deep learning at UC 2018"}]},{"@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\/20f8361bd8ff478e880aca06aab66ee9","name":"Scott M. MacDonald","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\/2018\/05\/headshot-vignette.png","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/05\/headshot-vignette.png","caption":"Scott M. MacDonald"},"url":""}]}},"text_date":"July 24, 2018","author_name":"Rohit Singh","author_page":"https:\/\/www.esri.com\/arcgis-blog\/author\/rsinghesri-com","custom_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/07\/pools_banner.png","primary_product":"ArcGIS API for Python","tag_data":[{"term_id":174212,"name":"Artificial Intelligence","slug":"artificial-intelligence","term_group":0,"term_taxonomy_id":174212,"taxonomy":"post_tag","description":"","parent":0,"count":22,"filter":"raw"},{"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":164102,"name":"Jupyter Notebook","slug":"jupyter-notebook","term_group":0,"term_taxonomy_id":164102,"taxonomy":"post_tag","description":"","parent":0,"count":8,"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":24341,"name":"python","slug":"python","term_group":0,"term_taxonomy_id":24341,"taxonomy":"post_tag","description":"","parent":0,"count":171,"filter":"raw"}],"category_data":[{"term_id":23341,"name":"Analytics","slug":"analytics","term_group":0,"term_taxonomy_id":23341,"taxonomy":"category","description":"","parent":0,"count":1331,"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"}],"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\/282792","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\/7351"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/comments?post=282792"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/282792\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=282792"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=282792"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=282792"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=282792"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=282792"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}