实现一个超轻量级实例分割网络的思路 在某些工业领域,由于成本问题算力有限,只能实时跑一些超轻量级网络,拿目标检测来说,例如yolo-fast,pp-picodet这些。如果要跑实例分割,目前好像没有什么超轻量级的网络。所以就有想法如何实现一个超轻量级实例分割网络。思考了一个超轻量级实例分割网络思路,将picodet与yolact结合。
基于boost的共享内存通信demo 在一个系统比较复杂的时候,将模块独立成单独的进程有助于错误定位以及异常重启恢复,不至于某个模块发生崩溃导致整个系统崩溃。当通信数据量比较大时,例如图像数据,可以使用共享内存在进程间交互,比socket快很多。下面介绍一个利用Boost.interprocess和Boost.process模块进行进程间图像数据交互,以及子进程调用、卡死、崩溃检测的demo。
一种license文件生成方案 有时,我们为了保护自己写的程序不被滥用(搞点钱),会想绑定硬件,还要设置使用期限。本文就实践了一种license方案,当然没有考虑逆向,这个方面也不在讨论的范畴,所以大家要保护自己的代码时请充分调研!!!首先我们要知道RSA加密是一种非对称加密,它的公钥和私钥是分开的。我们了解一下就可以知道,RSA的公钥是两个素数的乘积,它的私钥约等于需要知道这两个素数才可以得到,通过因数分解基本不可能得到私钥。所以RSA的安全性比较高。
详解ATSS、SimOTA、taskAligned、o2f标签分配 标签分配也是影响目标检测AP的一个重要因素,仅是训练技巧,不会增加推理耗时。例如ATSS就采用自适应正负样本分配的方式带来2%的无痛涨点。最近也是好奇这些标签分配具体是怎么做的,故记录目前学习到的4种算法。
单例模式之模板与跨库(DLL、SO) 单例模式用模板实现的话比较优雅方便,基本不需要写额外的代码。但也有个问题,就是封装成库之后,比如windows下是封装成DLL,那么DLL内的单例和外部单例将会是2个不同的实例对象,可以做实验发现2个指针是不一样的地址。这篇文章就是总结一下用模板实现单例,并且可以跨库是怎么做到的。这个宏的作用是禁止外部使用构造函数声明对象,并且添加instance()接口。大家可能会觉得有点像脱裤子放屁,但这都是为了跨库使用,并且尽可能的优美,看到最后就明白了。如果不考虑跨库使用,上面的单例模板已经做到了,\ }(
CMake库依赖关系传递 记录一次linux下调用openvino+opencv库的问题。主要是忽略了CMake的库依赖关系传递,即target_link_libraries时 PUBLIC、PRIVATE、INTERFACE这些字段没有使用,默认使用PUBLIC。如果你发现你编译的时候,报了一堆未引用错误,而且你还没调用这个库,那没跑了,就是依赖设置的问题。主要就是记录一下CMake中target_link_libraries更完整的用法,踩了个坑。
OCR基于图像数据的信息抽取任务 关键信息抽取 (Key Information Extraction, KIE)指的是是从文本或者图像中,抽取出关键的信息。针对文档图像的关键信息抽取任务作为OCR的下游任务,存在非常多的实际应用场景,如表单识别、车票信息抽取、身份证信息抽取等。然而,使用人力从这些文档图像中提取或者收集关键信息耗时费力,怎样自动化融合图像中的视觉、布局、文字等特征并完成关键信息抽取是一个价值与挑战并存的问题。
jetson-nano编译qt5.15.2带opengl,xcb 文章目录前言一、下载qt源码二、安装xcb依赖环境三、configuremake && install编译好的qt-5.15.2安装qt-creatorqt-creator 添加kit总结前言项目需求原因,需要编译高版本qt到jetson-nano板子,历经10天来回折腾,终于是成功了。期间历经交叉编译失败,然后转直接编译,然后尝试各种版本的坑,最后整理的方法异常简单,只需6小时左右即可流畅在板子上编译成功。文章最后有我编译好的qt-5.15.2版本链接。友情提醒:编译前,先保证你的
jetson-nano编译qt5.15.2带opengl,xcb 文章目录前言一、下载qt源码二、安装xcb依赖环境三、configuremake && install编译好的qt-5.15.2安装qt-creatorqt-creator 添加kit总结前言项目需求原因,需要编译高版本qt到jetson-nano板子,历经10天来回折腾,终于是成功了。期间历经交叉编译失败,然后转直接编译,然后尝试各种版本的坑,最后整理的方法异常简单,只需6小时左右即可流畅在板子上编译成功。文章最后有我编译好的qt-5.15.2版本链接。友情提醒:编译前,先保证你的
gcc中文乱码解决——批量gbk转utf8 前言最近跨平台移植发现一个问题,就是windows下写的代码有中文的都是gbk编码,然后没中文的又是utf-8,还有一些抄来的代码是utf-8-BOM。然后网上说的加编译符号,让gcc帮你转换编码,我发现不行,因为不是gbk的文件会报错。然后还找了个脚本用iconv批量转。。。还好我是有备份的,非gbk的文件会丢失。算了,还是自己撸一个python脚本批量转码吧,不折腾了。python转换脚本非常简单,就是获取所有待转换文件,然后判断是不是GBK,是的话就转。建议你备份一下使用,这个脚本是原地覆盖的。
EISeg标注多文件夹合并 提供一个脚本,专门合并百度的语义分割标注工具EISeg生成的文件夹。EISeg默认标注完之后会在你的文件夹下面生成一个label文件夹,里面会存放png格式的标注图像和一个annotations.json文件。该脚本的作用就是将dirpath路径下所有的标注图像的文件夹合并成一个,文件会被从重命名为序号为1开始的数字名字。import osimport codecsimport threadpoolimport jsonimport shutildirpath = r'xxx'dst_p
OpenCV图像旋转、缩放、翻转、仿射变换的坐标变换计算 文章目录前言一、旋转+缩放+翻转二、仿射变换前言在工业领域进行目标检测的时候,可能会需要先对图像进行旋转校正、多幅图像拼接等操作。这就需要我们将检测到的目标坐标映射到处理后的图像上。下面说几种OpenCV下常用的坐标变换计算,旋转、缩放、翻转和仿射变换,完全同步对应OpenCV的图像处理操作。一、旋转+缩放+翻转代码展示的是主要逻辑,稍微改一改就可以用到项目里去。m_img是原图,m_src_corners是你需要转换的原图中的坐标集合。 Mat image = m_img; cv::Poi
git设置代理 文章目录socks代理:http/https代理如果要取消代理:查看配置信息:socks代理:git config --global http.proxy ‘socks5://127.0.0.1:1080’git config --global https.proxy ‘socks5://127.0.0.1:1080’如果有问题,可以把单引号去掉试一下,并且将http和https代理都设置上试一下也可以直接修改~/.gitconfig文件。vi ~/.gitconfig新建或修改这两项配置[
cmake总结(边学边更新) 文章目录0.前言1. 常规设置设置版本号设置工程名称设置可执行文件输出目录、库输出目录设置工程包含当前目录设置子目录2.设置生成目标(编译可执行文件或库文件)添加源文件添加要生成的目标增加依赖项3.添加依赖项(库文件)当库提供了cmake引导文件,以opencv为例当没有cmake引导文件时,以添加Matlab库为例4.生成的库的一些设置去除循环依赖设置库文件名5.添加宏全局添加,所有目标都会加上局部添加,只给指定目标加(墙裂建议)6.添加Option选项7.if控制8.windows下 MD/MT报错
用模板实现对任意函数计时功能 文章目录前言一、万能函数模板二、void返回值问题三、利用局部变量计时,解决void返回值接收问题完全版代码前言前面一篇文章利用了可变参宏去实现任意函数计时功能,总觉得有点挫,而且无法带返回值。突然想到可以用模板实现这个功能。下面讲一下实现思路和中间碰到的问题。一、万能函数模板先介绍一下万能函数模板,用下面两个函数模板,无论是全局函数,还是类成员函数,统统可以执行。原理就是万能函数指针加上可变参。省略号的位置自己体会一下。template<typename R, typenam.