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, input_compare_data=None, **kwargs)

训练数据生成

将整幅影像数据和与其匹配的矢量标注数据切分为指定大小的瓦片,用于深度学习训练。
生成的训练数据一般包括图片、标注、以及相关元信息,其中切分后的图片和标注文件名一一对应。
param input_data:
 输入的影像数据,支持影像文件
type input_data:
 str
param input_label:
 输入的矢量标注数据,支持矢量数据集
type input_label:
 str ot DatasetVector
param label_class_field:
 矢量标注数据的类型字段,如指定None则认定全部标注为同一类型
type label_class_field:
 str or None
param output_path:
 输出的训练数据存储路径
type output_path:
 str
param output_name:
 输出的训练数据名称
type output_name:
 str
param training_data_format:
 输出的训练数据格式,支持 VOC, Object_D, VOC_MASK,MULTI_C, BINARY_C, SCENE_C, Object_E,GENERAL_CHANGE_DET
type training_data_format:
 str
param tile_format:
 影像瓦片格式,支持 tif, jpg, png, origin
type tile_format:
 str
param tile_size_x:
 x方向瓦片大小
type tile_size_x:
 int
param tile_size_y:
 y方向瓦片大小
type tile_size_y:
 int
param tile_offset_x:
 x方向瓦片偏移量
type tile_offset_x:
 int
param tile_offset_y:
 y方向瓦片偏移量
type tile_offset_y:
 int
param tile_start_index:
 瓦片命名起始索引值,默认为0,当调用该接口处理多幅影像时可设置为-1
type tile_start_index:
 int
param save_nolabel_tiles:
 是否保存无标签覆盖的瓦片,对象提取和目标检测该参数不生效
type save_nolabel_tiles:
 bool
param input_compare_data:
 变化检测对比影像
return: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 训练数据配置文件
Object_D格式:
./Object_D
./Object_D/Annotations_train/000000001.txt 训练集标签
./Object_D/Annotations_val/000000010.txt 验证集标签
./Object_D/Images/000000001.tif 影像瓦片
./Object_D/Object_D.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 训练数据配置文件
Object_E格式:
./Object_E
./Object_E/Annotations/000000001.xml 目标标签
./Object_E/Images/000000001.tif 影像瓦片
./Object_E/ImageSets/Main/train.txt, val.txt, test.txt, trainval.txt 训练集瓦片名称、验证集瓦片名称、测试集瓦片名称、训练集与验证集瓦片名称
./Object_E/SegmentaionObject/000000001.png Mask标签瓦片
./Object_E/Object_E.sda 训练数据配置文件
GENERAL_CHANGE_DET格式:
./GENERAL_CHANGE_DET
./GENERAL_CHANGE_DET/Images1/00000000.tif 影像瓦片
./GENERAL_CHANGE_DET/Images2/00000000.tif 影像瓦片
./GENERAL_CHANGE_DET/Masks/00000000.png 标签瓦片
./GENERAL_CHANGE_DET/GENERAL_CHANGE_DET.sda 训练数据配置文件
class iobjectspy.ml.vision.ImageryEvaluation

基类:object

static binary_classification(inference_data, ground_truth_data, inference_class_value_field=None, ground_truth_class_value_field=None, metric_type=None, out_data='', out_data_name='metric')

影像二元分类模型评估接口,可基于输入的真实标签数据和预测标签数据计算结果,支持影像和影像数据计算,矢量和矢量数据计算。

参数:
  • inference_data (str or DatasetVector) -- 必选参数。推理结果数据集,输入的矢量面数据集来自于模型推理object_detect_infer
  • ground_truth_data (str or DatasetVector) -- 必选参数。真实标签数据集,输入的矢量面数据集来自于真实的标签数据集
  • inference_class_value_field (str or None) -- 可选参数。推理结果数据包含类别字段名。如果指定的字段为None,则默认去找'value'字段,若字段不存在,则所有记录都被认定为是同一个类
  • ground_truth_class_value_field (str or None) -- 可选参数。真实数据类别字段名。如果指定的字段为None,则默认去找'value'字段,若字段不存在,则所有记录都被认定为是同一个类
  • metric_type (str or None) -- 可选参数。待计算的指标名称。默认为None,为None时输出该功能全部指标。支持的metric_type为:PA,IoU,F1,Kappa
  • out_data (str or Datasource or DatasourceConnectionInfo) -- 可选参数。输出文件(或数据源)路径
  • out_data_name (str) -- 可选参数。输出文件(或数据集)名称
