利用arcgis进行深度学习。学习:“average_precision_score”太低

163
4
一个星期前
LanNguyen1
通过
新的贡献者三世

你好,

我试着用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
通过
偶尔的贡献者三世

嗨,局域网,

8 .对模型的培养不是很长时间。我建议的第一件事是延长模型训练时间,看看精确度是否提高。如果您是在笔记本上进行训练,那么show_results函数是有用的,因为您可以看到在训练时检测到哪些对象。

接下来最简单的尝试是使用不同的目标检测模型,如FasterRCNN或YOLOv3——你可以使用现有的训练数据,看看它们是否能得到更好的结果。

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

0荣誉
LanNguyen1
通过
新的贡献者三世

嗨,蒂姆,

对于SSD,我不得不使用芯片64x64, lr0006, 9 epoch,并获得了良好的acc分数0.26。我继续用相同的lr和epoch数量重新训练模型。然而,第二次迭代(9+9 ep)实际上产生更低的分数(0.17),而下一次迭代(9+9+9)是最糟糕的。我看到valid_loss总是在停机时出现,想知道为什么输出变得越来越糟。我附上了最好的输出我有。

我还没试过yolo3,也许今天。但是我昨天尝试了64x64芯片的FasterRCNN,推荐lr为00005。然而,我什么都不能预测,acc分数是0。有趣。

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

谢谢,

局域网

BestSSD.png

0荣誉
Tim_McGinnes
通过
偶尔的贡献者三世

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

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

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

0荣誉
LanNguyen1
通过
新的贡献者三世

感谢蒂姆!

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

我有一个50cm分辨率的图像子集,尺寸5818x4969(附加图像),我试图获得908棵树的样本,但他们是相当集群。如果“在训练数据中给每个对象标上标签是一种很好的做法“我可能不得不减少栅格子集的尺寸,标记更多的树。对5818x4969中的所有树木进行标签是非常耗时的:)。我会先试试这个选项!

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

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

图像增强:我知道图像预处理/增强对分类/DL很有用。在软件/方法论方面,您有什么建议吗?

非常感谢!sample_and_extent.JPGvisual_1000zoom.JPG

0荣誉