位运算运用
位运算的应用 快速幂 题目: a^b 快速幂讲解 假设我们要计算3113^{11}311 这个当然可以用暴力的方式去算,没啥问题,那这样就要算11次,即n次 可以看一下11的二进制为1011 311=38∗32∗313^{11} = 3^8*3^2*3^1311=38∗32∗31 这个结果很显然,可以得出11的二进制中对应1的位置,恰好为3113^{11}311的一个因素,这是不是巧合呢?我们不妨再尝试一个 30的二进制为11110 1030=1016∗108∗104∗10210^{30} = 10^{16}*10^{8}*10^4*10^21030=1016∗108∗104∗102 显然这不是一个巧合。 而我们可以看出,二进制指数的计算过层是可以被简化的 比如1016=28∗2810^{16} = 2^{8}*2^{8}1016=28∗28,在前面的计算过程中,我们又可以通过242^424计算出282^828。 这就是快速幂的思想了 AC代码: 123456789101112131415161718192021222324252627#include...
Fast-SCNN快速语义分割
Fast-SCNN快速语义分割 论文名:Fast-SCNN: Fast Semantic Segmentation Network 作者:Rudra P K Poudel, Stephan Liwicki, Roberto Cipolla 代码:无github代码,只有modelarts上的baseline 摘要 主要贡献: 提出了一个有竞争性(68.0%miou),并且能在高分辨率(1024x2048)的图片实现实时(123.5FPS)语义分割的算法Fast-SCNN. 采用了离线型DCNNs中流行的跳跃连接(skip connection),并提出了一种浅层学习的下采样模块learning to Down-sample,以此更加快速高效地进行多分支低级特征提取。 将Fast-SCNN设计为轻量型(low capacity),并证实了无论是使用ImageNet数据集的训练模型多训练几代,还是在添加的粗糙数据中多训练几代的结果是等效的。 DCNNs的效率 高效DCNNs(Diffusion-Convolutional Neural Networks...
最短路问题
最短路问题的类型与解决算法 最短路问题分为单源最短路(1-n的最短路)和多元汇最短路(源点=起点,汇点=终点) 单元最短路 所有边权都是正数 朴素Dijkstra算法(O(n2)O(n^2)O(n2)),适合稠密图 堆优化的Dijkstra算法(O(mlogn)O(m\log n)O(mlogn)) 存在负边权 Bellman-Ford (O(nm)O(nm)O(nm)) SPFA 一般:(O(m)O(m)O(m)),最坏(O(nm)O(nm)O(nm)) 多元汇最短路 Floyd算法 O(n3)O(n^3)O(n3) 单元最短路 朴素Dijkstra算法 先加入起点 起点到其他点的距离都为无穷大,到自己是0 更新起点到其他点的距离,更新时判断是否最短 从未选择的点中选择距离最小的点,加入点集,重复上述操作,直至所有点都进入点集 算法实现 12345678910111213141516171819202122232425262728293031323334353637383940#include...
实时语义分割
论文名称:Rethinking BiSeNet For Real-time Semantic Segmentation 作者:Mingyuan Fan, Shenqi Lai, Junshi Huang, Xiaoming Wei, Zhenhua Chai, Junfeng Luo, Xiaolin Wei code:https://github.com/MichaelFan01/STDC-Seg(尚未开源) 摘要 BiSeNet是目前流行的实时分割两流网络,但是添加额外的路径去进行编码非常耗时,并且由于任务专用设计的不足,主干可能无法有效地进行图像分割。 本文提出了STDC网络,通过消除结构冗余来实短期密集级联网络。 逐渐减小特征图维度,并将他们聚集用于图像表示,这构成了STDC网络的基本模块。在解码器中,我们通过将空间信息的学习以单流的方式集成到底层中,从而提出了一个细节集合模块。最后将底层特征和深层特征融合在一起,以预测最终的分割结果。 Short-Term Dense Concatenate Module(STDC,短期密集级联模块) ConvX ...
跨数据集语义分割
跨数据域协同学习的语义分割 论文名称:Cross-Dataset Collaborative Learning for Semantic Segmentation 作者:Li Wang, Dong Li, Yousong Zhu, Lu Tian, Yi Shan 期刊:CVPR2021 主要结构 DAB:Dataset-Aware Block(数据集感知块) 作为网络的基本计算单元,有助于捕获o不同功能数据集之间的同质表示和异构统计。 主要由,一个数据集不变的卷积层,多个数据集特定的BatchNormal和一个激活层构成。 DAT:Dataset Alternation Training(数据集交替训练机制) 分割结果: 跨数据域的训练 最初的跨数据集训练机制是运用在基于帧的动作识别上的。 后来通过简单的标签级联和标签映射产塞回给你的混合数据集应用到了目标检测上 Domain adaptation(DA 领域适应)或knowledge...
渐进式语义分割
渐进式语义分割 论文名称:Progressive Semantic Segmentation 作者:Chuong Huynh, Anh Tran, Khoa Luu, Minh Hoai 期刊:CVPR2021 code:https://github.com/VinAIResearch/MagNet(作者好像改成私有仓库了) 问题描述 当对大型图片进行语义分割时,可能会导致显存炸掉。收到内存限制,可以选择下采样,或将图像划分为局部块。但前者会丢失细节,后者会却反全局视图。 后处理改善分割细节 经典方法 条件随机场(CRF),引导滤波器(GF),两个速度慢,改进是渐进的。 深度学习的引导过滤器(DGF)可以提高推理速度 迭代实例分割(ISS) 通过多次将输入图像和分割图像通过细化模块来多次细化输出。 这种细化过程是自反的,因此每一个细化层的输入图像都是相同的 CascadedPSP 才用与ISS相同的细化模式,但是对于每一个细化层的输入与ISS不同,才用的是不同分辨率的原图和分割图像进行细化。 MagNet 核心模块为:segmentation and...
数学建模算法合集
差分方程通解的求法 对任意一个差分方程式子全部移到左边,令右边为0 比如:an=an−1+an−2a_n = a_{n-1}+a_{n-2}an=an−1+an−2转化为an−an−1−an−2=0a_n-a_{n-1}-a_{n-2} = 0an−an−1−an−2=0 对ana_nan的系数,也作为其特征方程系数,产看上一步转化的式子中a的下标n−kn-kn−k中的k最大是多少,然后根据,k向下递减,确认k是否出现在第一步的式子中可得特征方程 a1xk+a2xk−1+...+bk=0a_1x^k+a_2x^{k-1}+...+b_k = 0 a1xk+a2xk−1+...+bk=0 求解这个方程得到特征根k1,k2,...,knk_1,k_2,...,k_nk1,k2,...,kn 则这个差分方程的通解为: c1(k1)n+c1(k1)n+....+c1(k1)n=0c_1(k_1)^n+c_1(k_1)^n+....+c_1(k_1)^n =...
数据库理论(四)——数据库规范化与模式分解
数据库理论(四)——数据库规范化与模式分解 部分函数依赖 函数依赖的确定 1对1的关系时,有两个函数依赖 1对多时,有一个函数依赖 多对多时,没有函数依赖 函数依赖类型 右边不为左边的子集{非平凡函数依赖(A−>B),yes平凡函数依赖(AB−>B),no左边有子集能决定右边{部分函数依赖,yes完全函数依赖,no右边不为左边的子集 \begin{cases} 非平凡函数依赖(A->B),yes...
数论的算法实现
数论 搬运自好友:therainisme的博客 试除法判定质数 就从2开始除,如果不能被整除就继续除,直到n\sqrt nn为止,也就是说,直到i∗i≤ni*i\leq ni∗i≤n为止 123456789bool check(int x){ if(x < 2) return false; else{ for(int i =2;i<= x/i;i++){ if(x%i==0) return false; } } return true;} 分解质因素 12345678910111213141516171819202122void divide(int x){ // 第一个数是质因数,第二个数是质因数的个数 for (int i = 2; i <= x / i; ++i) { // 从小到大的去取质数,稳 // i表示的是质数 if (x % i == 0) ...
搜索算法
搜索 bfs和dfs bfs搜到的点具有最短路性质,而dfs没有 最短用bfs,奇怪的用dfs dfs 全排列问题: dfs的流程: 代码实现: 12345678910111213141516171819202122232425262728293031323334353637// 关键时搜索顺序// dfs是递归// 回溯时要注意恢复现场#include <bits/stdc++.h>using namespace std;const int N = 10;int n; // 个数int path[N];// 路径存储bool st[N];// 是否被使用void dfs(int u){ // 最后一个就直接输出路径 if(u==n){ for(int i =0;i<n;i++){ printf("%d ",pat[i]+1); } // 每个方案后输出一个换行 cout<<endl; ...