- 博客(1630)
- 资源 (6)
- 收藏
- 关注
原创 归并排序的 cuda 加速分析
如果改为每个block多个thread的方式(multi-block, multi-thread),每个block用共享内存加速读取(前面的好几步合并需要多次读取局部的共享内存,读取次数越多,使用共享内存的加速效果越明显),下一步准备试试看优化效果…作为对比,一个CPU串行版本的归并排序,与GPU并行版本的排序对比运行时间。另外手写了一个CPU串行版本的归并排序的函数mergeSort_cpu作为对比)把数组分成多段, 把相邻两段的有序数组合并,由于有很多段,因此可以并行的方式同时合并。
2022-09-15 16:46:00 299
原创 CUDA 高效策略:统计直方图以及共享内存的优化加速
直方图是用来统计像素灰度值分布的一种方法,同理也可以统计RGB色素的分布。调整图像的对比度则需要直方图分布概率,才能进行灰度变换。对于CUDA来说,可以并行读取多个像素点的值,然后进行统计,但是统计过程则是串行的。这里需要使用CUDA串行指令“原子操作”。否则会好多线程同时重复读写一个内存的内容。
2022-09-15 16:00:33 303
原创 P1443 马的遍历【BFS】
从一个点出发,搜寻另外的点,这明显是一道关于搜索的题目。,而DFS是用来解决求一个点到另一个点路径总数的问题。显然地,这题用到的是BFS。上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步。的矩阵,代表马到达某个点最少要走几步(不能到达则输出。输入只有一行四个整数,分别为。对于全部的测试点,保证。
2022-09-15 11:01:19 161
原创 CVPR 2022:Generalized Few-shot Semantic Segmentation 解读
之前已经有过关于小样本语义分割的论文解读,关于如何用 Transformer 思想的分类器进行小样本分割,链接见https://mp.weixin.qq.com/s/YVg8aupmAxiu5lGTYrhpCg。本篇是发表在 CVPR 2022 上的 Generalized Few-shot Semantic Segmentation(后文简称 GFS-Seg),既一种泛化的小样本语义分割模型。在看论文的具体内容之前,我们先了解一些前置知识。
2022-09-11 10:55:05 1056
原创 CWT-for-FSS: 用 Transformer 思想的分类器进行小样本语义分割
文章目录1 前言2 CWT-for-FSS 整体架构3 求解方法4 实验结果分析5 代码和可视化6 总结7 参考链接1 前言之前写了几篇医学图像分割相关的论文阅读笔记,这次打算开个小样本语义分割的新坑。这篇阅读笔记中介绍的论文也是很久之前读过的,接受在 ICCV 上,思路值得借鉴。代码也已经跑过了,但是一直没来得及整理,arXiv:https://arxiv.org/pdf/2108.03032.pdf 。针对小样本语义分割问题,这篇论文提出一种更加简洁的元学习范式,即只对分类器进行
2022-05-21 17:41:47 974 1
原创 基于GNet网络和Keras框架实战眼底图像视杯视盘分割
个人简介:李响Superb,CSDN百万访问量博主,普普通通男大学生,目前在读软件工程,计算机视觉、深度学习和医学图像处理专攻,偶尔也搞迁移学习和全栈开发。博客地址:lixiang.blog.csdn.net文章目录1 前言2 视杯视盘分割任务概述3 GNet网络结构4 眼底图像视杯视盘分割代码5 结果评估可视化(ROC曲线)6 眼底图像视杯视盘分割新思路1 前言本文基于GNet架构完成了视网膜视杯视盘提取任务,基于Keras框架更简单的实现分割,网络、工具类、训练和预测的代码一目了然,环境为Goo
2022-05-04 17:04:40 1215 1
原创 TransBTS: 3D 多模态脑肿瘤分割 Transformer 阅读笔记
文章目录1 前言2 TransBTS 整体结构概述3 Network Encoder4 Network Decoder5 实验部分6 总结7 参考链接1 前言这是医学图像处理系列的第三篇文章,arXiv 链接在文末,为什么选择写下 TransBTS 这篇论文的阅读笔记?因为才有时间整理了。此外,与之前的两篇相比,它们都有各自的代表性。第一篇(https://zhuanlan.zhihu.com/p/505483978)是 2D Transformer 医学图像分割,第二篇(https
2022-05-04 09:51:07 1478
原创 轻量级的肝脏与肝肿瘤 2.5D 分割网络阅读笔记
文章目录1 前言2 方法概述2.1 InceptionV1-V3 and convolution conversion2.2 Residual block2.3 2.5D 网络3 RIU-Net 的整体结构4 实验和可视化5 总结1 前言最近一直在读医学图像的论文,于是我打算写一个系列的阅读笔记,语言比较精简。在上一篇阅读笔记(https://zhuanlan.zhihu.com/p/505483978)中,分析了医学图像分割的混合 Transformer 网络:UTNet,在
2022-04-29 09:38:25 1307
原创 UTNet:用于医学图像分割的混合 Transformer 网络阅读笔记
文章目录1 概述2 浅析 Transformer 架构2.1 重看 Self-attention Mechanism2.2 高效的 Self-attention Mechanism2.3 Relative Positional Encoding3 UTNet 的整体结构4 实验5 总结6 参考链接1 概述很久之前读了这篇接收在 MICCAI 2021 上的文章,复现调试了代码之后还没有及时整理一篇阅读笔记。由于在 MICCAI 上,这篇文章同样没有大量的实验对比工作,但是提
2022-04-27 10:30:20 1110
原创 OneFlow 如何做静态图的算子对齐任务
文章目录1 前言2 OneFlow 的 Graph 算子对齐概述3 Graph 模式下自动测试实现原理3.1 AutoTest 流程介绍3.2 Graph 模式如何伴随 Eager 模式做算子对齐3.3 Graph 模式的自动测试个性化4 Graph 的 Debug 支持5 总结6 相关链接1 前言对于深度学习框架中模型的运行方式主要有两种,分别是动态图和静态图,动态图更易用,静态图性能更具优势,OneFlow 习惯将它们称为 Eager 模式和 Graph 模式。OneFl
2022-04-20 15:09:02 413 1
原创 OneFlow 的 Global Tensor 学习笔记和实习总结
文章目录1 前言2 关于 Global Tensor2.1 OneFlow 分布式全局视角的基础保证2.2 SBP 自动转换2.3 to_global 方法2.4 GlobalTensor 类代码跟踪2.5 如何做 Global Ops 的执行测试3 总结4 参考链接1 前言为了简化分布式训练,OneFlow 提出了全局视角(Global View) 的概念,在全局视角下,可以像单机单卡编程,进行分布式训练。在 OneFlow 的设计中,使用 Placement、SBP 和
2022-04-20 15:03:06 544
原创 【内网穿透】生壳SSH映射 for Linux 使用教程
一、下载进入花生壳站点下载Linux 5.0安装包,根据所使用的系统选择不同的版本下载。二、安装花生壳的安装步骤需在管理员权限下进行。(1)Centos系统1、安装,下载正确安装包后,通过cd命令进入所在的文件目录,根据不同位数的系统输入下面的命令进行安装,安装完成会自动生成SN码与登录密码。(注:如果部分centos主机本身已有wget依赖,安装后无法获取到SN码,请将wget依赖包更新到最新版本可正常获取)32位:rpm -ivh phddns-5.0.0.i686.rpm64位:rpm
2022-03-31 17:59:34 856
原创 CUDA、CUDA toolkit、CUDNN、NVCC关系
CUDA:为“GPU通用计算”构建的运算平台。cudnn:为深度学习计算设计的软件库。CUDA Toolkit (nvidia): CUDA完整的工具安装包,其中提供了 Nvidia 驱动程序、开发 CUDA 程序相关的开发工具包等可供安装的选项。包括 CUDA 程序的编译器、IDE、调试器等,CUDA 程序所对应的各式库文件以及它们的头文件。CUDA Toolkit (Pytorch): CUDA不完整的工具安装包,其主要包含在使用 CUDA 相关的功能时所依赖的动态链接库。不会安装驱动程序。(N
2022-03-31 16:38:13 1140 1
原创 使用 jQuery 修改 DOM 方法
一旦你使用jQuery函数找到元素集合后,你就可以使用各种方法更改它们。用该命令设置内部文本 text():$(“h1”).text(“All about cats”);用该命令设置内部文本 html():$(“h1”).html(“I love cats”);用该命令设置属性 attr():$(".dog-pic").attr(“src”, “dog.jpg”);$(".google-link").attr(“href”, “http://www.google.com”);用该命令修改 C
2022-03-31 11:56:34 1949
原创 自动混合精度(AMP)介绍与使用【Pytorch】
文章目录1 前言2 Mixed Precision Training3 torch自动混合精度(AMP)介绍与使用4 torch1.6及以上版本1 前言pytorch从1.6版本开始,已经内置了torch.cuda.amp,采用自动混合精度训练就不需要加载第三方NVIDIA的apex库。使用精度低于32位浮点的数值格式有许多好处。首先,它们需要更少的内存,从而能够训练和部署更大的神经网络。其次,它们需要较少的内存带宽,从而加快数据传输操作。第三,数学运算在降低精度方面运行得更快,特别是在具有Tenso
2022-03-30 14:55:25 3085
原创 C++【力扣LeetCode算法题库】47. 全排列 II
给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。示例 1:输入:nums = [1,1,2]输出:[[1,1,2], [1,2,1], [2,1,1]]示例 2:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]class Solution {public: vector<vector<int>> ans; void trackback
2022-03-28 10:08:23 964
原创 DLPack构建跨框架深度学习编译器-实现张量之间的相互转换【pytorch】
文章目录1 概述2 pytorch使用torch.utils.dlpack实现DLPack与张量之间的相互转换2.1 将DLPack解码为张量。2.2 将张量转换为DLPack3 在 PyTorch 示例的底层1 概述诸如 Tensorflow、PyTorch 和 Apache MxNet 等深度学习框架为深度学习的快速原型设计和模型部署提供了强大的工具箱。不幸的是,它们的易用性通常以碎片化为代价:这仅限于单独使用每个框架。垂直整合使得开发流程适用于常见用例,但打破常规可能会非常棘手。一种支持不足的情
2022-03-25 11:07:40 537
原创 零基础基于U-Net网络实战眼底图像血管提取
文章目录1 前言2 血管提取任务概述3 U-Net架构简介4 眼底图像血管分割代码5 结果评估可视化(ROC曲线)6 改进U-Net网络完成眼底图像血管提取任务思路1 前言本文基于U-Net架构完成了视网膜血管的提取任务,基于Keras框架更简单的实现分割,网络、工具类、训练和预测的代码一目了然
2022-03-22 15:54:39 4762
原创 CVPR 2021|DS-TransUNet:Transformer医学图像分割,表现SOTA
论文标题:DS-TransUNet: Dual Swin Transformer U-Net for Medical Image Segmentation论文地址:https://arxiv.org/pdf/2106.06716.pdf文章目录1 前言 1.1 Transformer 1.2 Swin Transformer结构2 Hierarchical Feature Representation3 局部dependency4 DS-TransUNet:医学图.
2022-03-22 15:53:59 6410
原创 PyTorch中的Element-wise operations
1. What does element-wise mean?逐个元素操作是两个tensor之间的操作,该操作在相应tensor内的对应元素上进行,t1和t2中的1和9就是tensor中的对应元素。加法是按element-wise进行的运算,实际上,所有算术运算(加,减,乘和除)都是按逐个元素进行的运算。标量值是Rank-0张量,而我们的tensor t1是2 x 2形状的rank-2 tensor。不同形状的tensor进行操作时需要引入broadcast概念。2. Broadcasting
2022-03-17 16:41:38 2298
原创 一种安全的static变量Get/Set方式
目的:避免static变量是个文件内可见的全局变量Get:std::atomic<bool>* GetGraphVerboseStepLr() { static std::atomic<bool> graph_verbose_step_lr{false}; return &graph_verbose_step_lr;}Set:void SetGraphVerboseStepLr(bool verbose) { auto* graph_verbose_s
2022-03-14 10:43:48 1254
原创 C++中的sta::atomic<bool>和auto类型
文章目录sta::atomicauto类型用法总结sta::atomic最基本的原子整数类型是std::atomic(可以使用预定义的别名std::atomic_bool),这是一个比std::atomic_flag功能更全的布尔标志,并且可以使用非原子的bool来赋值和初始化。std::atomic<bool> b(true);b=false;要注意的是,原子类型赋值操作返回值而非引用。与std::atomic_flag使用clear不同,std::atomic写(存储)操作是
2022-03-12 22:31:56 9094
原创 GCC中的分支预测(likely和unlikey)
文章目录概述场景总结概述开发人员在开发服务的过程中,可以根据业务逻辑的特性来判断当前的条件语句被执行的概率情况,经常被执行到的代码片段可以紧邻顺序执行的代码片段后边,偶尔被执行到的条件代码片段被放到其他代码片段,从而减少代码在顺序执行过程中的代码上下文的跳转次数,达到提高程序执行效率的目的。这种方式的优化,需要严重的依赖于业务逻辑所处的环境,对于GCC等编译器来将,显然是无法根据业务逻辑自动做出性能优化的,最直接的一种方法就是:由开发人员告诉编译器,这部分代码片段被执行的概率比较高,可以进行优化。为此,
2022-03-11 16:51:27 698
原创 Python中的Optional和带默认值的参数
文章目录带默认值的参数Typing.Optional类Optional[X]等价于Union[X, None]带默认值的参数在Python中的类或者函数中,若参数在声明时附带了它的默认值,则在实例化或调用时,可以选择性地为该参数赋值,例如:#默认值参数def foo_v1(a: int, b: int = 1): print(a + b)#未给b传入实参时,采用默认值 foo_v1(2)# 输出# >>> 3【 注意: 规定默认值时,不一定要声明变量所
2022-03-10 14:11:53 2008
原创 解释上采样和PixelShuffle
文章目录前言Vision LayerPixelShuffleDemo前言上采样:可以简单的理解为任何可以让你的图像变成更高分辨率的技术。最简单的方式是重采样和插值:将输入图片input image进行rescale到一个想要的尺寸,而且计算每个点的像素点,使用如双线性插值bilinear等插值方法对其余点进行插值。Deconvolution(反卷积)在CNN中常用于表示一种反向卷积 ,但它并不是一个完全符合数学规定的反卷积操作。反卷积也被称为分数步长卷积(convolution with frac
2022-03-02 16:46:16 2453
原创 细分tf.multiply()、tf.matmul()、tf.scalar_mul()函数
tf.multiply()释义:将两个矩阵中对应元素各自相乘示例:import tensorflow as tfX = tf.constant([[1, 2, 3], [4, 5 ,6]], dtype=tf.float32, name=None)Y = tf.constant([[1, 1, 1], [2, 2 ,2]], dtype=tf.float32, name=None)Z = tf.multiply(X, Y) # 乘法操作,对应位置元素相乘with tf.Se.
2022-02-28 17:53:05 389
原创 Python中的语法糖:__call__()方法
Python 类中一个非常特殊的实例方法,即 call()。该方法的功能类似于在类中重载 () 运算符,使得类实例对象可以像调用普通函数那样,以“对象名()”的形式使用。class CLanguage: # 定义__call__方法 def __call__(self,name,add): print("调用__call__()方法",name,add)clangs = CLanguage()clangs("C语言中文网","http://c.biancheng.ne
2022-02-24 11:38:01 327
原创 CUDA编程快速入门教程
准备如果你是第一次使用CUDA,在Linux下可以使用下面的命令来检查CUDA编译器是否安装正确:$ which nvcc一般,该指令输出为:/usr/local/cuda/bin/nvcc另外,你可能还需要检查下你机器上的GPU型号,可以使用给下面的命令查询:$ ls -l /dev/nv*可能的输出为:crw-rw-rw- 1 root root 195, 0 Jul 3 13:44 /dev/nvidia0crw-rw-rw- 1 root root 195, 1 Jul 3
2022-02-23 11:18:21 2098
原创 tmux远程服务器训练
平时使用远程(例如MobaXterm)控制服务器进行网络训练时,很容易因为本地网络中断而影响到服务器训练进程,最近发现一个神器-Tmux,即使远程控制时断网了,也可以继续在服务器后台进行网络训练,丝毫不干扰。1、tmux安装:在远程的服务器上使用命令apt-get install tmux安装好tmux;2、在远程服务器中断输入tmux,即可进入tmux界面,在该界面输入你需要运行的程序,即可挂载在后台进行运行;3、当你再次登录服务器想要查看运行进程时,使用tmux a即可看到进程,使用tmux ls
2022-02-22 09:59:30 1124
原创 零基础实战迁移学习VGG16解决图像分类问题
个人简介:李响Superb,CSDN百万访问量博主,普普通通男大学生,目前在读软件工程,计算机视觉、深度学习和医学图像处理专攻,偶尔也搞迁移学习和全栈开发。博客地址:lixiang.blog.csdn.net文章目录1 前言2 Transfer Learning3 How to transfer?4 代码实战:基于迁移学习对猫狗图片进行辨识5 参考1 前言本文涉及到的代码均已开源,读者可自行下载学习,实践大于理论!什么是迁移学习?简单的理解就是使用一些已经训练好的模型迁移到类似的新的问题进行使用,
2022-02-16 18:11:58 1471
原创 C++ 接口(抽象类)的概念
文章目录概述设计策略概述接口描述了类的行为和功能,而不需要完成类的特定实现。C++ 接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念。如果类中至少有一个函数被声明为纯虚函数,则这个类就是抽象类。纯虚函数是通过在声明中使用 “= 0” 来指定的,如下所示:class Box{ public: // 纯虚函数 virtual double getVolume() = 0; private: doubl
2022-02-14 11:22:38 1505
原创 Python的嵌套函数使用和闭包
文章目录封装 - 数据隐藏贯彻 DRY 原则深入浅出python闭包嵌套函数(Nested function)是在另一个函数(即:封闭函数)中定义的函数。那么,一般在什么情况下使用嵌套函数?封装 - 数据隐藏贯彻 DRY 原则闭包除此之外,嵌套函数还有其他用法,只不过这些是比较常用的。另外,闭包的内容较为丰富,后面做单独分享。封装 - 数据隐藏可以使用内层函数来保护它们不受函数外部变化的影响,也就是说把它们从全局作用域隐藏起来。来看一个简单的例子 - 求一个数字 n 的倍数:>
2022-02-14 10:59:20 780
原创 【OpenCV的C++教程3】掩膜操作的细节
1 像素值像素值是图像被数字化时由计算机赋予的值,代表了图像中某一小方块(即**【像素点】**)的平均亮度信息。灰度图像通常用8位表示一个像素,这样总共有256个灰度等级(像素值在0~255之间)。1.1 分辨率分辨率可分为显示分辨率和图像分辨率。显示分辨率:又称屏幕分辨率,是指显示器所能显示的像素点的个数。即每行的像素点数每列的像素点数,例如:1024768。图像分辨率:即单位英寸中所包含的像素点数,其定义更趋近于分辨率本身的定义。可以简单理解为每个像素点的大小。1.2 FOVFOV是
2022-01-19 18:15:50 3848
原创 【OpenCV的C++教程2】加载、修改、保存图像
颜色空间颜色空间:也称彩色模型(又称彩色空间或彩色系统)。本质上,彩色模型是坐标系统和子空间的阐述。位于系统的每种颜色都有单个点表示。RGB(红绿蓝)是依据人眼识别的颜色定义出的空间,可表示大部分颜色。但在科学研究中一般不采用RGB颜色空间,因为它的细节难以进行数字化的调整。它将色调,亮度,饱和度三个量放在一起表示,很难分开加载图像cv::imread功能是加载图像文件成为一个Mat对象。cv::imread有两个参数:第一个参数表示图像文件名称。第二个参数表示加载的图像是什么类型,支持常见的三
2022-01-18 19:44:50 3174
原创 【OpenCV环境配置】Xcode+OpenCV+pkg-config
由于笔者使用的是Mac,因此就Mac系统的OpenCV环境进行配置,使用的编辑器是Xcode,网上的教程老旧,且资料不是很完善,因此笔者在此记录下环境配置过程准备工作1.安装Xcode在App Store中安装Xcode(具体不再赘述),目前版本为12.5,安装大小为11.7G,安装时间较长,具体取决于互联网速度与设备运行速度。2.安装HomebrewHomebrew是Mac上的包管理工具,功能强大具体以后专门写篇博客讲解。 如果你没有安装Homebrew,可以复制以下代码,在终端中执行安装。/
2022-01-18 16:37:54 2836
原创 VScode+SSH Remote多级连跳配置
配置实例如下:Host 192.168.1.22 HostName 192.168.1.22 IdentityFile /Users/lixiang/Desktop/lixiang/id_rsa ProxyJump lixiang@第二个跳板机ip和端口 User lixiangHost 192.168.1.41 HostName 第一个跳板机ip IdentityFile /Users/lixiang/Desktop/lixiang/id_rsa ProxyJump li
2022-01-09 15:33:50 1274
原创 C++条件编译:#ifdef
本文主要介绍c++中条件编译相关的预编译指令,包括 #define、#undef、#ifdef、#ifndef、#if、#elif、#else、#endif、defined。#define 定义一个预处理宏#undef 取消宏的定义#if 编译预处理中的条件命令,相当于C语法中的if语句#ifdef 判断某个宏是否被定义,若已定义,执行随后的语句#ifndef 与#if
2021-12-31 09:05:00 6453
Git工具64位windows.zip
2020-02-08
2019仓库管理系统课设.rar
2019-12-30
DeskTopShare.rar
2019-10-28
c选手-竞赛环境须知.doc
2019-10-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人