Changelog#
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中编译失败的问题。
修复CSharp调用ViewList.update接口抛出异常的问题
修复Sample::descriptor接口符号导出存在错误的问题
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%;影响:提升图像导入速度、训练启动速度、数据包导出速度及一般的样本访问速度。