arcgis的深度学习。学习:“average_precision_score”太低

987
4
06-20-2021 03:53 PM
LanNguyen1
通过
新贡献者III

你好,

我试图用arcgis训练SSD模型。学会从航拍照片中发现树木。经过几次调整后,用lr 0.0005和8个epoch训练模型。然而,看看“average_precision_score”,它只有0.06。有人越过这个问题了吗?如何改进这个参数?多少分是可以接受的分数?我已经搜索了与“average_precision_score”相关的文档,但没有找到太多。

以下是我的emd的内容

谢谢你和亲切的问候,Lan


“框架”:“arcgis.learn.models._inferencing”,
:“InferenceFunction ArcGISObjectDetector.py”,
:“ModelConfiguration _DynamicSSD”,
:“ModelType ObjectDetection”,
“ExtractBands”:(
0,
1,
2
),
“骨干”:“resnet34”,
“网格”:(
4
),
“缩放”:(
1.0
),
“比例”:(

1.0,
1.0

),
“SSDVersion”:2
“类”:(

“价值”:1、
“名称”:“树”,
“颜色”:[
102年,
2,
7


),
:“ModelFile treecount_chip64_lr0005.pth”,
“ImageHeight”:64年,
“ImageWidth”:64年,
:“ImageSpaceUsed MAP_SPACE”,
“LearningRate”:“5.0000 e-04”,
:“ModelName SingleShotDetector”,
“后端”:“pytorch”,
" ModelParameters ": {
“骨干”:“resnet34”,
“后端”:“pytorch”
},
" average_precision_score ": {
“树”:0.06539047501100659
},
“resize_to”:空,
“IsMultispectral”:假的

0荣誉
4回复
Tim_McGinnes
通过
临时贡献者III

嗨,局域网,

8个epoch对训练模型来说并不是很长。我建议的第一件事是训练模型更长时间,看看精度是否提高。如果你从笔记本上训练,那么show_results函数很有用,因为你可以看到你训练时检测到什么对象。

下一个最简单的尝试是使用不同的对象检测模型,如fastrcnn或YOLOv3——你可以使用现有的训练数据,看看它们是否会给出更好的结果。

如果你仍然没有得到好的结果,你可能需要捕获更多的数据来训练,或者尝试其他方法来提高准确性。

0荣誉
LanNguyen1
通过
新贡献者III

嗨,蒂姆,

对于SSD,我必须使用64x64芯片,lr0006, 9个epoch,并获得了0.26的良好acc分数。我一直用相同的lr和epoch数重新训练模型。然而,第二次迭代(9+9 ep)实际上会产生较低的分数(0.17),而下一次迭代(9+9+9)则是最差的。我看到valid_loss一直在下降,不知道为什么输出越来越差。我附上了最好的输出。

我还没有尝试YOLOv3,也许今天。但我昨天用64x64芯片尝试了fastrcnn,建议lr为00005。然而,我无法预测任何事情,acc分数是0。有趣。

我试着导出芯片大小为256,然后是128。然而,ArcPro生成了少量的芯片,甚至不足以运行数据准备。可能是我的采样策略存在问题,或者需要对输入图像进行预处理,以提高物体(树)之间的清晰度。

谢谢,

局域网

BestSSD.png

0荣誉
Tim_McGinnes
通过
临时贡献者III

你贴了多少棵树的标签?在64/128/256芯片尺寸下输出多少图像芯片?你可能需要增加你的训练数据集的大小。

看起来好像还有其他的树没有被标记在你的图像芯片中。当模型试图验证其结果时,这就成了一个问题。你可以在预测图像中看到,它似乎正确地预测了一些树。然而,在你的ground truth图像中,没有对应的框,所以它可能认为它们是错误(因此降低了你的预测分数)。当你训练的时候,它实际上可能会成功地检测到越来越多的树,但它认为它们都是错误的。我认为在你的训练数据中标记每个对象是很好的做法。

这个意象并不好,对吧。我认为源图像质量是深度学习最重要的成功因素——我想我很难准确地找到这些图像中的所有树。一些图像增强确实会有所帮助。

0荣誉
LanNguyen1
通过
新贡献者III

感谢蒂姆!

你的回答太犀利了!它现在遮蔽了一些灯光。

我有一个50cm分辨率图像的子集,尺寸为5818x4969(附件图像),我试图在这些图像上获得908个树样本,但它们相当聚集。如果“在你的训练数据中标记每个对象是一个很好的练习“我可能不得不降低子集栅格的维数,并标记更多的树。在5818x4969中标记所有树非常耗时:)。我会先试试这个选项!

训练数据导出:64x64 with stride 32x32: 370 imgs, 128x128 stride 64x64: 310imgs, 256x256 stride 128x128: 129imgs。

图像质量:子集看起来OK在1:1000缩放比例(附件)。然而,在50cm的分辨率下,我们并不期待太多。

图像增强:我知道预处理/增强图像对分类/DL有好处。就软件/方法而言,你有什么建议?

非常感谢!sample_and_extent.JPGvisual_1000zoom.JPG

0荣誉