- 博客(47)
- 收藏
- 关注
原创 20220608-SCRFD-样本和计算重分配
基于基准数据集统计的样本重新分配(),它增加了最需要阶段的训练样本;基于精确定义的搜索方法的计算重新分配(),它在模型的骨干、颈部和头部之间重新分配计算。准确的来说,这里就是考虑直接利用分类网络的主干部分进行特定规模的人脸检测可能是次优的。所以本文提出参考regnet来进行网络搜索,在限定整体模型计算量的情况下,合理的分配每一个block的计算量,找到最佳的分配方案;同时,针对特定环节(Stride=8)提升正样本的采样数量来优化模型的训练过程,提升精度。这里有就是前面提到的。。。。...
2022-07-26 13:19:57
877
原创 安卓开发整理
安卓开发整理引入 so 文件的方式,如果想编译一个 so 文件,供安卓使用,可以构建一个初始化的demo工程(native c++),修改代码,编译工程,生成 apk;解压后有对应的 libs 包,里面就是 so 文件新建一个需要调用的安卓工程,将上面的 libs 拷贝到 src 的 libs 目录,同时在 android 的 app/build.gradle 下,在 android ...
2019-10-15 21:22:44
255
原创 绿布抠图;绿衣服抠图,视频单背景抠图
常见的场景抠图算法,应用范围广泛,包括各种旅游景点,网络会议,视频直播等,用于抠图后合成虚拟的背景使用,我们初步研究并合作了一些企业,完成了一整套的闭环,包括抠图算法,完成后自动上传云端,公众号支付下载照片和视频。我们目标支持静态抠图,视频实时抠图,图像风格化,公众号支付下载照片和视频等等一套完整的解决方案。具体效果如下:支持普通衣服抠图,一般的绿背景含绿衣服抠图等。更多抠图效果和视频可以联...
2019-07-27 14:02:08
4112
原创 深度学习调参介绍
不同类型的网络,具体的调参方案不尽相同,有一些比较通用的思路记录如下:样本尽量随机,避免学习偏差样本要归一化,为什么需要归一化?参考避免数值问题(精度)更快的收敛,尤其是梯度下降法,方便初始化解,同时学习率的设置也更方便合理样本的特征量纲可能不一致,需要统一常用的 sigmoid 函数,在绝对值较大时容易出现饱和激活函数的选择,介绍略;参考 & 参考2只说 sig...
2019-06-19 11:56:13
1217
原创 图像相似度评估
文章目录各种 hash以图搜图各种 hashaHash|pHash|dHash|wHash实现了以上几种不同类型的 hash,hash通常是用于将一个 data 转化为一个固定长度的字符串,在图像 hash 中则通常用于快速的找到相同或者相似的图像。参考,以下几种 hash 都是把图像降采样到一定的分辨率通常8 * 8 到 64 * 64之间,然后进行处理计算 hash。aHash ...
2019-06-16 12:24:19
1121
原创 图像增强的方法
在深度神经网络的训练中总是需要大量的样本,所以经常需要对样本进行增强,说白了就是一变多,通常的图像增强方法有 crop、flip、ratate、scale、颜色调整(对比度、亮度等);还有一类是仿射类增强,在图像分割中可能更常用一些,这里重点介绍MLS(移动最小二乘),它包含三种图像变形方法,分别是仿射变换、相似变换、刚性变换。其中刚性变换的效果是最好的。参考这里,比较详细的介绍了仿射变换的原...
2019-06-14 17:36:40
2178
原创 人脸检测
文章目录传统的算法[ACF?opencv| dlib]深度学习的检测方法传统的算法[ACF?opencv| dlib]深度学习的检测方法
2019-06-14 12:16:14
544
原创 人像 matting 系列综述
本次针对人像的 matting 算法做些简单的调研和介绍。参考一介绍了部分 matting 算法,也展示了一部分的效果。自己尝试了 closed form matting、alpha matting、knn matting、shared matting 。这里有一个迪士尼出的影像级 matting 算法论文和介绍,视频中对比了各种算法的效果。链接,效果好的出奇,也符合影像级的要求了,还能解决...
2019-06-12 16:26:04
3430
1
原创 图像卷积介绍
单通道卷积这个不需多说,网上都是多通道卷积输入多通道的图,卷积核也采用相同的通道数,生成的多通道结果,将每个通道对应位置的值相加,即得到 feature map,n 个卷积核就对应生成 n 通道的 feature map; 这也是3 * 256 * 256 => 64 * 256 * 256变换的基础。空洞卷积(dilated|atrous convolution)详细参考直观...
2019-06-12 12:12:30
1087
1
原创 语义分割-Deeplab1|2|3, CRF as RNN介绍
只整理关键点属于语义分割范畴,语义分割需要分割每个像素到指定类别上,并组合成几个有意义的目标,打上标签,应用场景:自动驾驶医疗辅助deeplab1 & 2dcnn 粗分割,计算大致位置CRF 精分割标准的 dcnn 输出特征分辨率小+对输入变换具有内在不变性,deeplab 引入了空洞卷积(atrous conv, 解决分辨率问题)+ CRF(解决精分割问题)。C...
2019-06-12 11:32:25
1837
原创 jupyter 使用技巧系列
文章目录代码补全代码补全代码补全有一个问题,就是在执行这个的时候,第二步可能会报错。所以先执行后面的步骤,然后在回过来执行这个第二步;这一步主要是安装大部分的配置项;如果没有执行的话,就看不到这么多配置项了。pip install jupyter_contrib_nbextensions -i https://pypi.mirrors.ustc.edu.cn/simplejupyter ...
2019-06-11 09:42:46
502
原创 多线程调用 opencv 图像处理
背景调用相机视频进行实时处理,原本是基于c++ 的线程池实现的,后来编译成 dll,转用 c# 的线程池实现,Dll 里面的图像的处理过程还是比较多的,但是经常会出现 dll 中内存地址访问冲突,通常是程序跑了一段时间之后。通过 dll 的 debug,主要报错在图像的 resize/copyTo/clone 函数中,注释掉就没有报错了。定位问题先看下 copyTo 的实现void Gp...
2019-06-06 11:56:26
3662
原创 熟悉CNN 系列-基础的 cnn 结构
目录嵌入层卷积和池化层dropout 层初步介绍一下由tesorflow 实现的 cnn 结构以下结构,包含一个嵌入层,3个卷积-池化层,dropout 层,输出层;def neural_network(): # embedding layer with tf.device('/cpu:0'), tf.name_scope("embedding"): embe...
2019-05-29 17:59:44
486
原创 字符串前缀,真前缀,后缀,真后缀,及前缀函数
举个例子,如字符串 ababc首先,不考虑空字符,所有的前缀有a, ab, aba, abab, ababc,其中真前缀有a, ab, aba, abab同理可以理解后缀,真前(后)缀就是指不包含自身的前(后)缀前缀函数next[j]是指某个字符串的最长真后缀同时也是它的前缀的子串长度。不太理解可以看下面的例子a -> 0ab -> 0aba -> 1abab -> 2
2014-05-17 22:20:24
19035
3
原创 Fast Radial Symmetry Transform/快速径向对称变换
本文主要介绍一下利用径向变换进行特征提取的方法和原理,基本原理主要来自
2014-05-15 20:12:58
6996
转载 HTTP协议的状态码
HTTP/1.1定义的状态码值和对应的原因短语(Reason-Phrase)的例子。 1XX表示:消息 这一类型的状态码,代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束。由于HTTP/1.0协议中没有定义任何1xx状态码,所以除非在某些试验条件下,服务器禁止向此类客户端发送1xx响应。 这些状态码代表的响应都是信息性的,标示
2014-05-03 11:41:42
673
原创 LeetCode之Merge K Sorted Lists
ListNode *mergeKLists(vector &lists) //Merge K Sorted Lists { if(lists.size()==0) return NULL; ListNode* p=lists[0]; for (int i=1;i<lists.size();i++) { p=mergeTwoLists(p,lists[i]); }
2014-04-22 11:01:44
914
原创 LeetCode之Remove Duplicates from Sorted List
ListNode *deleteDuplicates(ListNode *head) //Remove Duplicates from Sorted List II { if(head==NULL||head->next==NULL) return head; ListNode* cur=head,*pre; ListNode dummy(INT_MIN); pre=&du
2014-04-22 09:40:46
814
原创 LeetCode之Remove Element
int removeElement(int A[], int n, int elem) //Remove Element { int num=0; for (int i=0;i<n-num;i++) { if (A[i]==elem) { while(i!=n-num-1){ if(A[n-num-1]!=elem) {A[i]=A[n-num-
2014-04-14 23:04:41
763
原创 LeetCode之Remove Duplicates from Sorted Array
int removeDuplicates(int A[], int n) //Remove Duplicates from Sorted Array { if (n == 0) return 0; int index = 0; for (int i = 1; i < n; i++) { if (A[index] != A[i]) A[++index] = A[i];
2014-04-14 23:03:25
764
原创 LeetCode之Search Insert Position
int searchInsert(int A[], int n, int target)//Search Insert Position { if(n==0||A==NULL) return 0; int index; for (int i=0;i<n;i++) { if(i==0&&A[i]>target) return 0; if(i==n-1&&A[i]<tar
2014-04-09 22:59:37
721
原创 LeetCode之Merge Sorted Array
void merge(int A[], int m, int B[], int n) //Merge Sorted Array { int i,j; for(i=0,j=0;i<m+j&&j<n;) { if (A[i]<=B[j]) i++; else { insert_num(A,i,m+j,B[j]);i++;j++; } } if(
2014-04-09 22:57:56
732
原创 快速排序,插入排序,归并排序,计数排序,基数排序,堆排序
快速排序vector quickSort(vector &t,int a,int b) { if(a>=b) return t; int i=a,j=b; int tmp,tmp2; tmp=t[a]; while (i<j) { while(i<b&&t[i+1]<tmp) i++; while(j>a&&t[j-1]>tmp) j--; if(i<j
2014-04-08 19:12:08
996
转载 为什么模板类不能支持分离编译
首先,C++标准中提到,一个编译单元[translation unit]是指一个.cpp文件以及它所include的所有.h文件,.h文件里的代码将会被扩展到包含它的.cpp文件里,然后编译器编译该.cpp文件为一个.obj文件,后者拥有PE[Portable Executable,即windows可执行文件]文件格式,并且本身包含的就已经是二进制码,但是,不一定能够执行,因为并不
2014-04-08 16:48:12
1007
原创 LeetCode之levelTraverse
int levelTraverse(TreeNode* tree) //按层遍历二叉树,队列实现 { if(tree==NULL) {return 0;} TreeNode* p; p=tree; queue q; q.push(p); //int level=maxDepth(tree); while (!q.empty()) { p=q.f
2014-04-06 12:25:24
673
原创 LeetCode之levelTraverse
int levelTraverse2(TreeNode* tree)//按层遍历二叉树,递归实现 { if(tree==NULL) return 0; int depth=maxDepth(tree)+1; for(int i=1;i<depth;i++) { lvlTraverse(tree,i); } }
2014-04-06 12:24:13
540
原创 LeetCode之inorderTraversal
vector inorderTraversal(TreeNode *root) //Binary Tree inorder Traversal { if (root==NULL) {return t; } inorderTraversal(root->left); t.push_back(root->val); inorderTraversal(root->rig
2014-04-04 09:44:45
595
原创 LeetCode之postorderTraversal
vector postorderTraversal(TreeNode *root) //Binary Tree Postorder Traversal { if (root==NULL) {return t; } postorderTraversal(root->left); postorderTraversal(root->right); t.push_bac
2014-04-04 09:44:00
591
原创 LeetCode之preorderTraversal
vector preorderTraversal(TreeNode *root) //Binary Tree Preorder Traversal { if (root==NULL) {return t; } t.push_back(root->val); preorderTraversal(root->left); preorderTraversal(root->
2014-04-04 09:43:11
655
原创 LeetCode之generateTrees
vector generateTrees(int n) //Unique Binary Search Trees II { if (n == 0) return generate(1, 0); return generate(1, n); }vector generate(int start, int end) { vector subTree; if (start >
2014-04-04 09:42:03
631
原创 LeetCode之numTrees
int numTrees(int n) //Unique Binary Search Trees { vector f(n+1,0); f[0]=1;f[1]=1; for(int k=2;k<=n;++k) for(int i=1;i<=k;++i) f[k]+=f[i-1]*f[k-i]; return f[n]; }
2014-03-30 18:59:49
679
原创 LeetCode之minDepth
int minDepth(TreeNode *root) //二叉树最小深度 { int l,r; if(root==NULL) return 0; if(root->left==NULL&&root->right==NULL) { return 1; } else if(root->left!=NULL&&root->right!=NULL) { l
2014-03-30 18:56:04
738
原创 LeetCode之removeDuplicates
int removeDuplicates(int A[], int n) //Remove Duplicates from Sorted Array { if (n == 0) return 0; int index = 0; for (int i = 1; i < n; i++) { if (A[index] != A[i]) A[++index] = A[i];
2014-03-30 18:53:06
607
原创 LeetCode之Single Number II
int singleNumber(int A[], int n)//Single Number II { int b; int count[sizeof(int)*8]={}; for(int j=0;j<32;j++) { for (int i=0;i<n;i++) { b=1; b&=(A[i]>>j); count[j]+=b;
2014-03-30 18:50:43
528
原创 LeetCode之maxProfitII
解法一:int maxprofit2(vector &prices) //Best Time to Buy and Sell Stock II { //cout<<prices[0]; if (prices.size()==0||prices.size()==1) {return 0; } int i=0,j=0,profit=0; while (prices[i]>
2014-03-28 22:35:37
746
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人