返回:

tuple (metric_type ,[dict, dict, ...])

static general_change_detection(inference_data, ground_truth_data, inference_class_value_field=None, ground_truth_class_value_field=None, metric_type=None, out_data='', out_data_name='metric')

影像通用变化检测模型评估接口,可基于输入的真实标签数据和预测标签数据计算结果,支持影像和影像数据计算,矢量和矢量数据计算。

参数:
  • inference_data (str or DatasetVector) -- 必选参数。推理结果数据集,输入的矢量面数据集来自于模型推理object_detect_infer
  • ground_truth_data (str or DatasetVector) -- 必选参数。真实标签数据集,输入的矢量面数据集来自于真实的标签数据集
  • inference_class_value_field (str or None) -- 可选参数。推理结果数据包含类别字段名。如果指定的字段为None,则默认去找'value'字段,若字段不存在,则所有记录都被认定为是同一个类
  • ground_truth_class_value_field (str or None) -- 可选参数。真实数据类别字段名。如果指定的字段为None,则默认去找'value'字段,若字段不存在,则所有记录都被认定为是同一个类
  • metric_type (str or None) -- 可选参数。待计算的指标名称。默认为None,为None时输出该功能全部指标。支持的metric_type为:PA,IoU,F1,Kappa
  • out_data (str or Datasource or DatasourceConnectionInfo) -- 可选参数。输出文件(或数据源)路径
  • out_data_name (str) -- 可选参数。输出文件(或数据集)名称
返回:

tuple (metric_type ,[dict, dict, ...])

static multi_classification(inference_data, ground_truth_data, inference_class_value_field=None, ground_truth_class_value_field=None, metric_type=None, out_data='', out_data_name='metric')

影像地物分类模型评估接口,可基于输入的真实标签数据和预测标签数据计算结果,支持影像和影像数据计算,矢量和矢量数据计算。

参数:
  • inference_data (str or DatasetVector) -- 必选参数。推理结果数据集,输入的矢量面数据集来自于模型推理object_detect_infer
  • ground_truth_data (str or DatasetVector) -- 必选参数。真实标签数据集,输入的矢量面数据集来自于真实的标签数据集
  • inference_class_value_field (str or None) -- 可选参数。推理结果数据包含类别字段名。如果指定的字段为None,则默认去找'value'字段,若字段不存在,则所有记录都被认定为是同一个类
  • ground_truth_class_value_field (str or None) -- 可选参数。真实数据类别字段名。如果指定的字段为None,则默认去找'value'字段,若字段不存在,则所有记录都被认定为是同一个类
  • metric_type (str or None) -- 可选参数。待计算的指标名称。默认为None,为None时输出该功能全部指标。支持的metric_type为:F1,CPA,IoU,Kappa,mPA,mIoU
  • out_data (str or Datasource or DatasourceConnectionInfo) -- 可选参数。输出文件(或数据源)路径
  • out_data_name (str) -- 可选参数。输出文件(或数据集)名称
返回:

tuple (metric_type ,[dict, dict, ...])

static object_detection(inference_data, ground_truth_data, inference_class_value_field=None, ground_truth_class_value_field='category', metric_type=None, out_data='', out_data_name='metric', iou_thr='')

影像目标检测模型评估接口,可基于输入的预测标签数据集与真实标签数据集计算结果计算指标(只支持规则正矩形数据)

参数:
  • inference_data (str or DatasetVector) -- 必选参数。推理结果数据集,输入的矢量面数据集来自于模型推理object_detect_infer
  • ground_truth_data (str or DatasetVector) -- 必选参数。真实标签数据集,输入的矢量面数据集来自于真实的标签数据集
  • inference_class_value_field (str or None) -- 可选参数。推理结果数据包含类别字段名。如果指定的字段为None,则默认去找'value'字段,若字段不存在,则所有记录都被认定为是同一个类。
  • ground_truth_class_value_field (str or None) -- 可选参数。真实数据类别字段名。如果指定的字段为None,则默认去找'value'字段,若字段不存在,则所有记录都被认定为是同一个类。
  • metric_type (str or None) -- 可选参数。待计算的指标名称。默认为None,为None时输出该功能全部指标。支持的metric_type为:F1、Recall、Precision、AP、mAP。
  • out_data (str or Datasource or DatasourceConnectionInfo) -- 可选参数。输出文件(或数据源)路径
  • out_data_name (str) -- 可选参数。输出文件(或数据集)名称
  • iou_thr (float) -- 可选参数。IoU(Intersection over Union)用作评估目标检测模型准确性的阈值的交集与并集的比率.分子是推理边界框和真实边界框之间的重叠区域,分母是两个边界框合并的区域。IoU值应在0到1的范围内,[0,1] 示例:0.5
返回:

tuple (metric_type ,[dict, dict, ...])

static object_extraction(inference_data, ground_truth_data, inference_class_value_field=None, ground_truth_class_value_field='category', metric_type=None, out_data='', out_data_name='metric', iou_thr='')

影像对象提取模型评估接口,可基于输入的预测标签数据集与真实标签数据集计算结果计算指标

参数:
  • inference_data (str or DatasetVector) -- 必选参数。推理结果数据集,输入的矢量面数据集来自于模型推理object_detect_infer
  • ground_truth_data (str or DatasetVector) -- 必选参数。真实标签数据集,输入的矢量面数据集来自于真实的标签数据集
  • inference_class_value_field (str or None) -- 可选参数。推理结果数据包含类别字段名。如果指定的字段为None,则默认去找'value'字段,若字段不存在,则所有记录都被认定为是同一个类。
  • ground_truth_class_value_field (str or None) -- 可选参数。真实数据类别字段名。如果指定的字段为None,则默认去找'value'字段,若字段不存在,则所有记录都被认定为是同一个类。
  • metric_type (str or None) -- 可选参数。待计算的指标名称。默认为None,为None时输出该功能全部指标。支持的metric_type为:F1、Recall、Precision、AP、mAP。
  • out_data (str or Datasource or DatasourceConnectionInfo) -- 可选参数。输出文件(或数据源)路径
  • out_data_name (str) -- 可选参数。输出文件(或数据集)名称
  • iou_thr (float) -- 可选参数。IoU(Intersection over Union)用作评估目标检测模型准确性的阈值的交集与并集的比率.分子是推理边界框和真实边界框之间的重叠区域,分母是两个边界框合并的区域。IoU值应在0到1的范围内,[0,1] 示例:0.5
返回:

tuple (metric_type ,[dict, dict, ...])

class iobjectspy.ml.vision.ImageryTrainer(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, gpus=[0], init_data=True, **kwargs)

基类:object

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

参数:
  • train_data_path (str) -- 训练数据路径
  • config (str) -- 配置文件路径
  • epoch (int) -- 迭代次数
  • batch_size (int) -- 批数据大小
  • lr (float or None) -- 学习率
  • 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 or None) -- 预训练模型路径(可选)
binary_classify_train()

二元分类模型训练功能

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

返回:None
general_change_detection_train()

通用变化检测模型训练功能

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

返回:None
multi_classify_train()

地物分类训练功能

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

返回:None
object_detect_train()

目标检测模型训练功能

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

返回:None
object_extract_train()

对象提取训练功能

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

返回:None
scene_classify_train()

场景分类训练功能

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

返回:None
class iobjectspy.ml.vision.PictureTrainer(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, gpus=[0], init_data=True, **kwargs)

基类: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 or None) -- 预训练模型路径(可选)
object_detect_train()

目标检测模型训练功能

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

返回:None
object_extraction_train()

目标检测模型训练功能

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

返回:None
picture_classify_train()

图片分类训练功能

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

返回:None
picture_object_extraction_train()

图片分割训练功能:基于Mask-rcnn

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

返回:None
class iobjectspy.ml.vision.ImageryInference(model_path, gpus=[0], batch_size=1, **kwargs)

基类:object

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

参数:
  • model_path (str) -- 模型存储路径
  • gpus (list) -- 模型推理设备
  • batch_size (int) -- 单次推理数量
binary_classify_infer(input_data, out_data, out_dataset_name, offset, result_type, infer_region=None, **kwargs)

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

参数:
  • input_data (str or Dataset or List) -- 待推理的数据
  • out_data (str or Datasource or DatasourceConnectionInfo) -- 输出文件(或数据源)路径
  • out_dataset_name (str) -- 输出文件(或数据集)名称
  • offset (int) -- 图像分块偏移,其值为分块间重叠部分大小。大幅图像需分块预测,以提高图像块边缘预测结果
  • result_type (str) -- 结果返回类型,支持矢量面和栅格: 'region' or 'grid'
  • infer_region (vector or bounds or list(bounds or str)) -- 指定推理范围,输入矢量面或角点坐标, 默认None
返回:

数据集列表

close()

清空已加载的模型

general_changedet_infer(input_data, input_compare_data, out_data, out_dataset_name, offset, result_type, infer_region=None, **kwargs)

遥感影像数据通用变化检测 支持 tif、img (Erdas Image) 等影像文件,分类结果为二值栅格或矢量文件 支持SuperMap SDX下的影像数据集,分类结果为矢量或栅格数据集

参数:
  • input_data -- 待推理的数据
  • input_compare_data -- 待推理的数据
  • out_data (str or Datasource or DatasourceConnectionInfo) -- 输出文件(或数据源)路径
  • out_dataset_name (str) -- 输出文件(或数据集)名称
  • offset (int) -- 图像分块偏移,其值为分块间重叠部分大小。大幅图像需分块预测,以提高图像块边缘预测结果
  • result_type (str) -- 结果返回类型,支持矢量面和栅格: 'region' or 'grid'
  • infer_region (vector or bounds or list(bounds or str)) -- 指定推理范围,输入矢量面或角点坐标, 默认None
返回:

数据集列表

multi_classify_infer(input_data, out_data, out_dataset_name, offset, result_type, infer_region=None, **kwargs)

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

参数:
  • input_data (str or Dataset or List) -- 待推理的数据
  • out_data (str or Datasource or DatasourceConnectionInfo) -- 输出文件(或数据源)路径
  • out_dataset_name (str) -- 输出文件(或数据集)名称
  • offset (int) -- 图像分块偏移,其值为分块间重叠部分大小。大幅图像需分块预测,以提高图像块边缘预测结果
  • result_type (str) -- 结果返回类型,支持矢量面和栅格: 'region' or 'grid'
  • infer_region (vector or bounds or list(bounds or str)) -- 指定推理范围,输入矢量面或角点坐标, 默认None
返回:

数据集列表

object_classify_infer(input_data, input_region, field_name='class_type', **kwargs)

影像对象分类 支持tif影像数据,对应的影像区域矢量数据集

参数:
  • input_data (str) -- 待推理的数据
  • input_region (DatasetVector) -- 对应的矢量面数据集
  • field_name (str) -- 输出类别的字段名称
返回:

数据集名称

object_detect_infer(input_data, out_data, out_dataset_name, category_name, infer_region=None)

影像数据目标检测

支持 tif、img (Erdas Image) 等影像文件,检测结果为矢量面数据集
参数:
  • input_data (str or Dataset) -- 待推理的数据
  • out_data (str or Datasource or DatasourceConnectionInfo) -- 输出文件(或数据源)路径
  • out_dataset_name (str) -- 输出文件(或数据集)名称
  • category_name (list[str] or str) -- 目标检测类别,支持多类别检测
返回:

数据集名称

object_extract_infer(input_data, out_data, out_dataset_name, return_bbox=False, infer_region=None, **kwargs)

遥感影像数据对象提取 支持 tif、img (Erdas Image)等影像文件,分类结果为矢量文件 支持SuperMap SDX下的影像数据集,分类结果为矢量

参数:
  • input_data (str or Dataset) -- 待推理的数据
  • out_data (str or Datasource or DatasourceConnectionInfo) -- 输出文件(或数据源)路径
  • out_dataset_name (str) -- 输出文件(或数据集)名称
  • score_thresh (float) -- 类别分数的阈值
  • nms_thresh (float) -- nms的阈值
  • return_bbox (bool) -- 是否返回对象的最小外接矩形
  • infer_region (vector or bounds or list(bounds or str)) -- 指定推理范围,输入矢量面或角点坐标, 默认None
