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)

训练数据生成

将整幅影像数据和与其匹配的矢量标注数据切分为指定大小的瓦片,用于深度学习训练。
生成的训练数据一般包括图片、标注、以及相关元信息,其中切分后的图片和标注文件名一一对应。
参数:
  • input_data (str) -- 输入的影像数据,支持影像文件
  • input_label (str ot DatasetVector) -- 输入的矢量标注数据,支持矢量数据集
  • label_class_field (str or None) -- 矢量标注数据的类型字段,如指定None则认定全部标注为同一类型
  • output_path (str) -- 输出的训练数据存储路径
  • output_name (str) -- 输出的训练数据名称
  • training_data_format (str) -- 输出的训练数据格式,支持 VOC, MULTI_C, BINARY_C, SCENE_C,VOC_MASK,GENERAL_CHANGE_DET
  • 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) -- 是否保存无标签覆盖的瓦片,对象提取和目标检测该参数不生效
  • input_compare_data -- 变化检测对比影像
返回:

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 训练数据配置文件
VOC_MASK格式:
./VOC_MASK
./VOC_MASK/Annotations/000000001.xml 目标标签
./VOC_MASK/Images/000000001.tif 影像瓦片
./VOC_MASK/ImageSets/Main/train.txt, val.txt, test.txt, trainval.txt 训练集瓦片名称、验证集瓦片名称、测试集瓦片名称、训练集与验证集瓦片名称
./VOC_MASK/SegmentaionObject/000000001.png Mask标签瓦片
./VOC_MASK/VOC.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
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_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
返回:

数据集名称

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, xml_result, SegmentationObject_result)

基于图片的实例分割 支持jpg、png等图像文件,分类结果为mask(png或者jpg)和xml描述文件

参数:
  • input_data (str or Dataset) -- 待推理的数据
  • xml_result -- 输出xml文件(或数据源)路径
  • SegmentationObject_result (str or Dataset) -- 输出mask文件(或数据源)路径
  • score_thresh (float) -- 类别分数的阈值
  • nms_thresh (float) -- nms的阈值
返回:

数据集名称

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: