自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(299)
  • 资源 (4)
  • 收藏
  • 关注

原创 活体识别6:小视科技开源的静默活体检测

按照官方的说明,该方案是一个集成了俩小模型的方案,就是不知道俩小模型的侧重点。总的来说,开源这么一个可用的RGB单帧模型,很值得欣赏。

2023-02-02 18:08:14 2712 1

原创 活体识别5:论文笔记之FeatherNets

我觉得作者做了两件事,一件是通过“集成+级联”的方式拿到了比赛的好成绩,一个是设计了一个轻量级的人脸任务分类网络。这两件事不一定有特别大的关系。要是作者能把只用两个FeatherNet级联的结果写出来就更好了,这样才是一个更有针对性的论文。作为一个开发者,我打算用作者开源的FeatherNetBForIR试试效果。毕竟我只有NIR相机,没有深度相机。

2023-02-01 17:15:41 631 5

原创 活体识别4:论文笔记之《Face Spoofing Detection Using Colour Texture Analysis》

在和打印假脸、视频假脸的对比中,灰度图无法有效区分假脸,因为它们与真脸图片的相似度都比较高(距离小),而在YCbCr空间中,Cb通道和Cr通道中真脸图片和假脸图片相似度较低(距离大),有较明显的区分度。本文的出发点仍然没变,由于缺乏高频信息,假的人脸经过两个不同型号的相机成像和一次打印或显示,将会导致图像质量下降,而且复制的图像也会引入额外的噪声。这个论文是芬兰奥卢大学(Oulu)课题组的一篇很有代表性的论文,写于2016年,使用的是“手工特征+SVM分类器”这种比较传统的方案,方案不复杂,效果还不错。

2023-02-01 11:19:24 624

原创 活体识别3:论文笔记之《FACE ANTI-SPOOFING BASED ON COLOR TEXTURE ANALYSIS》

主要思路就是使用一篇参考文献里描述的LBP特征来提取人脸的color-texture信息,该文献中最终的LBP直方图是由各个色彩通道的LBP直方图组合起来形成的。作者在论文里说,HSV和YCbCr两个色彩空间的特征合并后得到的直方图尺寸是59x3x2,所以可以推测,作何使用的直方图灰阶的数量是59,而不是256。这个论文是芬兰奥卢大学(Oulu)课题组的一篇很有代表性的论文,写于2015年,使用的是“LBP特征+SVM分类器”这种比较传统的方案,方案不复杂,效果还不错。本文的活体检测方法如图 2 所示。

2023-02-01 10:42:36 592 1

原创 活体识别2: 综述类资源收集

19年的文章,把传统机器学习的方案和深度学习的方案都介绍了,简单易懂。

2023-01-31 10:28:13 569

原创 活体识别1:近红外(NIR)图像特性

第一行从左到右分别为近红外光下的真实人脸、打印黑白人脸以及打印彩色人脸,第二行为相同情况下的可见光成像图。通过图4可以看出,在近红外光下真实人脸能够保留较为完善的边缘轮廓信息,而打印照片的边缘信息丢失较为严重,同时可以看出在近红外下真实人脸的对比度比打印人脸高。来自:[1]隋孟君,茅耀斌,孙金生.基于近红外图像特征的活体人脸检测[J].自动化与仪器仪表,2021(09):25-29.最近在接触活体识别,在网上找到一个介绍近红外光(NIR)特性的论文,我简单做个笔记。原文的全文在文末参考资料里。

2023-01-31 09:43:29 3524

原创 opencv鱼眼镜头矫正

鱼眼镜头是一种视场角很大的镜头,但是得到的图片有很大的畸变,所以需要对鱼眼镜头进行标定,标定所得的参数可以对鱼眼镜头的图像进行矫正。

2022-12-29 16:42:34 6839 4

原创 tf2.X中将模型保存为savedmodel

我小将一个计算欧式距离的小模型转换为savedmodel。

2022-11-14 20:19:52 631

原创 onnx模型输入输出维度修改

费了半天劲搭环境,解决onnx转换过程的各种问题,最后发现rknn-toolkit2-v1.3不支持onnx的hardswish算子,白干了。最后,在rknn-toolkit-v1.7环境下将ckpt固化为pb文件,拷贝到rknn-toolkit2-v1.3下,再转换为rknn成功。可以看到右侧inputs和outputs的信息,第一个维度都是无效的,所以我需要把他们固定为1,因为我本来也不需要批量推理。代码运行输出(unk__207和unk__208应该是引起上述保存的原因,改了它们就好了)

2022-10-27 20:01:41 4880 2

原创 tensorflow-ckpt转savemode记录

直接用tf2onnx转有问题,所以使用savemode作为中间格式,先将ckpt转为savemode,再将savemode转为onnx。搞个转换onnx的活,tf2.X的环境下怎么都不行,我后来安装了一个py36+tf1.15+tf2onnx的环境才走通全流程。解决方法在上面代码里,就是在add_meta_graph_and_variables第二个参数里指定“serve”为tag.我有一个tf1.X训练输出的ckpt格式的模型,需要转换为onnx格式。我在tf2.0里好用的代码,在tf2.2就出错了。

2022-10-27 19:43:24 1287

转载 Linux graphic subsytem(1)_概述[转]

图形子系统是linux系统中比较复杂的子系统之一:对下,它要管理形态各异的、性能各异的显示相关的器件;对上,它要向应用程序提供易用的、友好的、功能强大的图形用户界面(GUI)。因此,它是linux系统中少有的、和用户空间程序(甚至是用户)息息相关的一个子系统。本文是图形子系统分析文章的第一篇,也是提纲挈领的一篇,将会从整体上,对linux显示子系统做一个简单的概述,进而罗列出显示子系统的软件构成,后续的文章将会围绕这些软件一一展开分析。

2022-10-23 11:55:35 219

原创 opencv中使用copyMakeBorder为图片填充边框

在使用深度学习模型推理的时候,通常输入图片都是一个正方形,而摄像头采集的图片通常是长方形的,这就要把图片的边上填充一些像素,从而变成所需的正方形。在opencv中copyMakeBorder可做填充的工作,非常适合做深度学习图片的前处理。这个例子把图片转换为320X320的正方形图片。

2022-10-21 09:31:54 1423

原创 c++成员函数做回调

对于bind包装成员函数的用法,简单做个笔记。

2022-10-20 10:00:10 389

原创 到底有几个鸿蒙OS? 谈谈我眼里的鸿蒙操作系统

目前鸿蒙是华为的一个大IP,其长远规划就是“理想鸿蒙”的样子。但是普通消费者拿着华为手机用着“AOSP鸿蒙”,却以为自己用的是“理想鸿蒙”。华为在营销上也混淆了“理想鸿蒙”和“AOSP鸿蒙”,导致招来很多人的反感。但是华为作为被美国精准狙击的公司,必须找退路,而且这个退路不是一朝一夕能建好的,所以推出了“AOSP鸿蒙”作为暂时的应敌之策,并对外宣称退路已经建好了,不怕美国制裁,保持消费者对华为的信心。但是私底下也在推进OpenHarmony,将来成熟后就能成为不惧制裁的底牌。结论就是。

2022-10-15 15:20:36 12095 19

原创 tensorflow2.x:构建tf.keras.Model实例的几种方式

我看到教程里搭建模型主要就是实例化一个tf.keras.Model并对它进行各种设置,实例化一个tf.keras.Model对象竟然同时存在多种方式,这也不是“灵活”能解释的通的,感觉还是没有实现一种好用的方式达到“一招鲜”,多种方式并存的原因可能还是设计不够简单。如果是多输入输出的话,输入用[inoput1, input2]这样的方式来传入就可以,输出用[out1,out2]的方式来返回。Sequential只能搭建简单的网络,如果内部有复杂的结构,就需要直接使用tf.keras.Model构造。

2022-08-24 12:36:20 2284

原创 pytorch模型转换问题记录

我在forward()函数里把tensor转换为python数值来显示,调用torch.jit.trace就会报错。在forward()函数里所有的操作都用tensor就没问题了。简单来说,原因就是我保存模型直接用torch.save(), 没法在其它脚本中直接加载,除非那个脚本中也有nn.Module子类的定义。为了在开发板上使用模型,我用转换脚本加载了我生成的pytorch模型文件,但是却报错了。我需要把我的模型保存为TorchScript格式。这样保存的pt就可以在其它python里加载了。...

2022-08-17 20:40:06 4326 2

原创 使用sqlite保存人脸特征

每个人至少要保存两个字段,一个id, 一个特征。其中id我计划用char类型,人脸特征用blob类型,也就是二进制类型。这样我就可以直接把c++里的数据直接存储到sqlite的文件里。我这里想说,使用sqlite3_prepare()+ sqlite3_step()是非常优雅的一种方式,比那种回调的方式要好的多。在做人脸识别的时候,需要在嵌入式端保存底库人脸的特征,我自然想到了sqlite。查询的方法可以从参考资料里的《这里只贴一段读取特征的代码。》里看到具体的例子。...

