要针对 Survey123 外业应用程序准备智能助手,您必须具有对象检测或图像分类模型。 您可以创建智能助手所用的模型,从 ArcGIS Living Atlas of the World 下载模型或通过内置 API 访问模型。 有关详细信息,请参阅智能助手。
将智能属性添加至调查
以下各节概述了如何将智能属性添加至调查。
添加模型
要将模型添加至调查,请完成以下步骤:
- 在 Survey123 Connect 中创建调查。
- 添加一个图像问题。
- 将模型文件(<model_name>.tflite 和 <model_name>.txt 或 <model_name>.emd)复制到调查的媒体文件夹。
- 在 bind::esri:parameters 列中添加 smartAttributes 参数并指定模型的名称。
smartAttributes=CommonObjectDetection
- (可选)在 bind::esri:parameters 列中模型名称的后面包含属性,以控制最小置信度得分、照相机预览、标注和对象类别。 使用“与”号 (&) 分隔属性。
smartAttributes=CommonObjectDetection&minScore=0.6&cameraPreview=true
在采集图像后,在图像中检测到的对象会写入其 EXIF 元数据。 可以使用调查中的计算从图像中提取属性并将其用于其他问题。
下表列出了可与 smartAttributes 参数搭配使用的必需和可选属性:
属性 | 默认值 | 描述 |
---|---|---|
<model_name> | N/A | 必填项。 对象检测或图像分类模型。 模型名称不能包含空格。 名称必须与在调查媒体文件夹中存储的模型文件的文件名(不带扩展名)一致。 值:<model_name> 示例:
|
minScore | 0.5 | 可选。 指定对象检测或图像分类的最低置信度。 值:0 - 1 示例:
|
cameraPreview | false | 可选。 启用实时预览。 模型检测到的对象在实时照相机视图中通过边界框标识。 值:true | false 示例:
|
label | true | 可选。 指定是否在照相机预览中显示对象类别标注。 这仅在 cameraPreview=true 时有效。 值:true | false 示例:
|
类 | N/A(将使用模型中的所有类别) | 可选。 要检测的对象类别。 将忽略模型中的所有其他类别。 类别名称必须与模型中的类别相同。 可以提供多个类别,以逗号分隔。 值:<class name> 示例:
|
从图像中提取属性
要从图像中提取属性,请完成以下步骤:
- 在调查中添加文本或计算问题。
如果您使用文本问题,JSON 对象将在表单上可见。 如果您使用计算问题,JSON 对象不会在表单上可见,但是值可以被其他问题引用。
- 在 calculation 列中,输入以下表达式:string(pulldata("@exif", ${photo}, "ImageDescription"))
此表达式用于从图像的 EXIF 元数据中以 JSON 对象的形式检索图像描述。 确保问题的 bind::esri:fieldLength 列的长度足以存储结果。 JSON 包含有关在图像中检测到的对象的信息,其中 classNames 为对象类别的逗号分隔列表,classes 列出了每个对象的名称、得分和边界框坐标。 请参阅以下示例:
{ "classNames": "person,bottle,keyboard", "classes": [ { "name": "person", "score": 0.67421875, "xmin": 47, "ymin": 20, "xmax": 1086, "ymax": 262 }, { "name": "bottle", "score": 0.7625, "xmin": 237, "ymin": 469, "xmax": 552, "ymax": 639 }, { "name": "keyboard", "score": 0.55078125, "xmin": 28, "ymin": 49, "xmax": 1078, "ymax": 385 } ] }
- 在名为 results 的调查中添加文本问题。
- 在 calculation 列中,输入以下表达式:string(pulldata("@json", ${results}, "classNames"))
此表达式用于从 JSON 对象中检索 classNames 值。
有关 pulldata("@json") 函数的详细信息,请参阅从 JSON 中检索值。
可以从结果问题中检索相应的结果,并用于填充单选、多选或其他文本问题。 例如,请参阅 Survey123 Connect 中的“智能属性”示例调查。
将智能注记添加至调查
要将智能注记添加至调查,请完成以下步骤:
- 在 Survey123 Connect 中创建调查。
- 添加具有注记外观的图像问题。
(可选)在图像问题的 body::esri:style 列中键入 method=camera,browse。 注记外观的默认行为是允许使用外业应用程序中的照相机拍摄新照片。添加 method=camera,browse 可确保智能注记可与从设备存储中选择的图像以及使用照相机拍摄的照片搭配使用。
- 将模型文件(<model_name>.tflite 和 <model_name>.txt 或 <model_name>.emd)复制到调查的媒体文件夹。
- 在 bind::esri:parameters 列中添加 smartAnnotation 参数并指定模型的名称。
smartAnnotation=CommonObjectDetection
- (可选)在 bind::esri:parameters 列中模型名称的后面包含属性,以控制最小置信度得分、照相机预览、标注、对象类别、边界框和字体格式。 使用“与”号 (&) 分隔属性。
smartAnnotation=CommonObjectDetection&minScore=0.6&cameraPreview=true&class=car&fontSize=24
在采集图像后,在图像中检测到的对象将通过边界框和标注在注记画布上识别。 您可以添加、修改和删除注记。
下表列出了可与 smartAnnotation 参数搭配使用的必需和可选属性:
属性 | 默认值 | 描述 |
---|---|---|
<model_name> | N/A | 必填项。 对象检测模型。 模型名称不能包含空格。 名称必须与在调查媒体文件夹中存储的模型文件的文件名(不带扩展名)一致。 值:<model_name> 例如:
|
minScore | 0.5 | 可选。 指定对象检测的最低置信度。 值:0 - 1 例如:
|
cameraPreview | false | 可选。 启用实时预览。 模型检测到的对象在实时照相机视图中通过边界框标识。 值:true | false 例如:
|
label | true | 可选。 指定是否在照相机预览和注记画布中显示对象类别标注。 这仅在 cameraPreview=true 时有效。 值:true | false 例如:
|
类 | N/A(将使用模型中的所有类别) | 可选。 要检测的对象类别。 将忽略模型中的所有其他类别。 类别名称必须与模型中的类别相同。 可以提供多个类别,以逗号分隔。 值:<class name> 例如:
|
boundingBoxes | true | 可选。 指定是否将边界框多边形创建为注记画布中的图形元素,以标识检测到的对象。 值:true | false 例如:
|
outlineWidth | 2 | 可选。 指定边界框的宽度。 这仅在 boundingBoxes=true 时有效。 值:<integer> 例如:
|
font | Survey123 外业应用程序字体 | 可选。 用于注记画布中的标注的字体。 注:并非每种字体均可在所有设备上使用。 查看首选设备生成的注记,以确保注记按预期显示。 值:<font name> 例如:
|
fontSize | 20 | 可选。 指定标注在注记画布中的大小。 值:<integer> 例如:
|
bold | false | 可选。 指定是否将粗体格式应用于注记画布中的标注。 值:true | false 例如:
|
italic | false | 可选。 指定是否将斜体格式应用于注记画布中的标注。 值:true | false 例如:
|
可通过创建自定义注记选项板,自定义如何在画布中注释对象。 您可以格式化标注并定义用于识别每个对象类的边界框或标记符号的样式。 要将自定义注记样式应用于对象类,XLSPalette 模板的 label 列中的值必须与模型中的类别名称一致。 有关详细信息,请参阅绘制和注记板。
注:
将自定义注记选项板与智能注记一起使用时,将忽略以下属性:
- label(仅限注记画布)
- boundingBoxes
- outlineWidth
- font
- fontSize
- bold
- italic
将智能涂黑应用于调查
可通过将 redaction 参数添加至 bind::esri:parameters 列,向调查中的图像问题添加涂黑。 可通过三种方式配置调查中的图像涂黑:
- 通过在调查中包含模型添加涂黑。 此方法适用于 Android、iOS 和 Windows。
- 添加内置面涂黑。 此方法适用于 Android 和 iOS。 用户可能需要在外业应用程序中打开增强型照相机功能,才能启用智能涂黑。 有关详细信息,请参阅机器学习。
- 仅添加手动涂黑。 此方法允许用户手动添加边界框,涂黑图像的各个区域。 此方法适用于 Android、iOS 和 Windows。
下表列出了可与 redaction 参数搭配使用的必需和可选属性。
属性 | 默认值 | 描述 |
---|---|---|
<model_name> | N/A | 必填项。 对象检测模型。 模型名称不能包含空格。 名称必须与在调查媒体文件夹中存储的模型文件的文件名(不带扩展名)一致。 或者,使用 @faces 使用内置面检测或使用 @manual 仅启用手动涂黑。 值:<model_name> | @faces | @manual 例如:
|
minScore | 0.5 | 可选。 指定对象检测的最低置信度。 当模型名称为 @faces 或 @manual 时,将忽略此项。 值:0 - 1 例如:
|
cameraPreview | false | 可选。 启用实时预览。 模型检测到的对象在实时照相机视图中通过边界框标识。 当模型名称为 @manual 时,将忽略此项。 值:true | false 例如:
|
label | true | 可选。 指定是否在照相机预览中显示对象类别标注。 这仅在 cameraPreview=true 时有效。 值:true | false 例如:
|
类 | N/A(将使用模型中的所有类别) | 可选。 要检测的对象类别。 将忽略模型中的所有其他类别。 类别名称必须与模型中的类别相同。 当模型名称为 @faces 或 @manual 时,将忽略此项。 值:<class_name>,以逗号 (,) 分隔 例如:
|
engine | N/A | 可选。 使用 Apple 内置 Vision API 进行面检测。 有关详细信息,请参阅机器学习。 此属性仅当模型名称为 @faces 时有效,并且仅适用于 iOS 设备。 值:vision 例如:
|
effect | 像素化 | 可选。 指定要应用于涂黑区域的涂黑效果。 值:pixelate | blur | blockout | symbol 例如:
|
符号 | N/A | 可选。 要应用于涂黑区域的符号。 这仅在 effect=symbol 时有效。 值:<Emoji> | <SVG file name> 例如:
|
fillColor | #000000 | 可选。 遮挡框的填充颜色。 这仅在 effect=blockout 时有效。 值:<HTML color name> | <hex color code> 例如:
|
scale | 1 | 可选。 指定边界框的大小,不超过默认大小的两倍。 当模型名称为 @manual 时,将忽略此项。 值:1 | 2 例如:
|
通过包含模型添加涂黑
要通过包含对象检测模型向调查添加涂黑,请执行以下步骤:
- 在 Survey123 Connect 中创建调查。
- 添加一个图像问题。
- 将模型文件(<model_name>.tflite 和 <model_name>.txt 或 <model_name>.emd)复制到调查的媒体文件夹。
- 在 bind::esri:parameters 列中添加 redaction 参数并指定模型的名称。
redaction=CommonObjectDetection
- (可选)在 bind::esri:parameters 列中模型名称的后面包含属性,以控制最小置信度得分、照相机预览标注、对象类别、engine 和涂黑效果。 使用“与”号 (&) 分隔属性。
redaction=CommonObjectDetection&minScore=0.6&cameraPreview=true&effect=blur
添加内置面涂黑
要向调查添加内置面涂黑,但不包括对象检测模型,请执行以下步骤:
- 在 Survey123 Connect 中创建调查。
- 添加一个图像问题。
- 在 bind::esri:parameters 列中添加 redaction 参数并将模型命名为 @faces。
redaction=@faces
@faces 属性使用内置技术涂黑图像中的面。 必须在外业应用程序中启用增强型照相机功能,此涂黑才会生效。 有关详细信息,请参阅机器学习。
- (可选)在 bind::esri:parameters 列中模型名称的后面包含属性,以控制最小置信度得分、照相机预览标注、对象类别、engine 和涂黑效果。 使用“与”号 (&) 分隔属性。
redaction=@faces&cameraPreview=true&effect=blur
添加手动涂黑
要向调查添加手动涂黑,请完成以下步骤:
- 在 Survey123 Connect 中创建调查。
- 添加一个图像问题。
- 在 bind::esri:parameters 列中添加 redaction 参数并将模型命名为 @manual。
redaction=@manual
- (可选)在 bind::esri:parameters 列中模型名称的后面包含属性,以控制涂黑效果。 使用“与”号 (&) 分隔属性。
redaction=@manual&effect=blockout&fillColor=#000000