# pneumonia_tools **Repository Path**: baihaowen/pneumonia_tools ## Basic Information - **Project Name**: pneumonia_tools - **Description**: 算法优化 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-01-30 - **Last Updated**: 2024-02-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # pneumonia_tools算法优化 此部分Test代码将对一张图片进行处理,使其转换为2D高斯热力图 主要的数据部分如下: pneumonia_tools\pneumonia_tools\104.png ​ 1.calc_convex_hull_2d ​ 2.Canny ​ 3.put_heatmap_2d ## 算法执行详细测试 put_heatmap_2d进行2D高斯热力图转换操作过慢 - 此代码尽量不更改里面的数学逻辑,可能会导致图像变形 - 部分计算可以向量化,而不必逐一迭代点进行计算 - 可能存在多次对数组进行索引和赋值的操作,这在大型数组上可能会导致性能下降 - 在循环中遍历限定计算范围的点并逐一计算热力值,这种循环遍历通常比较慢 解决方案1:对每个进入的原图像进行图像学处理,使得计算量降低 解决方案2:在put_heatmap_2d中使用向量化计算,同时避免重复的运算 | pneumonia_tools | | | | ------------------- | -------- | -------------- | | calc_convex_hull_2d | Canny | put_heatmap_2d | | 0.001994 | 0.001993 | 107.463153 | | all cost: 107.473 | | | ## 算法输入图像优化 > 此部分主要对输入的图像使用opencv进行了形态学处理 > > 优化逻辑: > > 1. 对图像进行2次降采样使其尺寸变小,减小计算量 > 2. 把降采样后的图像复原为原始尺寸 | pneumonia_tools | | | | ------------------- | -------- | -------------- | | calc_convex_hull_2d | Canny | put_heatmap_2d | | 0.023937 | 0.002055 | 2.180876 | | all cost: 2.206868 | | | 从原来的107.473s提升到了2.206868s ## put_heatmap_2d函数优化 > 此部分主要对put_heatmap_2d函数进行了一些算法的优化 > > 优化逻辑: > > 1. 协方差矩阵修正的优化 > 2. 矩阵运算的向量化 > 3. 有效点的计算优化 > 4. 数组索引的优化 | pneumonia_tools | | | | ------------------- | -------- | -------------- | | calc_convex_hull_2d | Canny | put_heatmap_2d | | 0.017950 | 0.000986 | 0.015969 | | all cost: 0.043 | | | 从图像处理后的2.206868s提升到了0.043 ## 尺寸测试 选取512x512的图片和2048x2048的图像进行对比 > 可以看出图像的尺寸对于计算的时间影响较大,4倍的计算量,提升了28.5倍的时间,后续需要尝试更多的优化方式进行优化 | x86 | | | ------- | --------- | | 512x512 | 2048x2048 | | 0.044 | 1.255 |