2022-08-17 20:20:20 914

原创 使用opencv的透视变换裁剪倾斜人脸

人脸检测以后,有了检测框,需要将眼睛扶正,并裁剪,然后resize成需要的大小。人脸检测结果如下:其中蓝色是检测框,内部的红色框是我根据长宽扩展的正方形,绿色框是根据眼睛倾斜角度计算的正方形区域,我需要的就是这个区域。为了得到绿色方框的区域。可以看到上述方法包含两次裁剪和一次旋转。这不是一个好的方案。经过搜索,我了解到opencv里还有透视变换函数cv::warpPerspective, 可以用一个函数替代上述一连串操作,而且速度还快(我是在arm上做的测试)。.........

2022-08-16 09:56:21 2291

原创 c++17操作文件并解析目录

c++17之后c++就已经支持文件系统操作了,用来解析目录方便很多。这里是自己写的一个例子,如果是gcc8,编译时需加-lstdc++fs。gcc9应该不用加了。但是都要开启 -std=c++17。

2022-08-09 10:31:34 641

原创 undefined reference to `std::filesystem

在gcc8.3中使用filesystem,没想到编译加了-std=c++17还是报错。c++真是博大精深!

2022-08-02 09:12:20 4913

原创 人脸矫正方案收集

自己最近在嵌入式上用到了人脸检测和人脸对齐和矫正。这里收集下最近接触的一些方案

2022-07-25 23:27:46 1771

原创 rknn-tookit使用笔记

记录一下最新使用rknntookit转换模型遇到的问题

2022-07-25 22:39:15 1612

原创 rknn(rknpu)使用笔记

最近使用rknpu做了一些工作,这里记录下自己遇到的一些问题,希望对其他人有帮助,

2022-07-18 22:28:17 8412

原创 链接静态库时报can not be used when making a PIE object; recompile with -fPIE

链接了一个SDK的静态库,报了大量的错误都是后在编译选项中加了-no-pie解决。

2022-07-04 17:47:30 2775 1

原创 在windows上交叉编译ARM(鸿蒙3.10)的golang可执行程序

基础环境手上有一个TB-RK3568x的ARM开发板,烧写的是鸿蒙3.10的系统,Linux内核是5.10的。开发板信息:# cat /proc/versionLinux version 5.10.79 (yuanll@yuanll-dev-pc) (aarch64-linux-gnu-gcc (Linaro GCC 7.5-2019.12) 7.5.0, GNU ld (Linaro_Binutils-2019.12) 2.28.2.20170706) #21 SMP Mon Apr 25 20:

2022-05-13 19:54:54 2000

原创 一个blenbder无法插入关键帧的问题

目前实用的版本是blender 2.93.5, 学完甜甜圈教程发现摁i键插入关键帧失败。如下图,报“插入关键帧的帧位置”解决办法就是把上面红框内的圆点点一下,使之处于未选中状态即可。最后展示下自己做的甜甜圈效果图:...

2022-01-23 21:38:28 9845 1

原创 golang学习7:编译为可被C语言调用的库

说明在使用 go build 或 go install 两个命令编译代码的时候,可以使用-buildmode指定生成什么样的文件。go build -buildmode=<mode>或者go install -buildmode=<mode>使用 go help buildmode可以查看所有支持的buildmode选项。 -buildmode=archive Build the listed non-main packa

2021-09-27 00:44:09 2380 1

原创 golang学习6:访问redis

Redis介绍Redis是一个开源的内存数据库。特点就是快。所以经常用来做数据库的缓存。当然它的用途不止这些。下面摘抄下李文周博客对redis用途的一些举例:缓存系统,减轻主数据库(MySQL)的压力。计数场景,比如微博、抖音中的关注数和粉丝数。热门排行榜,需要排序的场景特别适合使用ZSET。利用LIST可以实现队列的功能Redis支持的数据结构中常用的是string、hash、lists、sets和sorted sets。另外它还支持发布/订阅模式,以及stream模式。除了单例模式,

2021-09-10 23:31:48 369

原创 Windows系统下使用docker

缘起我本来打算自学下redis的基本操作,所以总要有个redis的环境吧。之前我在自己笔记本上启用了WLS功能,安装了一个Ubuntu的镜像。本来打算在Windows下的ubuntu里安装docker环境,奈何安装了半天,比着网上的操作都做了,安装过程也没问题,docker服务启动不正常,docker ps命令都用不了。所以我走了另一条路,那就是安装windows下的Docker Desktop的这款软件,它的原理据说也是起了一个linux系统,这条路走通了。下载和安装去这里下载桌面版docker管理

2021-06-03 22:28:18 2586

原创 golang学习5:gRPC

说明GRPC是一个高性能、通用的开源RPC框架,基于HTTP/2协议标准和Protobuf序列化协议开发,支持众多的开发语言。安装依赖包go get golang.org/x/net/contextgo get google.golang.org/grpcgo get google.golang.org/protobuf/reflect/protoreflectgo get google.golang.org/protobuf/runtime/protoimpl编写IDL生成go代码参考李

2021-04-07 22:56:50 430

原创 golang学习4:Protobuf

说明Protobuf是Protocol Buffer的简称,它是Google公司于2008年开源的一种高效的平台无关、语言无关、可扩展的数据格式,目前Protobuf作为接口规范的描述语言,可以作为Go语言RPC接口的基础工具。既然语言无关,那么怎么描述我们的数据的各个字段呢?编码和解码怎么弄呢,手工写很头大啊?第一个问题的答案就是使用一种语言无关的IDL脚本语言来定义数据格式,具体见《Protobuf3 语法指南》。第二个问题的答案就是用一个工具作为中介,使用IDL为各种语言生成编码解码的源码,

2021-04-04 21:23:10 1896

原创 golang学习3:标准库中的rpc

RPCRPC是Remote Procedure Call Protocol三个单词首字母的缩写,翻译过来叫远程过程调用协议。故明思议,也就是在本地调用远程的函数,这里的远程是相对于本地函数调用来讲的。既然是远程了,一般就需要使用网络通信,客户端把要调用的方法和参数传过去,传过去之前这些参数要进行序列化从而转化为适合网络传输的格式,而服务端接收后需要进行相反的解码动作,也就是反序列化,从而得到程序使用的格式。处理后,返回的结果同样先序列化再反序列化传回给客户端,从而完成一次交互。逻辑上讲于本地调用无异

2021-04-03 21:19:11 493

原创 golang学习2:使用package和module

说明我因为是golang的新手,而golang的包管理之前经过很多变化,我也不是很明白。go1.11发布了官方的包管理工具 Go Module, 从 Go 1.13 开始,Module模式将成为默认模式。所以这就变成了golang标准的包管理工具。我自己根据自己想到的情况摸索下使用方法。package和module的概念package(包)类似于c++的命名空间,每个package可以有多个源码文件,但是必须位于同一层目录。package内可以有子目录,只不过子目录下就是另一个package的源码

2021-03-21 18:34:18 1756

原创 golang学习1:ubuntu下安装golang并简单测试

0. 说明我也是自学golang,周围没氛围,完全新手。从今天起开始分享学习golang的过程吧。1. 下载安装包到https://golang.google.cn/dl/,选择Linux的版本2. 拷贝到/usr/local解压$ cp go1.16.linux-amd64.tar.gz /usr/local$ cd /usr/local$ tar -xvf go1.16.linux-amd64.tar.gz3. 设置环境变量先创建/home/yuanll/gopath,然后在~/.b

2021-02-21 22:11:49 888

原创 c++协程库libfiber之5:协程池

目的我想在ibfiber的基础上实现一个简单的协程池类。我希望它是单例模式的,并且是线程安全的。执行的任务由std::function加入到任务队列里。协程池类的实现可以看到,下面的协程池类主要是三个接口:getInstance()、AddTask()和Clear()//协成池,负责管理和调度协程class FiberPool { //使用单例模式来实现 private: static acl::fiber_event FiberLock; static Fibe

2020-12-27 20:37:11 1186

原创 SOA、微服务、插件式开发框--知识小结

概述为了摸索c/c++插件框架,顺便把相关知识捋一捋。SOA(面向服务的框架)和微服务的区别Service Oriented Ambiguity 即面向服务的架构, 简称SOA。SOA是一种设计方法或思想(没有具体的实现)。它面向服务的分布式计算,服务间松耦合,通过网络调用(而非进程内调用)来通信,从而配合起来提供一系列的功能。有种观点说, SOA有两种实现方式,中心化方式就是ESB(企业服务总线),去中心化的服务就是微服务。ESB主要是做了消息转化和路由工作,让不同的服务互联互通。但是ESB容

2020-12-16 00:18:40 2244 4

原创 c++协程库libfiber之4:定时和延时

协程定时器cpp\include\fiber\fiber.hpp里有一个定时器类,只要继承这个类,实现它的纯虚接口run()即可。它内部其实是创建一个协程,在指定的毫秒数以后执行。/** * 可用作定时器的协程类 */class FIBER_CPP_API fiber_timer{public: fiber_timer(void); virtual ~fiber_timer(void) {} /** * 启动一个协程定时器 * @param milliseconds {unsi

2020-10-15 23:36:39 558 2

原创 c++协程库libfiber之3:调度协程的三种方式

简洁前一篇博客介绍了libfiber里使用协程的简单方法,这里介绍下调度协程的三种方式自动调度,立即执行这种模式下,创建的协程会被立即执行,协程结束后才返回创建处的代码逻辑。void schedule_two(void) { acl::fiber::init(acl::FIBER_EVENT_T_KERNEL, true); //指定事件类型,自动调度,注意第二个参数 for (int i = 0; i < 10; i++) { go[&] { fiber1(i); };

2020-10-13 23:39:33 815

原创 c++协程库libfiber之2:编译及例子

编译生成库分别在代码根目录和示例代码目录下执行make命令即可编译生成静态库:$cd libfiber$make由于libfiber同时支持c和c++ 接口,所以会默认生成两个静态库。如果需要动态库,需要在根目录下执行:make shared rpath=xxx其中rpath是存放静态库的目录。后面我主要关注c++ 的接口。c++ 的接口里实际上都是调用的c接口,真正的额实现在c里面,c++ 的接口只是封装了一层而已。编译示例程序示例代码在samples目录下,共4个目录。其中c下是c

2020-10-11 23:49:27 641

原创 c++协程库libfiber之1:简单介绍

缘起我前一篇CSDN博客里提到了libfiber这个协程库,我真的觉得这个库完成度很高,功能完善,文档详细,而且是中国的公司(爱奇艺)维护的,可预见的时间内都会是活跃的项目,还经过了生产环境的检验。总之种种原因,让我觉得这个项目还不错。看了代码后我更心动了。为什么要用协程协程除了可以提供更高并发的支持,还可以使用同步的方式写异步执行的代码,使得代码逻辑更加简洁和清晰。协程的栈目前我看到的示例代码里,libfiber的协程都是使用独立的栈,也就是属于stackfull类型的协程。这点和腾讯的协程库l

2020-10-08 23:52:20 1754

IT++文档html格式

IT++ 是一个数学,信号处理和通信类功能的 C++ 库。这个是它的文档包。

2024-03-30

IT++信号处理和通信C++ 库

IT++ 是一个数学,信号处理和通信类功能的 C++ 库。它的主要用途是模拟通信系统,并进行研究相关领域的通信。它综合了 Matlab 的功能和 C 的速度,适合于信号处理等领域。 功能和特点 模板阵列和堆叠的集装箱类 命令和文件的论点分析器 模板向量和矩阵类 稀疏向量和矩阵类 载体功能和矩阵类 矩阵分解等特征 求解线性方程组 随机数代 二进制和伽罗瓦类型(标量,矢量和矩阵) 一体化的一维职能 无条件的非线性优化 统计类 过滤功能和类 频域滤波 FFT 算法,理论,变换,和 Hadamard 变换 时域和频域窗口 评估和寻找根源的多项式(逆行动) 滤波器的设计功能 快速独立分量分析 矢量调制器(如 OFDM 和 MIMO ) OFDM 系统和 CDMA 调制器 多径信道(包括频率单位和频率选择性) 海明,格雷,CRC 码 基于事件的仿真类 信号和简化语法 TCP 连接客户端和服务器 选择性重复传 标量化和矢量量化类 高斯混合模型 阅读和保存几种不同的音频文件格式 阅读和保存不同的图像格式 二进制文件格式,最基础的 IT + + 类型 定点标量,矢量和矩阵类型

2024-03-30

windows下围棋级位测试6000题

Windows下围棋练习题。适合未定段的小朋友。

2024-03-04

TDA8007B中文手册

自己翻译的英文手册,不太准确,请参照英文手册。

2011-12-07

msp430单片机c语言程序设计与开发

是一本影印版的图书,主要是430的c编程。

2009-03-28

pcb封装形式图片介绍

这里包含了一些典型的封装图片及尺寸.特别是三个引脚的封装

2008-09-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除