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 训练数据配置文件
-
static
-
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, ...])
-
static
-
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: