Changelog#
v0.10.3-release (2025-11-30)#
Fix#
Detection: 修复检测工具某些情况下存在无法正常训练的严重问题。
Image: 修复孔洞填充没有连通而当成整体的错误。
Gauge3d: 修复凹坑工具求平均深度值时,当首尾提出比例为0.4时崩溃的问题。
v0.10.2-release (2025-11-26)#
Feat#
Gauge3d: 添加3D凹坑测量算子。
Image: 新增图像固定阈值二值化、自动阈值二值化及孔洞填充算子。
Gauge3d: 添加3D平面度测量算子。
Gauge3d: 添加3D高度测量算子。
Image3d: 添加3D图像平面校正算法。
Gauge3d: 添加3D平面拟合算子。
Detection: 检测工具支持过滤不同类别之间相互交叠的目标。
支持使用Intel Ultra系列CPU及Intel B580系列GPU硬件推理。
ELAssemblyVerification: EL装配检查工具支持使用CPU推理。
Geo3d: 添加3D位姿矩阵定义及变换函数。
添加EL异常检测工具,关于工具的具体功能和使用方法,请查阅文档中有关工具的白皮书和使用说明。
Fix#
ELUnsuperSegmentation: 修复EL非监督分割工具的一些潜在问题。
VLMDetection: 修复VLMDetection工具微调模型后构建推理模型失败的问题。
Geo3d: 修复部分情况下计算的面面交线,线上点的坐标太大的问题。
Project: 新增打开工程时检查工程目录结构损坏的步骤,修复工程子目录丢失却能正常打开的问题。
Geo3d: 求仿射变换矩阵时,当用户输入的源点集和目标点集不满足仿射变换关系时,给出更明确的报错和提示。
Runtime: 在高频反复update_runtime和set_param的情况下,参数可能无法被更新入运行时的问题。
Geo3d: 修复两个平面法向量相近时计算的夹角为0的问题,以及输入两个完全一致的平面夹角为NAN的问题
VLMDetection: 修复VLMDetection训练后推理失败的问题。
Geo3d: 修复三个面交点计算结果不正确的问题。
Geo3d: 修复两个面求交线时,当直线方向向量z分量大于0时,计算的直线上一点结果不正确问题。
修复发布的linux-x64的Dockerfile环境缺失openMP依赖的问题。
v0.10.1-release (2025-10-18)#
Feat#
VLMDetection: 添加VLMDetection模型微调训练功能(仅Linux平台)。
Property: PolygonRegion类型添加扩展信息设置和读取接口,便于用户在脚本工具中自定义输出扩展信息。
Image3d: 3D图像数据类型添加roi接口。
完善Windows平台安装包机制,将部分资源移动到附加资源包中,缩小安装包本体的体积。
添加EL装配检查工具实现,支持更易用的固定目标的装配检查。
ELUnsuperSegmentation: 支持检测长宽占比大于图像的0.5%的异常,并修正一项训练参数的数据类型问题。
田间工程自动修复功能,支持对于创建版本备份的情况下,当工程数据库损坏,但数据没有丢失的时,自动根据版本备份中信息将工程修复并恢复到最近的版本。注意,此功能无法修复没有创建版本备份的工程。
Fix#
Detection: 修复检测工具多个框重叠时容易漏检的问题,及修复标注框尺寸种类过多是容易漏检的问题。
修复不能正确读取路径中含中文字符的LabelImg的XML格式标注的问题。
Segmentation: 修复分割增量训练中隐式下调训练批次的问题。
Gauge: 修复测量工具中找线算子结果端点不在roi上,极性错误,排序错误的问题。
Geometry: 修复直线构造和计算点线距离的精度误差高的问题。
Gauge: 修复凹凸点工具输入ROI和卡尺ROI不匹配的问题。
Detection: 修复检测模块的一些BUG。
CABI: 补充std::set类型的迭代器接口,修复返回的std::set对象在C接口中无法访问其数据成员的问题。
Geometry3d: 修复CSharp中3D几何接口角度对象类型错误的问题。
Image: 修复显示图像时手动关闭显示窗口会导致抛出异常的问题。
修复一些异常情况下可能导致内存泄漏的潜在问题。
修复更新Runtime时可能导致Runtime内部的Python执行器内存泄露的问题。
CSharp: 修正C#接口使用了较高C#语法版本的特性的问题。
Gauge: 修复找线工具结果不稳定的问题。
Runtime: 修复inplace_update_runtime接口无法处理流图变化的潜在问题。
Gauge: 修复找线工具roi旋转180度结果不变的问题。
v0.10.0-release (2025-08-27)#
BREAKING CHANGE#
此版本中修改了视图转换器输出的视图名称来源。原来通过设置视图参数ID控制视图名称的地方, 需要相应的调整为设置视图名称。视图参数ID现在仅用于标识参数组,不再与输出视图的名称关联。
visionflow::InitOptions中的字符串类型存在接口类型上不兼容的修改,使用cppabi及cabi接口的地方需要调整相关的接口调用中的参数类型实现。部分几何库中类型的接口发生了变化,需要修改相对应的调用代码以确保程序能够正常编译和调用。
Feat#
发布适用于Windows平台的VisionFlow安装程序。
参数内容及报错信息等文本添加日本、韩国本地化支持。
添加使用工具类型查询工具名称的接口。命令行工具添加直接使用模型评估图片文件的功能。
支持在软件启动时设置工程中的默认图像存储格式为有损压缩的JPEG格式以优化工程体积;开启此选项后,工程中存储的图像质量可能会有损失,请注意验证是否影响算法效果。
试图转换器支持设置多个同名视图。
Runtime: 添加inplace_update_runtime的接口,允许Runtime就地更新以提高速度及减少资源占用。
新增VLM-Detection工具。
Gauge: 测量工具支持在测量流程中自由处理多页图像,支持不同测量项处理不同图像页。
compatible: 完善导入AIDI2.X标注时过滤不合法标注的过滤规则,避免导入inner在outer之外的标注。
Gauge: 支持查询和修改测量项内容, 支持清空参数。更改测量项是否为函数调用的设计以支持普通无参表达式。
Geo3d: 添加3D几何基础图形(点、向量、平面和直线)和基础算法。
Gauge: 测量工具增加一项RawImageInfo输入,支持在工具内访问图像附加信息,以支持用户针对不同图像使用不同测量处理流程细节的功能需求。
Image3d: 添加3D图像数据结构定义。
Python: 支持在Python接口中捕获visionflow.excepts.DefaultException类型的异常并获得详细的异常类型、异常代码及详细说明信息。
Geometry: 补充求Ring, Polygon, MultiPolygon之间的最小边缘距离的distance_min运算。
绘制区域时添加是否绘制包围框和多边形的选项。
CABI,CPPABI: cabi/cppabi接口添加自定义日志接收对象的完整功能支持。
Fix#
Gauge: 优化测量工具卡尺精度,修复边缘检测算子存在亚像素级偏差的问题。
Image: 修复img::transform中border color参数没有完全生效的问题。
Gauge: 修复测量工具凹凸点工具卡尺排布数量错误的问题。
Gauge: 修复边对卡尺ROI没有超出图像边界时错误抛出异常的问题。
Python: 修复部分运算符重载相关的接口缺失的问题。
Detection: 修复检测工具按类别过滤参数无效的问题。
更新Caffe仓库,修复检测工具训练崩溃问题。
修改库初始化参数类型中字符串配置类型char为std::string类型,修复由于char内存管理问题引发的一些Python接口调用错误及其他内存错误。
Gauge: 修复找圆工具ROI方向和输出圆弧方向不一致问题。
优化视图转换器计算精度,修复吧部分情况下视图掩码生成存在微小尺度偏差的问题。
gauge: 修复找圆和找线卡尺参数和卡尺结果不一致的问题
调整训练过程中的缓存策略,提高保留空余内存容量,降低内存不足的风险。
Gauge: 修正测量工具的参数设置类ScriptPipeline在设定不删除下游依赖项时无法正常删除测量项的问题。
Image: 修复图像融合函数平滑系数超限时,内存访问越界的问题;修复彩色图像融合结果的错误。
GeometrySearch: 调整模板匹配目标数量默认值为1。
GeometrySearch: 优化默认参数可用性,修改噪声阈值参数默认值为20(推荐范围20-60)。
Python: 修复
Project::all_properties_name_typePython接口无法正常调用的问题。Gauge: 修复凹凸点、单边卡尺改变边缘模式结果不正确的问题。
Python: 修复当C++接口中同时存在const和非const修饰的同名函数时,python中可能无法调用非const函数问题。
Image: 修复高动态合成算法自动排序对输入图像顺序依赖的问题。
Refactor#
Geometry: 重构几何库接口形式,简化调用形式;优化Python接口中调用几何库的执行效率。
Geometry: 重构Geometry接口,不再继承标准模板库。
Perf#
ELUnsuperSegmentation: 优化训练及推理过程中的内存及显存占用量,并优化推理效率。
v0.9.1-release (2025-06-05)#
Fix#
Image: 修复部分场景下多曝光、多景深融合算法可能在融合图像中引入融合噪声的问题。
Detection: 修复在没有GPU的环境中,检测工具训练时报错找不到nvml库的问题。
v0.9.0-release (2025-05-26)#
Feat#
Gauge: 修复找圆工具改变查找方向和极性查找失败的问题。
props: ImageInfo属性添加图像的3D深度图变换信息支持。
Detection: 增加参数控制检测输出是否按类别分别过滤。
升级NVIDIA相关依赖库,支持50系列显卡。
CSharp: 添加属性数据访问接口支持,支持使用C#接口从零开始搭建工程、导入数据、标注、训练和推理。
Location: 添加多视图重叠时匹配的模板重复的去重机制。
opers: ViewTagger支持固定视图,支持用户选择将某些视图固定以避免重新应用视图后位置发生变化。
添加
node_names.hpp头文件引用,提升二次开发体验。props: 属性对象默认按照添加顺序排序,以避免同样的数据经过同样的计算操作输出结果顺序会随机变化的问题。
优化关键文件写入实现,防止写文件过程中突然断电、异常关机、软件闪退等情况对工程造成不可逆的严重破坏。
Gauge: 输出数据类型GaugeRegion中添加对MultiPoint2f和vector
类型的支持。 Gauge: 测量工具中添加支持节距测量的算子。
Segmentation: 放开训练批次限制,提高训练时显卡的利用率。
cabi: 完善C语言接口
Gauge: 测量基础算子输入输出几何图形转换到视图坐标系。并提供原图与视图坐标系转换的函数。
Image: 升级智能标注算法,优化智能标注效果。
Image: 新增多焦点图像融合功能,将多张8位灰度图像或24位RGB彩色图像融合为一张融合图像,参与融合的图像需要具有相同格式与分辨率。
Gauge: 支持通过标签管理测量项。
ELUnsuperSegmentation: 训练时打印该模型的推理结果的区域边长的误差范围。
Gauge: GaugeRegion类型添加对椭圆图形的支持。
Gauge: ScriptPipeline添加条件性脚本项,支持if-else逻辑(删除原始的条件设置逻辑,相关需求统一通过条件语句实现);
ELUnsuperSegmentation: 支持占比0.75%的精细的缺陷检测。
按标注和预测结果的中心点是否落在不学习区域内作为过滤标准计算 OCR,检测,定位,装配检查 的统计指标,优化指标的准确性。
Fix#
Geometry: 修复几何库buffer函数某些情况下计算结果可能存在错误的问题,并优化其效率。
Python: 完善全部Python接口(极少部分还有问题,有待修复)。
Project: 修复删除数据集时未检查备份是否存在,导致删除数据集后备份无法使用的问题。
Geometry: 修复几何库由于计算精度问题导致的部分求交、求并计算错误并导致严重的图形丢失的问题;并同步优化多边形求交、求并、求差的速度。
gauge: 修复transform_from_view和transform_to_view函数中角度转换不正确的问题
ELUnsuperSegmentation: 修复EL非监督分割部分情况下分配内存失败导致崩溃的问题。
CPPABI: 跨编译器版本的C++接口添加函数参数缺省值支持。
Segmentation: 修复计算像素级统计指标时,预测区域存在重叠区域而标注未计算重叠区域导致指标可能不准确的问题。
Image: 修复图像融合算法可能错误修改输入图像的问题。
Parameter: 修复ScriptPipeline仅有一个条件分支时执行可能出错的问题。
CPPABI: 修正因接口中使用结构化绑定造成不兼容低版本C++语法的问题。
GeometrySearch: 修复几何匹配工具视图在图像外时推理会报10044或10074错误的问题。
GeometrySearch: 修复”手动梯度幅值相对阈值”参数没有起作用的问题。
修复数据打开失败时系统返回信息编解码错误可能导致日志无法正常输出的问题.
Gauge: 优化测量工具中if-else条件分支的执行效率。
临时方案修复计算精度问题导致的分割模块的训练和测试出现异常的问题。
Detection: 修复复杂检测最大目标参数设置后不起作用的问题。
ELUnsuperSegmentation: 规范EL无监督分割工具训练参数范围限制,修复参数超出范围导致训练崩溃的问题.
GeometrySearch: 修复一定条件下几何匹配算法崩溃问题,并优化训练和推理效率。
GeometrySearch: 几何匹配推理结果添加视图间重复结果的去重机制,修复视图间检出结果重复的问题。
opers: 试图转换器过滤掉因精度导致变换后几何图形非法的视图并通过日志提示。
修复几何库计算精度问题导致的训练集中明显缺陷漏检的问题。
ELUnsuperSegmentation: 修复算法在训练集上无法完全收敛的问题。
Image: 优化计算成像算法的效率修复ROI存在边界外区域时,边界融合位置不正确问题。
CABI: 补充缺少的C接口ConfigureRuntimeProjectAdapter
修复视图掩码与视图完全重叠时视图转换器计算出错的问题。
修订部分文本的英文表述和翻译。
CABI: 补充InputHelper缺少的C接口,补充集成测试
Image: 修复绘制含有空白字符的文本会失败并抛出异常的问题。
CSharp: 修复C#接口命名空间错误的问题,将 visionflow_helpers_global 重命名为 visionflow_helper_global 。
修复视图转换器打印日志时没有正确输出本节点名称的问题。
IDReader: 修复在部分场景中对于同一目标,解码器多次重复解码的结果不稳定的问题。
ELUnsuperSegmentation: 修复掩码视图区域内有缺陷时,视图掩码边缘仍然有可能检出缺陷的问题。
修复工程中存储或读取较大的模型或较大的图片时,有可能因为超出缓存区大小限制而失败的问题。
Geometry: 通过将结果类型精度临时提升为double,修复部分情况下union_areal函数计算错误的问题。
Gauge: 修复CliperLineToSegmentHelper类构造函数初始化顺序不正确的问题
UnsuperSegmentation: 修复推理时视图掩膜区域内出现推理结果的问题。
Perf#
Image: 优化多曝光图像融合算法得运行效率,单线程下耗时比原来降低40%,多线程(>=4)下耗时降低50%。
v0.8.2-release (2025-02-13)#
BREAKING CHANGE#
部分cabi和cppabi接口的参数类型变化(主要变化形态为值传递改为引用或指针传递),请注意修改相关调用代码相关联位置。
缩略图相关接口和数据转移到新的位置,使用到相关接口和数据的地方,务必同步修改才可正常运行。
Feat#
Gauge: 测量工具添加拟合算子,支持拟合圆形、椭圆、直线。
CSharp: C#接口中添加获取GPU硬件信息的相关接口。
Gauge: 只为输出需要的测量项生成脚本,提高脚本运行效率。
geometry: min_angle, distance_min, distance_max, intersection_points和overlaps_infinity_intersect_points添加python接口
props: 测量工具输出属性添加对Arc2f, Line2f类型的支持。
Gauge: 测量工具添加查找凹凸点的算子。
image: 新增多曝光图像融合函数,允许将多张8位灰度图像或24位RGB彩色图像进行融合为一张图像,参与融合的图像需要具有相同格式与分辨率。
Gauge: 测量工具添加找圆算子。
image: 完善img::draw绘制点的功能,支持设置点的粗细。
ELUnsuperClassification: EL无监督分割工具支持选择工具需要处理的图像页,默认处理第一页图像。
AssemblyVerification: 支持选择工具需要处理的图像页面;默认处理所有页面。
ELClassification: 支持具有多页图像的工程,使用时可选择本工具要处理的图像页面。
Gauge: 测量工具参数添加支持统一重命名测量项的接口。
Location: 自动调整迭代次数时通过回调进度信息给出调整的原因和调整后的值。
智能标注支持用户支持设置最大支持的点数目的功能。
绘制区域时支持选择是否绘制名称和得分。
ELUnsuperSegmentation: 训练过程添加进度信息和允许中断训练。
UnsuperSegmentation, UnsuperClassification: 非监督分类/非监督分割支持选择工具要处理的图像页面;默认处理所有图像页面。
GeometrySearch: 几何匹配工具支持选择需要处理的图像页;默认使用第一页图像。
Classification: 添加选项支持选择此工具要处理的图像页;默认处理所有图像页。
OCR, ELOCR: 支持选择要识别的图像页码。默认使用第一页图像训练和推理。
Detection: 检测工具支持选择要处理的的图像页码;默认选择所有图像页面。
Location: 支持选择工具所需要处理的图像页码,默认使用所有页面。
ELUnsuperSegmentation: 支持具有多页图像的工程,使用时可选择本工具要处理的图像页面。
UnsuperSegmentation: 非监督分割新增比对检测模式,比对模式仅适用于所选图像页数量为2的工程。
Segmentation, UnsuperSegmentation: 修改分割非监督分割模块的统计指标逻辑: 过滤不学习区域后再计算指标信息
Detection: 支持选择视图掩膜是否参加训练,根据掩膜过滤推理框。
Gauge: 测量工具支持选择工具中需要储量的图像页面。
GeometrySearch: 训练失败抛异常;优化参数提示信息;
升级第三方依赖库,添加关联管理工具。
ViewFilter: 新增视图过滤支持前缀匹配模式。在视图过滤参数中开启前缀匹配模式后只要区域的名称以过滤参数中的名称作为前缀,就会使用该组参数对区域进行判断,一个区域只要满足任一参数组的条件,就会被保留并输出到后面的视图转换器节点中。
OCR, ELOCR: 过滤出现在视图掩膜内的推理结果。
Input: Input工具新增
props::ImageUserData属性节点;并将缩略图数据从props::RawImageInfo转移到props::ImageUserData中,以避免获取其他图像信息时因不必要的缩略图读取影响执行效率。Segmentation: 分割工具支持选择要处理的的图像页码。
ViewTransformer: 试图转换器输入为ViewList时,支持将输入的ViewList中的掩码保留传递到输出的ViewList中。还有视图转换工具的旧工程需要升级才能与包含此修改的库兼容。
Gauge: 测量工具添加找直线算子。
Location: 使用视图掩码过滤定位结果,避免偶然在掩码区域检出目标。此修改兼容旧工程和模型,但推理效果可能略有变化。
完善几何库within函数,支持判断Point与MultiPolygon之间的关系。
Image: Image添加根据给定索引列表获取多个可视图像的接口。
Segmentation: 使用视图掩码对推理结果过滤以保证推理结果中不出现在掩码掉的区域。
分割工具和非监督分割工具支持选择视图掩码是否参与模型训练。
IDReader: 优化对于矩型ECC 200 DM码的识别率。
Gauge: 添加测量-卡尺工具。
Project: 工程完整支持只读模式打开,一个工程可以同时被一个读写进程和多个只读进程打开。
Fix#
CSharp: 修复C#接口文件内容不完整的问题。
AiAnnotion: 去除对输入图像大小的限制;修复视图大小大于原图时,无法得到正常结果的问题。
Detection: 基于全图对检查结果进行过滤,避免先前不同视图之间存在相互重叠的结果的问题。
Geometry: 修正disjoint求两直线交点错误的问题。
Gauge: 修改依赖判断实现,修复直接获取未运行的求解项导致流程执行异常的问题。
修复指标统计运行时不学习区域为空的情况下可能崩溃的问题。
cabi,cppabi: 修正函数参数是引用或指针的情况下生成的cabi,cppabi接口形态不一致以及引起的BUG问题。
修复训练推理过程中加密狗可能偶然出现响应超时的错误。
修复V100S GPU不支持部分CUDA接口导致软件运行错误的问题。
GeometrySearch: 修复数据集图像数量较多时训练耗时明显增加问题。
Detection: 修复推理结果得分过低,容易被过滤的问题。
修复计算能力在6.0以上的部分GPU不支持的问题。
CSharp: 修复C#接口文件内容不完整的问题。
Perf#
Image: 优化智能标注功能初始化速度,完善异常处理。
ELUnsuperSegmentation: 优化工具训练逻辑,支持添加大批量训练数据;对推理结果使用视图掩码过滤;并优化工具推理效率。注意此升级后原有模型不再支持推理,需要重新训练。
GeometrySearch: 优化处理彩色图像时耗时过长的问题,优化工具整体运行效率;解决训练目标局部位于图像外导致漏检的问题。
v0.8.1-release (2024-11-20)#
BREAKING CHANGE#
升级此版本后,之前训练的检测工具模型不再兼容,需要重新训练才可进行推理。
Feat#
Runtime: 添加批量推理样本的接口。
Runtime: 推理时支持指定推理超时时间,超时后不再继续推理,直接返回。
Segmentation: 添加分割工具高精度模型的增量训练功能支持。
Model: 添加从模型复制工具到工程的接口。
props: 新增用于存储缩略图和其他图像相关的用户自定义数据的属性类型props::ImageUserData。
Detection: 添加复杂检测模型;修复原有检测模型效果问题。
CSharp: 提供Project相关调用接口的C#封装。
Project: 工程和模型支持强制打开。仅建议在极少数必要情况下,在确认库和工程数据内容匹配后使用强制打开。非必要不建议使用此模式,以免造成软件崩溃甚至对工程数据造成不可逆的损坏。
GeometrySearch: 规范几何匹配参数定义。
props: 为IRegion和IRegionList实现draw_on接口,支持以默认行为直接渲染在图像上,简化绘制检测结果和标注的实现。
增加自动对焦算法的C#接口
cppabi: cppabi中标准库对应类型的c++接口支持直接和对应的原生C++类型互相转换。
Python: Image添加to_numpy和from_numpy接口。
ELUnsuperSegmentation: EL无监督分割工具支持NvidiaGPU推理
Project: 添加从模型创建新工程的功能。
新增AutoImaging工具类,支持特定硬件的自动成像功能;
ELClassification和ELUnsuperClassification工具增加对训练视图数量的检查,避免没有训练视图时导致错误。
Segmentation: 添加缺陷大小仿真功能,提升分割模块对于缺陷面积大小变化的适应性。
Gauge: 添加测量工具流程编排及算法执行功能实现。
优化ELClassification和ELUnsuperClassification工具的推理效率。
Geometry: 添加求直线、线段、圆形交点的函数;添加求直线最小夹角的函数。
新增EL无监督分割工具,用于简单场景下的异常区域分割。
Geometry: 添加计算几何图形边缘之间的最大距离和最小距离的函数
distance_max,distance_min.img: 添加在图像上渲染常见文字的功能。
Fix#
AutoImanging: 修复当在对焦范围内,最佳的对焦值是对焦范围边界值时,对焦不准的问题。
ELUnSuperSegmentation: 修复EL非监督分割GPU训练可能崩溃的问题,解决图像分辨率较大时效果差的问题。
修复ViewTransformer输出的ViewList名称没有正确设置的问题。
SampleSet: 修正
PropertySet::erase()没有正确处理返回值信息的问题,完善数据库访问的错误处理。Geometry: 修复通过min_area_rect接口求取得到的部分最小外接矩形宽高异常的问题。
Python: 修复Python接口返回引用时, 父对象析构导致数据错误的问题。
DM: 修复DM包仍然依赖于cuda的问题。
修复Linux平台库推理训练和结果错误的问题。
Python: 修复visionflow::Buffer的函数在python中无法使用的问题。
修复Linux平台依赖库接口和用户的接口可能冲突的问题
移除Datapack中多余的未实现接口
修复未引入python内置模块导致某些使用的内置函数的python脚本执行报错的问题。
Sample: 修复sample拷贝不完整导致复制后get接口调用崩溃的问题。
Geometry: 修正
min_area_rect()部分情况下计算错误的问题。修复SchemableParameter的子类通过load接口反序列化会失败的问题。
Detection: 修复推理批次大于1时,检测工具推理结果不正确的问题。
修复update_runtime接口返回的Runtime对象运行中可能崩溃的问题
EL-OCR: 修复推理结果得分可能低于阈值的问题。
修复EL算法工具在SC100平台上多模块并行推理可能崩溃的问题。
IDReader: 修复解码roi超出图像边界时报错的问题。
GeometrySearch: 几何匹配推理ROI设置范围允许达到图像边界
geometry: 修复 min_area_rect() 函数计算错误的问题。
修复 runtime_timing_cache_path 不支持中文路径的问题。
修复EL相关工具推理时发生结果得分为NaN的问题;优化EL-OCR工具推理速度。
CameraCalibration: 修复图像标定工具运算过程中可能由于数据溢出导致结果错误的问题;
EL-OCR: 修复由于视图尺寸存在浮点数误差导致的推理失败
Location: 修复推理结果中点保存为整形导致浮点结果精度偏差的问题。
csharp: 修正 ViewList CSharp缺失部分接口的问题。
IDReader: 修复读码工具输入未进行灰度图检查导致后续崩溃的问题
IDReader: 修复读码工具长时间运行崩溃的问题
el_ocr: 修复通用识别模型输出小写字母的问题
Classification: 修正分类视图级混淆矩阵未推理未标注的统计
Segmentation: 修复对区域进行过滤时会对区域各项属性值进行四舍五入导致边界上的结果过滤不正确。
TaggedView: 补充缺失的获取视图角度的接口。
Python: 修复img::draw python接口未导出的问题
Refactor#
mods: 简化EL分类和EL无监督分类的模型,优化软件包体积。
Perf#
ELUnsuperSegmentation: 优化EL无监督分割工具GPU推理的启动速度。
优化了自动对焦算法效率问题。
IDReader: 优化一维码识读过程中的RGB转灰度图效率。
EL-OCR: 调整模型结构以优化训练和推理速度
EL-OCR: 优化EL-OCR工具的训练速度
EL-OCR: 调整推理网络结构以优化推理速度
Segmentation: 优化推理大图或检出数量非常多的复杂缺陷时的推理速度。
优化 featmap_filter求交并速度,优化图像较大的情况下分割及无监督分割工具的推理速度。
v0.8.0-release (2024-08-21)#
BREAKING CHANGE#
各个算法工具中指标统计时不再将与视图相切的区域视作视图内区域。
跨编译器C++接口发生重大变化,取消了所有类型对应的引用类型(*Ref),之前已经实现的代码需要对照修改。
接口ReadProjectDescriptorFromProject已移除, 对应功能可使用ReadProjectDescriptor代替。
Feat#
EL-OCR: 添加默认通用识别模型
训练结束后训练日志的Loss曲线数据中增加对应迭代轮次索引记录。
Image: 图像库支持绘制多种不同类型的几何图形。
EL-OCR: 支持ARM平台训练与推理功能。
ELOCR: EL-OCR工具支持在x86平台进行推理
Geometry: 支持线段和多边形求交集,求交结果为多条线段。
GeometrySearch: 新增GeometrySearchDownSampleRatio参数,用户可选择是否自动选择下采样或手动指定下采样倍率,使用较大的下采样倍率具有更好的运行速度。
geometry: 补充MultiPoint2f与MultiPoint2i的类型转换功能函数。
添加无监督EL分类工具。
添加测量工具流程
EL-Classification: 提供ARM(RKNN)平台算法实现。
IDReader: 优化读码工具定位功能。
api: 完善cppabi接口, 解决cppabi字典无法遍历的问题。
ELOCR: 添加EL-OCR工具参数接口。
添加新接口intersects_and_not_touches用于处理相交但不是相切(相接触)的情况。
cppabi: 重构CPPABI接口形态,提高跨编译器C++接口易用性。
geometry: 补充接口支持类型
添加跨进程和模型的Runtime构建缓存机制以优化模型初始化速度。默认启用Runtime构建缓存机制,用户可通过将库初始化配置中的
runtime_timing_cache_path设置为空路径以禁用Runtime构建缓存机制。Image: 添加图像预处理操作函数接口
Calibration: 添加标定图像校正工具接口实现
csharp: 支持自定义日志接收对象
Script: Python脚本异常时支持通过C++异常返回详细的脚本异常信息
分离库版本号和授权协议版本号,提供获取授权协议版本的接口;添加helper::license_protocol_version接口获取授权协议版本。
IDReader: 过滤定位噪声,二维码兼容仿射变换四边形,修复部分解码问题。
runtime::StrategyOptions: 简化默认配置
Location: 定位添加局部训练功能。兼容性:完全兼容旧工程,仅当使用新的库重新训练后才可能进行局部训练和推理。
添加python脚本用户自定义变量转换以及设置到python上下文的逻辑
UnsuperSegmentation: 加速非监督分割对逻辑类缺陷的检出。影响范围:非监督分割逻辑类检测功能,自动兼容旧的逻辑类检测功能。
解决命令行工具执行时必须先验证加密狗的问题
添加智能标注功能,支持依据用户输入坐标信息(坐标和该坐标属于前景或者背景,前景是指需要识别的信息), 智能生成目标的多边形轮廓。
fragments: 添加在二次开发接口中快速切换推理引擎类型的说明,添加区域计算结果获取的示例代码,添加示例工程模板。
geometry::MultiPolygon2f支持接收geometry::Polygon2f进行构造
添加EL分类工具,用于简单、轻量级场景的分类问题。
支持通过自定义对象接收python脚本中的print内容,及支持将python脚本中print的内容自动输出到日志中。
CSharp接口种中支持捕获C++异常并获得其中的具体异常类型和异常信息。
Project: 支持跨工程之间直接复制同类型的工具
Cloud: Project添加支持操作云工程的接口
C#接口最低支持.NET Framework 4.0版本。
Location: 定位两点模版匹配结果由线改为高度为1的polygon,以支持亮点定位功能;
ViewTagger: 修改ViewTagger实现为使用高低双阈值区分不同的视图匹配情况,落在高低阈值之间的视图添加内置的推荐数据集Tag。
新增IDReader工具,用于定位和识读一维码、二维码。
新增区域计算工具,支持根据多个工具输出的区域信息自定义整合得到新的区域。
cppabi: 添加本地字符编码与UTF8编码之间的转换函数。
helpers: 提供字符编码转换接口,用于完成本地编码与UTF-8编码之间的相互转换。
Image: 添加支持多种图像排布格式的转换函数,优化用户调用时的图像数据转换速度。
Integration: 综合判定工具支持以字典形式输出自定义内容
ViewTransformer: 视图转换器支持用户自定义脚本。
model: Model添加构造时添加
auto_resave_on_change选项, 该选项设置为true后,在模型关闭时可以自动重新保存模型中修改的信息。Location, AssemblyVerification: 优化纯CPU环境下的推理速度。
Unsuper: 优化无监督分割和无监督分类在CPU模式下的推理速度;
Classification, OCR: 优化分类和分割工具CPU推理速度
Model: 添加CompatibilityLevel和CompatibilityInfo接口,用于获取模型与当前库版本的兼容说明信息及兼容等级。
添加各个工具内部节点名称的常量变量定义;使用方法见文档示例。
CSharp接口支持获取当前库版本号。
runtime: 添加全局切换推理引擎类型选项,便于在创建Runtime时试试控制推理方式。使用方式:创建Runtime前设置StrategyOptions::infer_type为想要使用的引擎类型。
Segmentation: 添加基于标注的几何增广功能,使模型能适应训练集和测试数据中缺陷纹理相似但大小不一样的情况。该功能可以通过调节训练参数中新增的缺陷增广参数来启用。
runtime: 当参数修改后,支持在原始Runtime的基础上快速创建新的Runtime,以使修改后的参数能够快速生效。详情参阅接口
Model::update_runtime,Project::update_runtime。
Fix#
Detection: 修复检测模块极速推理模式可能崩溃的问题。
OCR: 修复检测结果中可能出现得分小于阈值的测试结果的问题。
Location: 修复定位工具检测结果区域多边形不符合几何库中
Polygon2f类型规定的点的顺序,导致几何库计算结果出错的问题;修复训练推理时给定重复的设备ID可能导致软件卡死的问题
Geometry: 修复geometry::buffer函数当数值为负时效果错误的问题。
取消工程名称不能为空和不能以空格结尾的限制。
Classification: 修复分类工具混淆矩阵未标注数据统计结果有误的问题。
UnsuperSegmention: 修复启用逻辑缺陷检查后需要转换图像通道的情况下训练出错的问题
修复Model.CompatibilityLevel删除临时文件失败后异常日志未输出的问题;并修复其他日志格式存在的问题。
Segmentation: 修复分割自动设置精度过大可能导致推理时报错的问题(通过限制参与计算的最小缺陷大小降低该错误发生的概率)。
UnsuperSegmentation: 修复非监督分割启用逻辑类缺陷检测后训练时因为数据类型不匹配报错的问题
修复繁体中文翻译错误
Geometry: 临时方案修复视图有旋转时,裁剪视图后的标注与视图依然相交,intersects_and_not_touches返回true的问题。
License: 修复授权时间校验逻辑错误问题。
aarch64: 修复ARM平台构建文件依赖库名称错误问题。
修复写文件失败时没有检查,导致写入文件后读取不到相关数据内容的问题
aarch64: 修复aarch64平台发布包依赖库缺失问题。
Geometry: 修正geometry::disjoint在判定椭圆和直线是否分离时结果不正确的问题
Python: 修复python无法调用geometry.iou接口的问题
修改授权错误时返回的错误信息可能存在乱码的问题
OCR: 修复性能优化导致的OCR字符得分可能小于给定阈值的问题
OCR: 修复OCR识别字符结果中存在低于阈值的字符框的问题
OCR: 修复OCR工具在没有GPU时推理崩溃的问题
修复导出模型到无权限的路径时提示导出成功但实际无导出的模型文件的问题。
Detection: 修复在视图存在角度时,检测模块输出框角度错误的问题
修复visionflow::geometry::min_area_rect某些情况下会卡死不返回的问题
PythonExecuteContext: 修正引用计数导致崩溃问题,优化python异常处理逻辑。
ocr: 修复OCR字符串模板匹配结果得分可能为负值的问题。
修复cpu推理少数情况下结果出错的问题
Location, Detection: 修复定位工具“推理批次大于1时,推理结果出现批次数量的测试结果”的问题;修复检测工具中“最大目标数未起作用”的问题;优化定位工具训练和推理时对视图掩码的处理逻辑以优化存在嵌套掩码区域时的训练推理效率。
修复系统名称等信息含有中文时库初始化时可能崩溃的问题
Python: 修复执行Python脚本异常时不能获取行号或行号不准确的问题。
修复visionflow.exe输出到命令存在乱码的问题
IDReader: 信息为全0的无效DM码,允许解码并输出;修复edifact编码的DM码在解码时出现乱码的问题;增加对于某些非标准DM码的解码支持:对于包含用扩展ASCII中值241-255进行编码的信息的DM码,解码器将忽略非标准部分,而仅输出标准部分;当全部均为非标准部分时,将显示码不可解。
Image: 修复图像和ROI很大时img::mean函数返回值异常的问题。
Location: 修复定位工具全图匹配绘制掩膜后训练次数改变的问题。
csharp: 修复DefaultException在VS2013中编译失败的问题。
修复Sample::descriptor接口符号导出存在错误的问题
修复CSharp调用ViewList.update接口抛出异常的问题
el_classification: 修复前置轮廓定位模块时训练崩溃的问题
fragment: 修复示例工程文件缺失问题
修复CPU推理BatchSize超过6会报错的问题
license: 修复加密狗数据区读取异常
修复Linux发布包执行报错的问题
aqcv: 修复一些bug
geometry: 优化求点到直线的垂足的计算方法,减少由于精度损失导致的计算结果错误。
Model: 修复模型不能正常打开时,创建的临时文件未删除的问题
License: 修复重复建立授权会话导致极端情况下授权句柄数量超出限制的问题
CSharp: 修复C#接口中对于char *转换错误,导致读写数据异常的问题。
aqcv: 修复部分函数中存在内存泄漏的问题,优化编译参数。
IDReader: 修正IDReader授权管理策略。
CSharp: 修正 param 中部分转换处理不正确的问题
修复一些翻译文本表述不一致的问题
ViewTagger: 修正没匹配到视图的情况下的处理逻辑
cppabi: 修复cppabi接口中使用间接继承类的接口时,程序会异常崩溃的问题。
geometry: 修正
Line2f::intersection_by_x中直线与坐标轴相交实现错误的问题ViewTransformer: 修改视图转换器中的Python脚本函数的函数签名,去除无用的参ViewList
runtime在执行非虚拟Operator节点前总是重新创建对应样本中相关的输出属性对象,避免同一样本反复推理时数据不断累积。
修正部分英文文本过长的问题
csharp: 修正RuntimeStrateg相关接口转换处理逻辑。
csharp: 修正部分类型接口转换不规范的问题
修复0.7.0以前版本导出的模型进行升级时可能会由于数据缺失导致的模型升级失败的问题。
修复图像库中部分函数名和Windows.h头文件中宏定义冲突的问题。
cabi/cppabi/csharp: 完成跨语言二次开发接口转换规则,支持在C#接口中调用兼容性等级判断接口。
GeometrySearch: 修复几何定位工具视图掩摸无效问题;训练及推理过程被视图中的mask遮掩的区域将被填充为黑色以忽略其中的图像信息。
导入LabelMe、LabelImg标注时,自动修正可修正的错误数据和滤除无法修正的错误数据,避免不符合规范的标注数据导致后续处理流程崩溃。
修复潜在的数据访问冲突问题。
修改导出模型时的操作顺序,若模型导出失败,避免删除对应导出路径的原有模型文件。
修复韩文系统无法正常使用的问题;修复初始化时给定日志路径中含有系统本地编码以外的字符时报错崩溃导致初始化失败的问题。
dataset: 修复不同平台数据大小端不同可能导致的潜在的工程跨平台迁移时可能出现工程数据解析错误的问题。影响范围:对仅在x86_64平台上使用的工程无影响。
繁体系统下:多级中文路径WorkSpace,拷贝与移动操作可能崩溃的问题;中文路径工程备份操作可能崩溃的问题;中文路径WorkSpace调用created_time与last_modified_time可能崩溃的问题;
修复繁体系统中,打开简体中文工作区失败及创建与打开工程失败的问题,现在支持在繁体系统下使用任意UTF8支持的合法路径字符作为工作区和工程名称。影响范围:工作区创建及访问、工程的创建及访问,
workspace: 修复繁体中文系统上无法打开包含简体中文独有字符的的工作区的问题。
修复部分使用Python脚本的工具存在于Python对象相关的内存泄漏的问题。
修复部分模块在发生异常时内存泄漏的问题.
Refactor#
el_ocr: 重构流程图,复用OCR模块模板匹配算子
opers: 重构python脚本执行相关算子中的实现方式以支持重定向脚本中的print函数。
移除已经弃用的接口。
支持在ARM平台构建.
升级内部存储的参数节点及属性数据节点的最后更新时间的精度为毫秒。并添加DataEdge::last_update_precise_time(), ComputeNode::last_update_precise_time()返回以毫秒为单位的时间。对原有接口无影响。旧的工程需经过升级以对齐存储的时间数据的精度。
geometry: 调整Segment2f结构实现, 不再继承标准库
Perf#
props: 优化RegionList::to_multi_polygons()接口的实现。
OCR: 通过优化前处理步骤优化OCR工具的推理效率
优化分割工具检出区域非常多的情况下的推理速度。
优化分割工具、非监督分割工具在检出大而复杂缺陷时推理速度显著变慢的问题。
优化无监督分割/无监督分类的推理速度。
优化分割增量训练实现,轻微提高训练速度。
Segmentation: 优化分割工具推理速度10%~15%。修改影响范围:分割工具训练和推理功能。兼容性:理论上完全兼容以前版本的模型和数据,受计算过程变化影响,检测效果可能存在细微差异,但不影响检测结果的判断。
OCR: 优化OCR工具GPU模式下的推理速度,平均提速70%左右。与旧有实现相比,极少数识别结果可能存在非常轻微的差异,但不影响结果正确性。
优化参数存取接口效率
优化预训练模型的速度读取速度,优化训练启动速度。
调整属性接口风格中部参数的传递风格,以获得更好的性能表现
IDReader: 优化二维码读码工具性能,修复一些BUG。
Segmentation: 优化分割工具CPU模式下的推理速度(单位时间吞吐量提升10倍以上,具体提升数值视不同硬件及训练推理参数有所差异)。
GeometrySearch: 1. 修改参数含义:最大查找数量设定为0时表示不限数量, 描述中写为了
-1,修正为0;2. 对View为与原图对齐的矩形的情况直接在原图上处理,加速该情况下的推理速度。优化PNG格式图像编解码速度,编解码速度提升20%~30%;影响:提升图像导入速度、训练启动速度、数据包导出速度及一般的样本访问速度。