I am following the automatic road extraction using deep learning sample notebook. My code is exactly the same. I have created my own training data that I am using.
When I run:
data = prepare_data(datapath, chip_size=512, batch_size=10)
I get the error:
C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\arcgis\learn\models\_arcgis_model.py:366: UserWarning: Cuda is not available
warnings.warn("Cuda is not available")
But I still get results for:
data.show_batch(alpha=1)
Then when I run:
model = MultiTaskRoadExtractor(data, mtl_model="hourglass")
I get the following AttributeError:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\PIL\Image.py in open(fp, mode)
2846 try:
-> 2847 fp.seek(0)
2848 except (AttributeError, io.UnsupportedOperation):
AttributeError: 'numpy.ndarray' object has no attribute 'seek'
During handling of the above exception, another exception occurred:
AttributeError Traceback (most recent call last)
<ipython-input-5-f5e8368fe40d> in <module>
----> 1 model = MultiTaskRoadExtractor(data, mtl_model="hourglass")
C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\arcgis\learn\models\_multi_task_road_extractor.py in __init__(self, data, backbone, pretrained_path, *args, **kwargs)
176
177
--> 178 self._orient_data=self._get_road_orient_data(data,**kwargs)
179 if len(data.classes) > 2:
180 raise Exception(
C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\arcgis\learn\models\_multi_task_road_extractor.py in _get_road_orient_data(self, data, **kwargs)
378 dataset_type=self._data.dataset_type, resize_to=self._data.resize_to, **kwargs)
379 road_orient_obj = RoadOrientation(self._data,road_data_obj, **kwargs)
--> 380 orient_data = road_orient_obj.get_databunch(data,**kwargs)
381 return orient_data
382
C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\arcgis\learn\_data_utils\_road_orient_data.py in get_databunch(self, orig_data, **kwargs)
262
263
--> 264 data.chip_size = data.train_ds[0][0].shape[-1]
265 data.c = len(self.class_mapping) if self.class_mapping else 2
266
C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\arcgis\learn\_data_utils\_road_orient_data.py in __getitem__(self, index)
344
345 def __getitem__(self, index):
--> 346 image, label = self._getRoadData(index)
347
348 seed = np.random.randint(2147483647) # make a seed with numpy generator
C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\arcgis\learn\_data_utils\_road_orient_data.py in _getRoadData(self, index)
407 #
408 #image = PILImage.fromarray(np.asarray(ArcGISMSImage.open_gdal(image_dict["image"]))).astype(np.uint8)
--> 409 label = self._get_mask(np.asarray(PILImage.open(image_dict["label"])))
410
411 return image, PILImage.fromarray(label).convert("L")
C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\PIL\Image.py in open(fp, mode)
2847 fp.seek(0)
2848 except (AttributeError, io.UnsupportedOperation):
-> 2849 fp = io.BytesIO(fp.read())
2850 exclusive_fp = True
2851
AttributeError: 'numpy.ndarray' object has no attribute 'read'
I am running ArcGIS Pro 2.8.0, I have image analyst and spatial analyst turned on and have installed the ArcGIS Pro 2.8 deep learning libraries from github.
Photos:

