对象检测with ArcGIS API job failed error

1284
19
06-27-2021 01:02 PM
TaehyunYoon1
New Contributor

Purpose: I want to detect and count objects from downloaded map images.

Map data: I use a high-resolution google earth map image with ArcGIS pro.

Model: I used a single-shot detector. I trained the model with a labeled image that I did through ArcGIS pro.

References:

https://developers.arcgis.com/python/sample-notebooks/detecting-swimming-pools-using-satellite-image...

https://developers.arcgis.com/python/guide/object-detection/

Problems and Question (4 questions)

  • When I save my model, the '.zip' file does not appear. The Models folder has (ModelCharacteristics folder, ArcGISobjectDetector python file, model_metrics chrome HTML Document, .dlpk, emd, and .pth files). When I followed the references above, they used the '.zip' file for 'gis.content.add' function.

TaehyunYoon1_0-1624823848411.png

TaehyunYoon1_1-1624823860960.png

TaehyunYoon1_2-1624823881994.png

  • Instead of the “.zip” file, I used a “.dlpk” file for “gis.content.add” function.

TaehyunYoon1_3-1624823904393.png

TaehyunYoon1_4-1624823914606.png

  • I shared the ".tiff" image file to ArcGIS online content from ArcGIS pro web-share

TaehyunYoon1_7-1624824105758.png

TaehyunYoon1_6-1624823962095.png

  • I followed references, but it did not work. It notices me only “job failed.” I could not figure out what is the problem.

0荣誉s
19 Replies
Tim_McGinnes
Occasional Contributor III

It's not possible to run the deep learning models in ArcGIS Online. You basically have 3 options:

  • ArcGIS Enterprise with ArcGIS Image Server
  • ArcGIS Pro with the Image Analyst extension
  • ArcGIS Python API (dependent on model type)

The sample notebook you are following has the following in the prerequisites section:

This sample demonstrates how to do export training data and model inference using ArcGIS Image Server. Alternatively, they can be done using ArcGIS Pro as well.

If you don't have either Image Server or Pro + Image Analyst, there are prediction (detection) functions in the ArcGIS Python APIfor some models. SingleShotDetector does have one:

https://developers.arcgis.com/python/api-reference/arcgis.learn.toc.html#arcgis.learn.SingleShotDete...

ssd.predict(image_path, threshold=0.5, nms_overlap=0.1, return_scores=False, visualize=False, resize=False)

It returns a List of xmin, ymin, width, height of predicted bounding boxes on the given image.

0荣誉s
TaehyunYoon1
New Contributor

I appreciate your prompt response Tim!!


我是working on ArcGIS Python API. Although I don’t know what the Image Analyst extension is, I also use the ArcGIS pro I purchased.
Although I was supposed to use ArcGIS Pro for this project, I faced a GPU prerequisite problem. For this reason, I am working on my school’s computing resource center server with ArcGIS Python API.
I labeled rectangular boxes on the training dataset through ArcGIS Pro and trained a deep learning model on ArcGIS Python API.
I do not fully understand how to use “ssd.predict” command. Do I have to use it after I train my model?
Please let me know where I can get the sample code for using “ssd.predict”?
Actually, I am a Ph.D. student in a different field. I only want to get data through object detection of satellite image data. If you have any better suggestions for this purpose, It will great help for me.

0荣誉s
Tim_McGinnes
Occasional Contributor III

Yes after training you can run the predict function straight away:

from arcgis.learn import SingleShotDetector, prepare_data data_path = r'\ImageChips' data = prepare_data(data_path) ssd = SingleShotDetector(data) ssd.lr_find() ssd.fit(5, lr=1e-2) ssd.show_results() ssd.plot_losses() ssd.average_precision_score() ssd.save(r'\',save_inference_file=True) listresults=ssd.predict(image_path, threshold=0.5, nms_overlap=0.1, return_scores=True, visualize=False, resize=False)

To load the saved model from disk and predict you should be able to do:

from arcgis.learn import SingleShotDetector ssd = SingleShotDetector.from_model(r'') listresults=ssd.predict(image_path, threshold=0.5, nms_overlap=0.1, return_scores=True, visualize=False, resize=False)

The threshold parameter is the important one - the example above will only return detection over 50% confidence.

TaehyunYoon1
New Contributor

谢谢你提姆,

Is it possible to visualize as .tiff image?

Also, can I count detected objects?

0荣誉s
Tim_McGinnes
Occasional Contributor III

It is a list, so the length of the list should be how many objects were detected - do for the above code:

numobjects=len(listresults)

Unfortunately to see the bounding boxes you would have to take the xmin, ymin, width and height and create your own polygons. One of the advantages of using the ArcGIS Pro tools is that they do all that work for you.

0荣誉s
TaehyunYoon1
New Contributor

TaehyunYoon1_0-1625278017344.png

How did they do this visualization? this is from the reference notebooks above.

0荣誉s
Tim_McGinnes
Occasional Contributor III

They were using the ArcGIS Image Server to do the detect_objects function, which outputs polygons directly. Unfortunately the predict function can't do that.

0荣誉s
TaehyunYoon1
New Contributor

Hello Tim,

When I use ssd.predict with visualize=True, can I make the result picture bigger with better resolution?

0荣誉s
TaehyunYoon1
New Contributor

I faced a different problem that has not been a problem so far.
我是working on esri_learn deep learning dependencies.
The CUDA error below has not appeared before, even last night.
I re-installed dependencies, but it did not work.
Do you have any idea what the problem is?

TaehyunYoon1_0-1625258132577.png

0荣誉s