iobjectspy.ml.vision package

Module contents

class iobjectspy.ml.vision.DataPreparation

基类:object

图像数据准备流程入口

static create_training_data(input_data, input_label, label_class_field, output_path, output_name, training_data_format, tile_format='jpg', tile_size_x=1024, tile_size_y=1024, tile_offset_x=512, tile_offset_y=512, tile_start_index=0, save_nolabel_tiles=False, **kwargs)

训练数据生成

将整幅影像数据和与其匹配的矢量标注数据切分为指定大小的瓦片,用于深度学习训练。
生成的训练数据一般包括图片、标注、以及相关元信息,其中切分后的图片和标注文件名一一对应。
参数:
  • input_data (str) -- 输入的影像数据,支持影像文件
  • input_label (DatasetVector) -- 输入的矢量标注数据,支持矢量数据集
  • label_class_field (str or None) -- 矢量标注数据的类型字段,如指定None则认定全部标注为同一类型
  • output_path (str) -- 输出的训练数据存储路径
  • training_data_format (str) -- 输出的训练数据格式,支持 VOC, MULTI_C, BINARY_C, SCENE_C
  • tile_format (str) -- 影像瓦片格式,支持 tif, jpg, png, origin
  • tile_size_x (int) -- x方向瓦片大小
  • tile_size_y (int) -- y方向瓦片大小
  • tile_offset_x (int) -- x方向瓦片偏移量
  • tile_offset_y (int) -- y方向瓦片偏移量
  • tile_start_index (int) -- 瓦片命名起始索引值,默认为0,当调用该接口处理多幅影像时可设置为-1
  • save_nolabel_tiles (bool) -- 是否保存无标签覆盖的瓦片
返回:

None

VOC格式:
./VOC
./VOC/Annotations/000000001.xml 标签瓦片
./VOC/Images/000000001.jpg 影像瓦片
./VOC/ImageSets/Main/train.txt, val.txt, test.txt, trainval.txt 训练集瓦片名称、验证集瓦片名称、测试集瓦片名称、训练集与验证集瓦片名称
./VOC/VOC.sda 训练数据配置文件
MULTI_C格式:
./MULTI_C
./MULTI_C/Images/00000000.tif 影像瓦片
./MULTI_C/Masks/00000000.png 标签瓦片
./MULTI_C/MULTI_C.sda 训练数据配置文件
BINARY_C格式:
./BINARY_C
./BINARY_C/Images/00000000.tif 影像瓦片
./BINARY_C/Masks/00000000.png 标签瓦片
./BINARY_C/BINARY_C.sda 训练数据配置文件
SCENE_C格式:
./SCENE_C
./SCENE_C/0/00000000.tif 影像瓦片
./SCENE_C/1/00000000.png 影像瓦片
./SCENE_C/2/00000000.tif 影像瓦片
....
./SCENE_C/scene_classification.csv 保存影像文件路径与类别映射关系
./SCENE_C/SCENE_C.sda 训练数据配置文件
class iobjectspy.ml.vision.Trainer(train_data_path, config, epoch, batch_size, lr, output_model_path, output_model_name, backbone_name, backbone_weight_path=None, log_path='./', reload_model=False, pretrained_model_path=None)

基类:object

图像数据模型训练功能入口,

参数:
  • train_data_path (str) -- 训练数据路径
  • config (str) -- 配置文件路径
  • epoch (int) -- 迭代次数
  • batch_size (int) -- 批数据大小
  • lr (float) -- 学习率
  • output_model_path (str) -- 输出模型文件路径
  • output_model_name (str) -- 输出模型的文件名
  • backbone_name (str) -- 主干网络名
  • backbone_weight_path (str or None) -- 主干网络模型文件路径,若为None则随机初始化模型权重
  • log_path (str) -- 日志及checkpoint输出路径
  • reload_model (bool) -- 是否重载之前训练的checkpoint模型
  • pretrained_model_path (str) -- 预训练模型路径(可选)
binary_classify_train()

二元分类模型训练功能

生成模型将存储在输入的 ‘output_model_path’ 路径下

返回:None
multi_classify_train()

地物分类训练功能

生成模型将存储在输入的 ‘output_model_path’ 路径下

返回:None
object_detect_train()

目标检测模型训练功能

生成模型将存储在输入的 ‘output_model_path’ 路径下

返回:None
scene_classify_train()

场景分类训练功能

生成模型将存储在输入的 ‘output_model_path’ 路径下

返回:None
class iobjectspy.ml.vision.Inference(input_data, model_path, out_data, out_dataset_name)

基类:object

图像数据模型推理功能入口

参数:
  • input_data (str or Dataset) -- 待推理的数据
  • model_path (str) -- 模型存储路径
  • out_data (str or Datasource or DatasourceConnectionInfo) -- 输出文件(或数据源)路径
  • out_dataset_name (str) -- 输出文件(或数据集)名称
binary_classify_infer(offset, result_type, **kwargs)

遥感影像数据二元分类 支持 tif、img(Erdas Image)等影像文件,以及 jpg、png等图像文件,分类结果为二值栅格或矢量文件 支持SuperMap SDX下的影像数据集,分类结果为矢量或栅格数据集

可添加关键字参数:'dsm_dataset' 输入与影像相匹配的DSM数据,实现基于DOM和DSM提取建筑物面。 其中影像和DSM可以使用SuperMap iDesktop 桌面基于倾斜摄影数据提取:

打开三维场景,使用 三维分析->生成DOM 三维分析->生成DSM,分辨率建议选择0.1m
参数:
  • offset (int) -- 图像分块偏移,大幅图像需分块预测,其值为分块间重叠部分大小,以提高图像块边缘预测结果
  • result_type (str) -- 结果返回类型,支持矢量面和栅格: 'region' or 'grid'
返回:

数据集名字

multi_classify_infer(offset, result_type, **kwargs)

遥感影像数据多分类,地物分类 支持 tif、img(Erdas Image)等影像文件,以及 jpg、png等图像文件,分类结果为多值栅格或矢量文件 支持SuperMap SDX下的影像数据集,分类结果为矢量或栅格数据集

参数:
  • offset (int) -- 图像分块偏移,大幅图像需分块预测,其值为分块间重叠部分大小,以提高图像块边缘预测结果
  • result_type (str) -- 结果返回类型,支持矢量面和栅格: 'region' or 'grid'
返回:

数据集名字

object_detect_infer(category_name, nms_thresh=0.3, score_thresh=0.5)

影像数据目标检测

支持 tif、img(Erdas Image)等影像文件,以及 jpg、png等图像文件,检测结果为GeoJSON格式文件
支持SuperMap SDX下的影像数据集,检测结果为矢量线数据集
需要注意:
  • 当 input_data 为待检测文件时,out_data 为输出文件路径,out_dataset_name 为.json后缀的文件名
  • 当 input_data 为待检测数据集时,out_data 为输出数据源路径(或数据源对象),out_dataset_name 为数据集名
参数:
  • category_name (list[str] or str) -- 目标检测类别,支持 'plane', 'ship', 'tennis-court', 'vehicle'
  • nms_thresh (float) -- nms的阈值
  • score_thresh (float) -- 类别分数的阈值
返回:

None

scene_classify_infer(result_type, **kwargs)

遥感影像数据场景分类 支持 tif、img(Erdas Image)等影像文件,以及 jpg、png等图像文件,分类结果为二值栅格或矢量文件 支持SuperMap SDX下的影像数据集,分类结果为矢量或栅格数据集

参数:result_type (str) -- 结果返回类型,支持矢量面和栅格: 'region' or 'grid'
返回:数据集名字