LOI队内题单qwq

一周算法训练计划
本计划详细列出了从7月14日至7月20日每天的算法训练题目,覆盖了图论、数据结构、搜索、模拟等核心算法领域,旨在通过实战训练提升算法解决能力。

=== 7.14 ===
LOI算法马拉松
https://vjudge.net/contest/170166

=== 7.15 ===
codevs
1557 热浪 2273 扬帆远洋大战牧师妹酱 2627 村村通 1078 最小生成树 1231 最优布线问题 1077 多源最短路
选做 :
codevs 1021 玛丽卡 1269 匈牙利游戏 2218 补丁vs错误 2129 大陆争霸 1079 回家
3287 货车运输 1324 昂贵的聘礼 1535 封锁阳光大学
bzoj 2330 糖果

=== 7.16 ===
SCC: bzoj 1051 luogu 2656采蘑菇 codevs 1332上白泽慧音 vjudge模拟j
桥&&割点: tyvj 1322 luogu 1580P1580 yyy loves Easter_Egg I
LOI57图论练习

=== 7.17 ===
//习题来源:codevs
栈 3137 – 3139
队列 3185 – 3187
堆 1063 合并果子
并查集 1073 家族
哈希 1376 帕秋莉·诺雷姬
ST表 2173 忠诚
Trie树 3031 最富有的人
前缀和&&差分 1080 线段树练习 1081 线段树练习2
二维前缀和 1373 射命丸文
(最大子矩阵 1159 最大全0子矩阵)

=== 7.18 ===
codevs :
1430 素数判定 1212 最大公约数 1012 最大公约数和最小公倍数
1439 统计素数个数 1462 素数和 1313 质因数分解
1851 越狱 5947 组合数问题 1287 矩阵乘法
1978 Fibonacci数列 3 1732 Fibonacci数列 2
选做 :3285 转圈游戏 1697 ⑨要写信 1200 同余方程 1453 统计素数个数 2
poj 1061 青蛙的约会

=== 7.19 ===
高精 poj 1001
尺取法 poj 3061(二分or尺取) poj 3320
手读 HDU(vjudge) 3787
codevs
二分 1138 聪明的质检员 2744 养妹子喂鱼 4768 跳石头
贪心(自带脑梗) 1198 国王游戏(无高精60) 2382 挂缀

=== 7.20 ===
搜索 codevs 2152滑雪(记忆化) 1004 四子连棋
模拟 poj 1057 luogu 2655 时间2038

刷上点其他的等着博客分类填充qwq

基础算法:模拟 贪心 二分(查找/答案) 打表 高精度 对拍

搜索:DFS BFS 剪枝 优化 状态压缩搜索 随机化搜索 *A算法 *迭代加深

语言&STL:指针 引用 结构体(构造函数/重载运算符) 容器 (优先队列 set map vector 迭代器 string) 算法

数据结构:(单调)栈&&队列 堆 链表 分块 (权值)线段树 二叉搜索树 并查集(按秩合并路径压缩 带权并查集 扩展域)哈希(表)

动态规划:递推 记忆化搜索 各种背包 各种基础DP 树形DP 数位DP *状态压缩DP

图论:存图 最短路 最小生成树 LCA 差分约束 DFS序 分层图最短路 拓扑序 强联通分量 树链剖分

字符串:暴力匹配 trie树 *KMP *MANACHER

数论:GCD LCM 筛法(√n 埃式筛 线性筛)快速幂 矩阵乘法 exgcd 组合数学 (公式 二项式定理 需要推导)

