- 博客(35)
- 资源 (6)
- 收藏
- 关注
原创 Poisoning Attack in Adversarial Machine Learning
Poisoning Attack in Adversarial Machine LearningData Poisoning攻击区别于Evasion攻击,是攻击者通过对模型的训练数据做手脚来达到控制模型输出的目的,是一种在训练过程中产生的对模型安全性的威胁。Data Poisoning,即对训练数据“下毒”或“污染”。这种攻击手段常见于外包模型训练工作的场景,例如我们常常将模型训练任务委托给第三方云平台(如Google Colab等等),此时第三方平台就掌握了我们的所有训练数据,很容易在训练数据上做手脚,
2021-03-05 14:20:40 1919 1
原创 Evasion Attack in Adversarial Machine Learning
Evasion Attack in Adversarial Machine LearningEvasion Attack旨在不干涉模型任何训练的基础上,设计出让训练好的模型无识别的test case,我们称之为inference-phase adversarial attack,又称为adversarial examples。从分类的角度上,evasion attack可以分为两大类,一类是ℓp\ell_pℓp attack,另一类是Non-ℓp\ell_pℓp attack。区别在于,前者在一张正
2021-03-05 14:17:01 845
原创 Visual SLAM 笔记——李群和李代数详解
李群和李代数问题的引入当我们估计出相机姿态[R,t][R, t][R,t]了以后,估计的结果和实际的相机姿态肯定会有一些不一致性,因而我们需要对估计出来的结果进行优化。优化方法一般都采用迭代优化的方法,每次迭代都更新一个位姿的增量Δ\DeltaΔ,使得目标函数最小。这个Δ\DeltaΔ就是通过误差函数对T\mathbf{T}T或者R\mathbf{R}R求微分得到的,也就是说我们需要对变换矩阵T\mathbf{T}T以及旋转矩阵R\mathbf{R}R求导。但是,旋转矩阵并没有良好定义的加法,即R1R
2020-09-26 20:06:50 2271
原创 C++干货系列——谈谈在变量中使用auto
用作变量类型推演的关键字auto可能是C++11最著名的特性了,所以这篇文章我长话短说,简单写一下我认为比较重要的使用法则。怎么用 auto这一节我会写得尽可能短,因为我默认大家都已经用过auto了。如果有谁没用过的话,有大量的书和文章来替我讲这方面的知识。我们都是用auto这个关键字来代替一个具体变量的类型定义,让编译器自己去寻找和从它的初始化过程中来推演这个变量的类型。最著名的关于auto的用法恐怕莫过于用它来躲开一堆长长的类型名,比如STL容器的iterator,但是它也可以有其他用处:std
2020-09-24 17:26:41 490
原创 C++干货系列——强枚举到底有多“强”
强枚举到底有多“强”传统枚举类型以及其特性在开发上的弊端已逐渐显露,C++11标准对原有枚举类型进行了加强和补充,从而衍生出了"强枚举"。本文不仅旨在讲清楚强枚举是如何在弱枚举上进行改进,更希望阐明弱枚举的种种不足是如何对开发造成不利影响的;以及同时C++11"新标准"(早已不新)是如何对98的枚举进行补充的。枚举无处不在在工程代码当中,只要和数据打交道,基本上就离不开枚举类型——这是因为单纯的字符串类型在一份合格的工程代码中是不应该出现的,所有的字符串都应以枚举或常量的形式定义。举个例子,如果我们有
2020-09-24 10:41:28 302
原创 C++干货系列——右值引用与移动语义
引子——左值持久;右值短暂在C++11以前,所有引用都是左值引用(lvalue reference)——对左值的引用。lvalue这个词来自于C语言,指的是可以放在赋值表达式左边的对象,这些对象都是在对上或栈上分配的命名对象,他们有明确的内存地址。相对应的右值rvalue,如文字常量和临时变量,指的是可以出现在赋值表达式右侧的对象。左值引用只能绑定在左值上,右值就会编译错误:int& i = 419; // Compile Error好吧,这个错误有点蠢,应该也不会有人会这样用。但是我们通常
2020-09-24 10:40:27 277
原创 C++干货系列——起底万能指针void*
从一个惨案说起在一个项目中,我们开发的同学需要调用算法同学提供的一个接口,这个函数除了所有必要的参数之外,最后还有一个“多余的“参数void*类型,即一个可以指向任何类型的指针。这个参数之所以存在,是因为这个接口是一个算法过程的入口,在算法的最后会自动调用一个回调函数callBack,回调函数是我们自己定义的,可以用来回收所传进去的void*参数所开辟的内存,整个过程实现了算法和主流程的异步处理。其中算法可抽象成:void func_with_void_pointer(int par1, char pa
2020-09-24 10:39:18 481
原创 C++干货系列——用了这么久,你真的懂nullptr吗?
你是否在混着用NULL和nullptr?你是否分不清这二者到底有什么区别?滥用NULL到底会带来什么不可思议的错误?今天,我们就来讨论讨论nullptr这个空指针的救世主。在C++11之前,几乎所有人写代码时对NULL又爱又恨,爱是因为他确实能够起到空指针的作用,恨是刚躲过了这个坑,又遇见了那个妖,魑魅魍魉怎么它就这么多。还好,C++11给我们带来了希望的曙光——nulltpr。什么是NULL?这个问题想要回答好还真是不容易。从定义上来看,NULL是一个宏,它被定义为0(也就是int型的零),或者
2020-09-24 10:38:36 556
原创 C++干货系列——C++17新特性之std::optional
C++ 17 在 STL 中加入了许多新的"vocabulary types",这些类型时用在不同组件的接口处的。MSCV也在Visual Studio2017中添加了对诸如std::optional,std::any和std::variant的支持。在这篇文章中,我们就来看一下std::optional解决了哪些问题,以及如何正确使用它。表达“有时存在”在程序中,有时我们需要变量来表达“nothing”的意思,比如你怎么写一个函数来“有可能“返回一个值?就好像给我找出一段文字中的第一个偶数,如果有的话
2020-09-24 10:37:49 1612 1
原创 C++干货系列——override和final让你的虚函数更安全
今天我想谈谈override和final,这一对在C++11中不太引人注意的特性,相比于C++11其他特性而言也更简单。这两个特性都能让我们的程序在继承类和覆写虚函数时更安全,更清晰。覆写(override)虚函数你有没有像我一样遇到过这种情况:在子类中,本来你想覆写虚函数,结果虚函数却没有被正确地调用呢?或者更惨的是,你有时不得不去修改父类虚函数的声明。在所有的子类中查找重载的函数这件事可真的是很麻烦,而且墨菲定律告诉你:你永远会忘掉你搞错了的那一个子类。不管怎么样,看下边这个例子吧: struct
2020-09-24 10:36:47 1386 1
原创 C++干货系列——从编译期常量谈到constexpr(三)
使用constexpr进行编译期运算在上面两篇文章我分别介绍了什么是编译期常量以及C++03标准中的编译期运算。这篇文章我将围绕在constexpr这个关键字展开。C++03中编译期运算的限制我在上篇文章中所举的例子,要么非常简单,要么就是和模板元编程有关。非模板元编程的方法往往是一行就结束了,难以实现复杂的运算。此外我们还不能复用代码,无论在哪里我们都要再复制粘贴一遍,不符合我们设计代码的准则。模板元编程往往又非常的复杂,可读性也不高,虽然在C++14标准中我们有了可变参数模板,它能适当地改善模板元
2020-09-24 10:35:52 650
原创 C++干货系列——从编译期常量谈到constexpr(二)
C++11标准前的编译期运算在第一篇文章中,我把主要精力放在了什么是编译期常量,以及编译期常量有什么作用上。在这一篇文章中,我将更详细地介绍编译期常量是如何产生的。之所以要把编译期常量了解的这么透彻,是因为他是编译期运算的基础。在这篇文章中还会讲解我们在C++11 标准前都可以用做哪些**编译期运算(**compile-time calculations),通过了解这些比较原始的方法,我们能够更好地理解C++11标准为编译期运算方面所做的工作。编译期常量都从哪里来?在我们的经验中,大部分编译期常量的来
2020-09-24 10:35:00 389
原创 C++干货系列——从编译期常量谈到constexpr(一)
从编译期常量谈起C++20都支持虚函数的constexpr了,我打算用三篇读文章讲清楚编译期常量和constexpr这个东西和编译期常量的关系,即为什么需要他来辅助解决这个问题。最后帮助读者在实际编码过程中能够有意识地去运用他们,这才是终极目标。这篇文章中会讲到隐藏在日常编程中的各种编译期常量,以及他们存在的意义。什么是编译期常量想要用编译期常量就要首先知道它们是什么,一般出现在哪里和运行期常量有什么区别,因此我打算用第一篇文章重点分析编译期常量以及使用他们有什么好处。编译期常量(Compile-t
2020-09-24 10:33:59 872
原创 在github.io中使用LaTeX编辑数学公式
在github.io中使用LaTeX,如果使用的也是Jekyll的模板,可以在_layouts/default.html的最后粘贴以下代码:<script type="text/x-mathjax-config">MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']],processEscapes: true}});</script><script src="https://cd
2020-09-23 22:47:13 1136 1
原创 C++干货系列——一文完美解析“顶层”和“底层“ const
C++ 顶层 const 和底层 const从 const 指针开始说起。const int* pInt; 和 int *const pInt = &someInt;,前者是 *pInt 不能改变,而后者是 pInt 不能改变。因此指针本身是不是常量和指针所指向的对象是不是常量就是两个互相独立的问题。用顶层表示指针本身是个常量,底层表示指针所指向的对象是个常量。更一般的,顶层 const 可以表示任意的对象是常量,这一点对任何数据类型都适用;底层 const 则与指针和引用等复合类型有关,比较特
2020-07-18 22:33:17 1681
原创 Spring学习日记【4】——事务、隔离性和@Transactional
事务、隔离性和@Transactional什么是事务事务主要是逻辑上的一组操作,主要是对数据库 i读/o写的操作,或是对数据库增删改查的操作。但并不是所有这样的操作都能称为事务:事务至少要包含以下四个特性:原子性:事务中的操作,要么全做成,要么都不做,事务是不可拆分的,事务必须是以commit和rollback结束。任何一项操作失败都将导致整个事务失败,同时其他已经被执行的操作都将被撤销并回滚,只打所有的操作全部成功,整个事务才算是成功完成。一致性:事务的一致性是指事务的执行不能破坏数据库数据的完
2020-06-20 17:12:29 307 1
原创 Spring学习日记【3】——配置文件Xml的命名空间
Spring Bean配置文件——Xml的命名空间下面是一份非常常见的xml文件。<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.o
2020-06-20 17:10:03 243
原创 Spring学习日记【2】——Spring Bean注入方式的汇总及使用配置类进行bean的配置
Spring Bean的注入方式汇总@Component完成bean的注入@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。@Configuration可以和@Component等(@Controller、@Ser
2020-06-20 17:01:14 259
原创 Spring学习日记【1】——对IOC容器和控制反转的理解
对Spring IOC容器的理解与控制反转的理解控制反转当我们把web的每个任务都视作对外界请求的服务的响应,有了容器bean以后,我们就可以将业务与被管理的对象的生命周期相隔离,真正实现业务只操心业务的事情,而不管被管理的对象的生死存亡。这句话怎么去理解呢?业务即我们需要提供的服务,或者我们需要实现的功能,而被管理的对象可以分为方法(接口)和实例化的模型对象两种,下边用两个例子来说明这种所谓的控制反转的逻辑。当被管理的对象是实例化模型的时候:把我们提供的服务视作做一道菜的过程,那么其中必定要用
2020-06-20 16:51:50 222
原创 图像处理黄金算子:Canny算子手写体!!
首先写算法 推荐 听 周杰伦 的 歌,本人 亲身 体验,周杰伦 的 歌会提供最多 的 灵感。其实不是闲,因为老师让写。还是只讲干货,但这次由于算子原理很牛B,讲下原理和我的理解。首先,高斯滤波直接 用FS函数生成核,直接在时域滤波就OK了,因为整个程序下来都不涉及频域的计算,所以还是比较顺利,改了半个小时的bug就跑好了。然后,使用sobel求梯度(幅值和角度,这是两张图)。...
2018-11-21 21:01:33 606
原创 #就很固执#对上一篇的退化图像的最小二乘方滤波
最小二乘方算法写得头疼,头绪很足但是效果不尽人意,希望记录下来日后常进行思考。还是只谈干货原理简单一提退化模型的得出是从基本原理推导出一个数学模型的结果,假设图像在平面进行运动,通过对时间间隔内瞬时曝光量进行积分得到曝光总数,再通过傅里叶变换求出传递函数H。约束最小二乘方滤波的核心是H对噪声的敏感问题,通过建立约束条件形成方程并求解得出最佳滤波方案,并可以迭代优化求解最优参数。...
2018-11-18 22:08:36 593
原创 很多人想找找不到的2维DFT矩阵算法和手动Fspecial退化函数实现
今天起床脑仁疼,趁着脑袋不清醒把这个月的工作总结一下haha,提前祝csdn和各位小老板双11快乐哈。基于课业要求或者想了解matlab内库的童鞋想自己写DFT的和退化模型的可以看下。咱们只谈干货,二维DFT和退化模型的基础知识什么的就不在这说了,可以去看别的博主。如果尝试去写的话遇到的问题可能有:①使用四个for循环的2维DFT运行时间比较长,我用实验室的i5试了下大概100分钟的样...
2018-11-10 10:30:14 1685
原创 自定义比例的GS噪声和椒盐噪声的加入和阿尔法修正的均值滤波的实现
椒盐噪声的加入和GS噪声的加入程序已经烂大街(GS噪声公式很不好想,可能会间歇性遗忘),在这主要是展示下特定比例的实现(其实也很简单)代码直接粘了:jiaoyan:im=double(imread('board-orig.bmp'));[m,n]=size(im);imout=zeros(m,n);for i=1:m for j=1:n t=rand...
2018-11-03 12:14:24 1014
原创 C++学习笔记——批量生成字符串
一个很实际的例子:我们在做图像处理的时候会检测到若干ROI,并且为了方便分析会把他们保存下来,但是在处理之前我们并不知道有多少个这样的ROI,而如果只知道路径我们势必会面临批量生成字符串的问题——把所有的ROI保存为ROI1.jpg、ROI2.jpg、ROI3.jpg的形式等等。这里我们用到的一个重要函数就是sprintf(高版本的VS使用sprintf_s)。这是C标准库中的函数之一,用于格式化...
2018-09-08 00:53:09 955
原创 OpenCV学习笔记——HSV颜色空间超极详解&inRange函数用法及实战
目录一、HSV颜色系统简介二、HSV值对颜色的影响三、HSV和RGB的互相转化四、OpenCV中的HSV颜色体系五、OpenCV实战——两种方法使用OpenCV进行颜色分割六、inRange函数用法介绍一、HSV颜色系统简介HSV是一种在人们生活中甚至更常用的颜色系统,在电视遥控器上、在画画的调色板中、在你用爱某艺视频调整亮度时都很常见,因为它更符合人们描述颜色的方...
2018-09-08 00:27:28 91420 8
原创 亡羊补牢——error LNK1104: 无法打开文件 ProjectName.exe
这是在调试过程中出现的一个链接错误,通常是代码本来好好运行着没问题,调试了几次突然就不行了,如果debug模式失效release模式还是可以继续调试的,其出现的原因很有可能是一下几种情况: .exe文件本身就不存在了 .exe文件被占用,占用的原因很复杂 .exe是外部链接时,外部链接文件路径设置错误 如果是第一种情况,那么建议点击"清理解决方案——重新生成解决方案"...
2018-09-07 15:15:05 539
原创 亡羊补牢——出现系统丢失MSVCR120d.dll、MSVCP120d.dll丢失的问题
电脑配置环境描述:WIN10+VS2015+OpenCV 3.4.1 ×86Debug编译环境问题描述OpenCV高版本只能有×64版本的,为了实用32位编译平台自己编译了一个32位的OpenCV库,适用最高VS版本是VS2013,一直用的是release模式。结果今天第一次用debug模式出现了如标题所示问题,经过一番寻觅发现了出现问题的原因和解决方案。问题产生的主要原因是vs201...
2018-08-30 10:55:54 7416 2
原创 C++学习笔记——动态库与静态库
目录0. 库技术简介1. DLL用例示范2. DLL的加载、卸载与多进程的数据段3. DLL中的动态内存分配4.为DLL添加头文件5.在DLL中导出一个类6. 静态库的编译7. 动态库的手工加载8. VC项目的静态编译 0. 库技术简介在C/C++中可以将一种编译好的符号提供给第三方来使用,而源码是对用户不可见的,就是“库技术”。简单的来说就是...
2018-08-25 02:40:37 2026
原创 亡羊补牢——error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项的原因及解决方案
错误分析这是一个VS2010链接时产生的错误,有可能有两种说法: 值“0”不匹配值“2” 值“2”不匹配值“0” 关于这个报错的解释是:Debug使用了Release的库文件。若你连接库里两种库文件都添加着,但是却把release库文件放在了debug前面,也是会出错的。因为程序默认按顺序使用库文件。若报错为error LNK2038: 检测到“_ITERATOR_...
2018-08-24 13:10:30 3428 2
原创 亡羊补牢——This function or variable may be unsafe
今天遇到了编译器报错:error C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.那么第一个...
2018-08-24 10:36:37 294
原创 亡羊补牢——无法加载<iostream>
前两天配置tesseract来着,然后学opencv在我的VS2015上搞了个通用项目属性表,每次新建项目之后加上就行,但是搞好了以后发现cpp怎么都找不到<iostream>了,让我焦头烂额,我想着不会我把什么底层的文件不小心删了吧。。。(配置tesseract真的不容易,我来来回回删了好多个版本)最后通过强行打开<iostream>发现他说他在包含目录“...”里没...
2018-08-24 03:16:28 561
原创 亡羊补牢——error C2872: “ACCESS_MASK”: 不明确的符号
在实用opencv3.4.14中出现的编译错误,好像只有opencv3以上才会出现这种问题。问题所在:using namespace cv; 和 #include <windows.h>冲突了解决方案:要么将using namespace cv;去掉,每个Mat前面都加上域名符号cv::,这好麻烦啊,满篇都是Mat傻子才这么干呢。另一种方案是#include <win...
2018-08-24 03:07:38 1463
原创 OpenCV项目实战日志——检测文字并对比识别
第一次写长博,记录一个项目。这几天一直在接小活,有一个是客户的要求是将目标图片上的文字(目测是好多器材上边的编号)检测出来,并对比,要求长字符串和长字符串相同,短字符串和短字符串相同,不一样的需要标识出来。感觉还挺有意思的,就把过程贴出来以便日后复习。话不多说先贴图:待检测图片和最终识别结果如下图,相同的长字符串用蓝色框标出,短字符串用绿色框标出,而疑似不一致字符串用红色框标出,对客户传来的待测试...
2018-08-24 03:00:48 25583 3
原创 亡羊补牢——关于waitKey(0)不起作用的问题
今天写了一个程序,其中有一步是自动读取某个文件夹里所有图片,除了一些问题一直无法发现,就用了以下语句检测读到的文件名是否正确。 在while的大循环中,插入语句cout<<ImgName<<endl; 后为了判断输出是否正确以便查询问题,在while循环结束前加入了语句waitKey(0);以阻止循环继续进行。 但是waitKey(0);这条语句并不起作用,...
2017-11-19 00:24:09 3756
msvcp140_app.dll
2018-12-26
ImageWatch VS2015插件
2018-08-30
MSVCR120d.dll和MSVCP120d.dll,64和86位都有
2018-08-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人