目录
4.1 ERROR 001523: 只有具有单波段或三波段且没有色彩映射的 8 位无符号或 16 位无符号数据支持 JPEG 压缩。
一、适用场景
当需要进行识别地物类型及其位置和数量时适用,检测结果通常以矩形框进行标识。ArcGIS Pro检测对象适用的地学场景:农作物类型识别、树木类型识别、车辆检测与计数、建筑物识别与计数等。
二、深度学习环境搭建
在ArcGIS Pro深度学习框架搭建之前,建议克隆一下ArcGIS Pro的Python环境(非必须),至少环境冲突和报错的话还有恢复到默认环境的机会。具体克隆步骤见3.深度学习环境搭建过程中可能出现的问题及其解决方案。
1.ArcGIS Pro的深度学习框架搭建
由于本人的电脑配置不是很高,没有英伟达的显卡所以无法配置GPU,有的朋友再进行这一步之前需要进行相应的显卡驱动安装,可以参考文章。
如何查看自己电脑是否配置英伟达显卡,打开电脑的任务管理器—性能,其中如果有英伟达显卡你就会有GPU 1,目前ArcGIS Pro的深度学习好像仅支持英伟达不支持AMD。(不对的话请评论区指正)
根据自己ArcGIS Pro的版本到官方的GitHub上下载对应的深度学习框架,这一步需要科学上网。因为我的版本为3.0.1因此下载Deep Learning Libraries Installer for ArcGls Pro 3.0-3.0.2,如果和我同版本的朋友可以通过下面链接下载。
链接:https://pan.baidu.com/s/1feBi2EkoRp-IA_PB0BWtbQ?pwd=bin6
提取码:bin6
点击ProDeepLearning直接安装即可,安装好后查看你的包管理器大约有280+并且出现cudatoollit和cudnn就说明已经配置完成啦。
2.系统Python环境变量的配置
将以下路径添加到系统变量和环境变量中即可。
3.深度学习环境搭建过程中可能出现的问题及其解决方案
3.1ArcGIS Pro的Python环境克隆
该步骤可以参考官方说明文档。克隆环境时可能会失败或者报错,下面介绍两种能够解决问题的方案。方案一:官方版 、方案二:民间大神版 不论哪种方法,成功克隆环境之后记得进行激活环境。
三、绘制训练样本
1.手动绘制训练样本
选择需要绘制训练样本的遥感影像或无人机影像(建议单波段或三波段且没有色彩映射的8位量化或16位量化的无符号类型数据,非此类型数据进行后续将训练样本导出JPEG 压缩可能会报错,解决方案参考3.导出训练样本可能报错的情况及其解决方案。),点击工具栏的影像选择分类工具中的标注对象以供深度学习使用,然后激活右侧影像分类,进行绘制即可,名称尽可能为英文。
2.在标注对象中直接导入已有训练样本
如果已经存在现有的训练样本,可以直接在标注对象中点击文件夹进行训练样本的批量添加。
3.导出训练样本
选择并设置合适的输出文件、图像格式、旋转角度、元数据格式等参数。其中,图像格式的PNG格式和JPEG格式导出可能会提示“ERROR 001523: 只有具有单波段或三波段且没有色彩映射的 8 位无符号或 16 位无符号数据支持 JPEG 压缩。” 选TIFF格式应该也行,可以尝试一下。旋转角度根据自己训练样本区域的大小和数据酌情设置,通过旋转训练样本的角度使其成为新的训练样本增加区域内样本数据。元数据格式一定要选择PASCAL 可视化对象类,否则无法进行后续操作。还有疑问可以参考官方文档。输出文件夹最好新建一个空文件夹,便于存放训练样本,路径一定要英文减少不必要的麻烦。
4.导出训练样本可能报错的情况及其解决方案
4.1 ERROR 001523: 只有具有单波段或三波段且没有色彩映射的 8 位无符号或 16 位无符号数据支持 JPEG 压缩。
因为训练样本是基于你的遥感影像或无人机影像进行提取的,所以栅格数据不满足要求时会进行报错。如果导出的数据类型为JPEG 格式的话,不太建议使用单波段的遥感影像或无人机影像,因为单波段影像是灰白的,图片所携带的信息没有彩色图片丰富。
解决方法一:先保存标注的训练样本,重新选择满足满足上述要求的单波段影像,然后在标注对象中直接导入已有训练样本,重新导出训练样本。
解决方法二:若原彩色影像满足要求仅仅是波段数量过多,则减少彩色图像的波段数量打到具体要求。过程可参考方法一、方法二、方法三:在ArcMap中导出栅格,选择使用渲染器、强制为RGB颜色、根据量化位数设置相应的NoData值、选择输出格式可以是TIFF,也可以是格网。我的是格网可以进行后续操作,大家酌情选择。
解决方法三:使用ArcGIS Pro的波段合成工具选择三个单波段数据合成为一个栅格数据,合成时选择便于识别的波段组合,例如真彩色合成、标准假彩色合成等。此时满足三个波段的要求,但是量化位数和像素类型不符合要求,此时利用复制栅格工具,设置NoData值,像素类型选择8 位无符号或 16 位无符号,一定要勾选缩放像素值,选择格网类型即可。
为什么一定要勾选缩放像素值(当输出的像素类型不同于输入像素类型时(如从 16 位到 8 位),可选择将值缩放到符合新的范围;否则,会丢弃不符合新的像素范围的值。如果进行放大(如从 8 位到 16 位),8 位值的最小值和最大值会放大到 16 位范围中的最小值和最大值。如果进行缩小(如从 16 位到 8 位),16 位值的最小值和最大值会缩小到 8 位范围中的最小值和最大值。NONE —像素值保持不变且不会缩放。任何不符合值范围的值都会被丢弃。这是默认设置。ScalePixelValue —像素值会缩放到新的像素类型。缩放像素深度时,栅格会显示相同的位深度,而值却缩放到指定的新的位深度。)
四、训练模型
1.模型参数的设置
使用训练深度学习模型,选择训练数据集、设置输出模型文件夹;最大时期即为epoch训练次数,次数一般20左右,次数太少容易模型训练不到位,次数太多容易过拟合。羡慕有GPU的朋友,用GPU运行起来会很快,大大节省时间。模型类型可以选择ArcGIS Pro所提供的模型,主流的有YOLO、SSD等,批大小则根据自己电脑的配置酌情选择。
在Advanced设置中,选择合适的模型,如果已经有现成的模型可以添加预训练模型。验证百分比为验证样本占总训练样本的比例,用于计算模型的分类精度,可以为10%(即图片中的10)或20%,酌情设置。当模型停止改进时停止则是防止模型过拟合的情况发生,造成不必要的资源浪费。冻结模型则是模型一直使用一套权重参数不会随训练过程而改变,建议取消勾选。因为通过bias的反向传播可以修改模型权重,更好实现梯度下降找到最优的模型。
在环境中设置,设置GPU和CPU,有GPU用GPU,无GPU用CPU,利用CPU可以设置并行处理因子提高效率,可以设置80%。
2.进行模型训练时可能报错的情况及其解决方案
2.1错误 032659 .......
当输入训练数据时出现如下图的情况,说明你没有配置相应的深度学习环境,回头按照文章二、深度学习环境搭建一下就解决啦。
五、模型应用
模型训练好后,使用深度学习检测对象工具进行对象检测。整个深度学习过程可以参考六、参考源及致谢中视频类相关教学视频。
因为我电脑配置并不好,只为了先跑通模型,所以仅设置了3次训练次数。可以很明显看出,在相关性条件下彩色数据的精度要由于单波段的灰白影像。
六、参考源及致谢
视频类:
以上视频均为同源,易智瑞的视频有分集,方便定位学习,刘老师的视频更全面。
文档类:
1.官方文档
以上,感谢文章中所提及所有链接的作者们。