### LOI Pooling 的概念与实现 LOI (Line of Interest) Pooling 是一种受目标检测领域中的 RoI (Region of Interest) Pooling 和 RoI Align 启发而设计的操作方法。其主要目的是在线段检测任务中,将线段映射到特征图上并生成固定大小的特征表示[^2]。 #### 背景 在计算机视觉任务中,尤其是涉及线段或边缘结构的任务(如 LCNN 中的线框分析),需要一种机制来提取特定区域内的特征并向主干网络传递梯度。传统的卷积神经网络通常会丢失空间信息,因此引入了类似于 RoI Pooling 或 RoI Align 的操作,用于处理感兴趣区域的特征提取问LOI Pooling 则专门针对线段这一几何对象进行了优化。 --- #### 基本概念 LOI Pooling 将一条线段视为一个兴趣区域,并将其投影到 CNN 提取的特征图上。具体来说,它通过以下方式工作: 1. **输入准备**:给定一张图像及其对应的特征图 \( F \),以及一组待检测的线段坐标集合 \( L = \{l_1, l_2, ..., l_n\} \)。 2. **线段投影**:每条线段被投影到特征图的空间维度上,形成一个新的采样路径。 3. **特征聚合**:沿着这条路径采集特征值,并通过插值或其他技术生成固定的特征向量。 这种操作使得模型能够在保持高精度的同时高效地学习线段特征。 --- #### 实现细节 以下是 LOI Pooling 的典型实现流程: ##### Step 1: 定义线段范围 假设有一条线段由两个端点定义为 \( p_s(x_s, y_s), p_e(x_e, y_e) \),则该线段可以通过参数化方程描述为: \[ P(t) = (1-t)p_s + t p_e,\quad t \in [0, 1]. \] 此方程允许我们在连续域内计算任意位置上的像素坐标。 ##### Step 2: 投影至特征图 由于原始图像经过多次下采样后形成了低分辨率的特征图,需将线段两端点 \( p_s, p_e \) 映射到特征图对应的位置 \( q_s(u_s, v_s), q_e(u_e, v_e) \)[^2]。这一步骤可通过简的缩放变换完成。 ##### Step 3: 插值采样 沿投影后的线段路径,在特征图上进行双线性插值以获取精确的特征值。设某时刻 \( t_i \) 对应于特征图上的浮点坐标 \( (u_t, v_t) \),那么附近的四个整数网格点可参与加权平均运算,最终得到当前点处的特征值[^2]。 ##### Step 4: 特征重组 最后,将所有采样的特征按顺序排列成一维向量作为输出结果。如果存在多个通道,则分别独立执行上述过程后再拼接在一起[^2]。 ```python import torch from torchvision.ops import roi_align as _roi_align def loi_pooling(features, lines, output_size=16): """ Implementation of Line-of-Interest (LoI) Pooling. Args: features (Tensor): Feature maps from backbone network with shape (B, C, H, W). lines (List[Tuple]): List of line segments defined by start and end points [(xs, ys, xe, ye)]. output_size (int): Number of samples along each LoI. Returns: Tensor: Extracted feature vectors for all given lines. """ batch_size, num_channels, height, width = features.shape pooled_features = [] for b in range(batch_size): for xs, ys, xe, ye in lines[b]: # Normalize coordinates to ROIAlign format boxes = torch.tensor([[b, min(xs, xe), min(ys, ye), max(xs, xe), max(ys, ye)]], dtype=torch.float).cuda() # Perform ROI Align on the box containing the line segment aligned_feature = _roi_align(features[[b]], boxes, (output_size, 1)) # Reshape into a vector pooled_features.append(aligned_feature.squeeze().view(num_channels, -1)) return torch.stack(pooled_features) # Example usage features = torch.randn((2, 256, 64, 64)).cuda() # Batch size 2, channels 256, spatial dims 64x64 lines = [[(10, 10, 50, 50)], [(20, 20, 70, 70)]] # Two batches, one line per image result = loi_pooling(features, lines) print(result.shape) # Output should be (number_of_lines, channel_dim * output_size) ``` --- #### 总结 LOI Pooling 结合了几何先验知识和深度学习的优势,适用于各种基于线段建模的应用场景。相比传统的方法,它的灵活性更高且更容易集成到现代框架之中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值