返回:

数据集名称

prompt_segmentation_infer(input_data, prompt_type, input_prompt_data, out_data, out_dataset_name, tile_size=1024, offset=0, sample_method=None, **kwargs)

基于SAM模型遥感影像数据对象提取 支持 tif、img (Erdas Image)等影像文件,分类结果为矢量文件 支持SuperMap SDX下的影像数据集,分类结果为矢量

参数:
  • input_data (DatasetImage) -- 待推理的数据
  • prompt_type (str) -- 输入暂时只支持面数据集polygon,无提示noprompt
  • input_prompt_data ('polygon'提示为DatasetVector,'noprompt'提示为None) -- 输入矢量提示数据源
  • out_data (str or Datasource) -- 输出文件(Udbx)路径
  • out_dataset_name (str) -- 输出数据集名称
  • tile_size (int) -- 切块大小, 默认值为1024
  • offset (int) -- 切块重叠度, 默认值为0
  • sample_method (枚举类SAMSamplePointsEnum) -- 采样点策略,polygon默认SAMSamplePointsEnum.HOMOGENEOUS,noprompt默认SAMSamplePointsEnum.UNIFORM
返回:

数据集名称

scene_classify_infer(input_data, out_data, out_dataset_name, result_type, infer_region=None, **kwargs)

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

参数:
  • input_data (str or Dataset or List) -- 待推理的数据
  • out_data (str or Datasource or DatasourceConnectionInfo) -- 输出文件(或数据源)路径
  • out_dataset_name (str) -- 输出文件(或数据集)名称
  • result_type (str) -- 结果返回类型,支持矢量面和栅格: 'region' or 'grid'
  • infer_region (vector or bounds or list(bounds or str)) -- 指定推理范围,输入矢量面或角点坐标, 默认None
返回:

数据集列表

class iobjectspy.ml.vision.PictureInference(model_path, gpus=[0], batch_size=1, **kwargs)

基类:object

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

参数:model_path (str) -- 模型存储路径
close()

清空已加载的模型

object_detect_infer(input_data, out_data, out_dataset_name, category_name)

图片目标检测

支持 jpg、png等图像文件,检测结果为xml
参数:
  • input_data (str or Dataset) -- 待推理的数据
  • out_data (str or Datasource or DatasourceConnectionInfo) -- 输出文件(或数据源)路径
  • out_dataset_name (str) -- 输出文件(或数据集)名称
  • category_name (list[str] or str) -- 目标检测类别,支持多类别检测
返回:

None

object_extract_infer(input_data, out_visual_result, out_txt_result)

基于图片的实例分割 支持jpg、png等图像文件,分类结果为mask(png或者jpg)和txt描述文件 :param input_data: 待推理的数据 :type input_data: str or Dataset :param out_visual_result: 输出检测图像结果路径 :type out_visual_result: str :param out_txt_result: 输出检测txt结果路径 :type out_txt_result: str :return: None

picture_classify_infer(input_data, out_data, out_dataset_name, **kwargs)

图片分类 支持jpg、png等图像文件,分类结果为xml

参数:
  • input_data (str or Dataset) -- 待推理的数据
  • out_data (str or Datasource or DatasourceConnectionInfo) -- 输出文件(或数据源)路径
  • out_dataset_name (str) -- 输出文件(或数据集)名称
  • result_type (str) -- 结果返回类型,支持矢量面和栅格: 'region' or 'grid'
返回:

数据集名字

class iobjectspy.ml.vision.ModelConverter(model_path, output_model_path, **kwargs)

基类:object

模型转换功能入口 支持输出torchscript, onnx等中间模型 支持Libtorch,ONNX Runtime,TensorRT,Ncnn,Openppl,OpenVINO等多个推理引擎

参数:
  • model_path (str) -- 模型存储路径
  • output_model_path (str) -- 模型输出路径
pytorch2onnx()

onnx模型转换 :return:

pytorch2torchscript()

torchscript模型转换 :return: