针对自制遥感图像数据集json格式转换yolo或DOTA
数据集是json格式
首先打开liyuanzhou_util 使用to_filename_li遍历获取文件名
再利用json2yolo_li或json2DOTA_li获取所需格式 之后检查一下标注是否正确(这里只能检查yolo格式)
devkit工具使用
1、DOTA.py 加载图片并绘制目标边框
代码中规定了文件的包含关系,如图1所示:
-FileDir:
|_images: (DOTA img)
.................|_P0000.png
.................|_...
.................|_××××.png
|_labelTxt: (DOTA txt fotmat: poly classname 1/0)
.................|_P0000.txt
.................|_...
.................|_××××.txt
demo中是按"类名"加载所有包含该类的图片并绘制,如果只想加载指定图片,在主函数for循环中加上图片名称即可:
HBB、OBB注释文本文件的demo演示效果
2、ImgSplit.py 分割数据集
遥感图像由于分辨率过高,在训练或预测过程中单张图片运算时要求的显存估计能把大部分的服务器给干趴下。解决办法有两种:
(1)降低图像的分辨率:
如将 5000 * 5000 的图像resize至 10001000,这样大部分的GPU都能满足运算要求,但是会损失图像信息,尤其是DOTA这种遥感数据中含有大量小目标(甚至低于2020)的图像数据集,如果采取这种方法,小目标的尺寸会进一步减小,其特征在深层网络逐层提取中甚至可能消失;
(2)将单张遥感图像裁剪切割成多张图片:
如将 50005000 的图像裁剪成55张 10001000的图片,对切割的图片进行多次预测,再将预测的结果进行拼接,同样可以获得原图的预测结果。代价就是原本只需进行一次前向传播,切割后需要进行55次前向传播才能获得预测结果,时间成本大幅增加。由于切割时常会导致部分处于切割边缘部分的目标信息缺失,因此通常会确保切割后的图像之间有重叠区域(gap),一般gap设为切割图像size的20%为宜,可以根据场景中的目标大小进行相应调整。
切割时确保图像之间有重叠区域
在实际应用场景中,大家可以根据小目标的分布情况、设备显存大小、时间成本需求与预测精度需求选择适当的方案。
DOTA_devkit工具中提供了ImgSplit.py用于切割DOTA图像数据集,关键函数:
split = splitbase(
** basepath='待分割数据集文件路径',**
** outpath='分割后的数据及文件保存路径'**
** gap=两张被分割图片之间的重叠区域,**
** subsize=分割后的图片size,**
** thresh=如果实例在拆分过程中被截断,thresh决定是否保留实例,默认0.7**
** )**
split.splitdata(rate='裁剪前对图像进行比例resize,该参数用于离线多尺度裁剪')
注意:不规则四边形在裁剪图像过程中有概率会被截断,是否保留该目标参考以下几种情况:
** 1. 被截断后的物体包络框顶点数小于4,该目标不保留**
** 2. 被截断后的物体包络框顶点数大于5,该目标不保留**
** 3. 被截断后的物体包络框与原始目标边框重叠区域占比超过thresh时,正常保留目标**
** 4. 第3种情况中重叠区域占比低于thresh时,目标的diffcult设为2,即更难识别的目标**
文件包含关系以及label文本文件中的数据格式同DOTA.py中的要求一样,在其分割函数splitbase中最重要的参数为gap,subsize:(a)即两张被分割图片之间的重叠像素距离(b)分割后的图片size。
举例:11111182的原始图像,gap=200,subsize=1024,spiltbase处理后的结果为4张size为10241024的图片。
分割演示效果(好像画的不是特别好,意思到了就行)
注意:splitbase会在裁剪时将裁剪的位置信息保留在裁剪后的图片名称中,如P0706__1__0__158.png 图片是将原图 P0706.png resize为原来的1倍,在width=0,height=158处进行裁剪,该位置信息在merge检测结果这一步骤中至关重要,因此不要更改切割后的图片以及label文件的文件名称。
代码中也考虑到了原图小于subsize的情况,此时待分割图像会经像素填充至subsize大小。
原图小于10241024,此时切割函数会将原图填充至10241024
之后如果切割后的空白标签太多 可使用delete_label_img.py脚本