- 博客(77)
- 收藏
- 关注
原创 使用Dataloader对数据进行预测 os.listdir()方式排序出现问题1,10,100,1000.
Daterloader读取Test数据集进行输出语义分割结果顺序不匹配最近训练几个语义分割模型进行结果对比,Test数据集0-18000.png格式命名的,可是最终输出的结果感觉不对劲。shuffle已经设置为False了,卡了我一阵原因读取文件名称的时候使用import ospath = r'd:/test'dirs = os.listdir(path)上述代码输出的时候会自动排序,结果如下所示:1,10,100,1000,10000,10001,10002,10003,10004,1
2022-03-06 19:20:35 720
原创 深度学习避坑提示:RuntimeError: Error(s) in loading state_dict for Model: Missing key(s) in state_dict
RuntimeError: Error(s) in loading state_dict for Model: Missing key(s) in state_dict
2022-02-19 18:29:58 10439 6
原创 深度学习笔记-实验过程/代码结构
代码结构dataset.py从文件夹中读取数据按照文件尺寸大小进行中心裁剪【FCN中的思路】标签编码numpy转tensor实例化数据类train.py读取数据加载模型配置相关参数训练并输出结果(指标计算)验证并输出结果(指标计算)保存最好的权重test.py读取数据加载已经保存的最好权重测试并输出结果(指标计算)predict.py读取数据加载已保存的最好权重得到预测图并上色输出彩色预测图片...
2022-01-15 16:38:37 708
原创 深度学习笔记-经典分割算法总结&后续论文思路
经典分割算法汇总(6篇经典语义分割网络,非实时性)FCN:语义分割端到端的开端U-Net&FushionNet:医学分割算法中的龙头SegNet&DeconvNet:对称编解码结构DeepLab系列:从v1到v3+,算法越来越完善,结果越来越好GCN:角度一,重用大卷积核ExFuse&DFN:角度二,宏观角度看待语义分割接下来进度与调优思路以Unet为基础,在自建数据集上跑出Baseline分数对比DeeplabV3+,查看分数提升多少以二分类任务为主,参考
2022-01-11 10:15:22 1771
原创 深度学习笔记-快速查看torchvision中的模型架构
在模型创建的时候,经常需要对模型进行修改,修改的时候需要查看模型架构。下面使用终端中调用IPython的方法对torchvision中的模型架构进行展示查询代码:首先ipython激活ipythonfrom torchvision import modelsprint(models.resnet152())注意:resnet152后面要加()...
2021-12-30 21:03:27 1975
原创 深度学习笔记-GCN+卷积方式汇总
卷积方式汇总 convolution summaryGCN论文总结 Global Convolution Network
2021-12-30 12:02:15 2606
原创 深度学习笔记-ResNet、Inception和Xception
ResNet(加深)resnet抛开数学层面的损失函数修改,从网络结构方面进行优化,通过残差块的方式,保证在更深的网络中也能保证良好的网络性能(VGG时代网络层数的过度加深会导致网络性能退化)Inception(加宽)除了网络深度问题,我们怎样在不增加计算成本的前提下扩展神经网络?Inception网络通过在每层模型中设置不同大小的卷积核,并用1*1卷积进行降维,让下一层自行决定使用什么卷积中的特征。Xception(将通道上的关系和空间关系分离进行识别)Xception的假设是:「跨通道的相
2021-12-22 15:00:26 1266
原创 常用tf语句
###############################################################################环境的安装:尽量从清华或者豆瓣源进行安装pip install tensorflow-gpu==2.3.0 -i https://pypi.douban.com/simple/###############################################################################import
2021-11-30 10:13:32 1018
原创 深度学习-skimage.transform报错的玄学问题
背景:将实验室工作站环境复制进公司的linux机器中,中间出现报错。错误原因是shape问题,不能将(1,112,112)转为(1,3,112,112),应该是(3,112,112),所以这里shape变换出现问题错误分析:定位错误位置为skimage.transform下的rescale方法,代码如下:anch_im = rescale(io.imread(args.anchor_face)/255.,112./600.,order=5)错误定位之后开始排除,首先认为是skimage的版本问题
2021-10-15 14:51:00 835
原创 【论文笔记】CS会议论文书写注意点
知乎收藏01讲titletitle 需要兼顾有趣与相关性,提升读者的阅读兴趣的同时紧扣主题abstractIntroduction主要讲Motivation(动机)是啥,解决的问题是什么/现在主流方法限制在哪/我的contribution贡献在哪(其中contribution需要尽早提出,来增强读者记忆)Relative & Background目的:介绍basic background,尤其是讲清楚文章所涉及领域之间的关系详细讲与前人的work的区别(展开讲,但不要太过
2021-07-05 16:24:29 352
原创 深度学习笔记-FCN-指标计算
混淆矩阵(巧妙的将真实值与预测值对应起来)六分类问题:如下L:label标签P:预测像素类别n×L+P:类别数×标签值+预测值行0-5对应预测标签列0-5对应真实标签得到的结果对应表示为:真实为0,预测为0的像素点有1个;真实为1,预测为1的像素点有2个;真实为2,预测为1的像素点有1个。。。依此类推。对角线上的元素是预测正确的,对角线上的元素求和就是整个图片分类正确的像素个数PA = 对角线上元素和(标记正确像素)/ 总和...
2021-06-25 11:18:16 533
原创 深度学习笔记-语义分割FCN-损失函数
损失函数KL散度越小,表示:标签和预测值越接近SoftmaxOne-hot独热编码总类列表中,将对应索引位置的值置为1,其他都为0的一种编码形式
2021-06-24 15:08:54 979
原创 深度学习笔记 - FCN全卷积神经网络
感受域感受野的计算公式:RFl+1 = RFl + (kernel_size -1) × stridelayer1的感受野:RF1 = 1layer2的感受野:RF2 = 1+(3-1)×1 = 3layer3的感受野:RF2 = 3+(3-1)×1 = 5感受野越大,分割时获取的全局信息越多,分割越准确。存在的问题在全卷积神经网络中感受域问题存在????和熊掌不可兼得的问题:增大stride能够获得更大的感受野,但同时会丢失图像中的信息。解决方法deeplab系列提出了空洞卷积的方
2021-06-17 19:25:04 602 5
原创 Jupyter notebook 删除指定的kernel
因为环境变化,之前添加的kernel进不去了,但是还在kernel列表中。现在将不需要的kernel删除处理。查看现存的kerneljupyter kernelspec list删除指定的kerneljupyter kernelspec remove foolbox删除成功,查看kernel列表确认jupyter kernelspec list...
2021-06-01 22:33:43 647 1
原创 python-5000*5000子图分割遥感图像
对超大遥感图像进行分割,每张子图的大小为5000*5000像素from PIL import Image# 解决文件过大问题from PIL import ImageFileImageFile.LOAD_TRUNCATED_IMAGES = TrueImage.MAX_IMAGE_PIXELS = Noneimport sys#先将 input image 填充为正方形def fill_image(image): width, height = image.size #选取
2021-05-27 09:01:13 786
原创 python-对超大遥感图像进行裁剪
代码如下:from PIL import Image# 解决文件过大问题from PIL import ImageFileImageFile.LOAD_TRUNCATED_IMAGES = TrueImage.MAX_IMAGE_PIXELS = Noneimport sys#先将 input image 填充为正方形def fill_image(image): width, height = image.size #选取长和宽中较大值作为新图片的 new_imag
2021-05-27 00:21:26 1583 2
原创 对抗攻击笔记03:l0,l2,l∞范数
攻击成功率只能从一定程度表明对抗样本的质量,工程和科研中还需要使用更多的指标来量化对抗样本的质量,其中最常用的是扰动的l0和l2范数l0范数l0范数是指向量中非0的元素的个数,因此扰动的lo范数指的是扰动的非0的元素的个数。以图像数据为例,针对图像数据的扰动的l0范数指的就是修改的像素数据个数。扰动量可以表示为:#计算改变量deta=img[0]-img_adv[0]扰动的l0范数大小为:#计算绝对量_l0=len(np.where(np.abs(deta)>0.0)[0])l2
2021-05-25 14:24:09 5862 1
原创 对抗攻击笔记02:李宏毅对抗攻击视频课P3P4-how to attack
how to attack目标:找到一个x*使得与原x0的差距越小越好,同时还要让f(x)与原结果远离的越远越好方法:通过梯度下降方法,以x0为初始值不断迭代x生成新的x‘ ,同时如果x‘的变动大于我们设置的阈值的时候对x‘进行修正修正函数:fix(x‘)在规定区域中寻找与x’最接近的那个点作为修正后的x‘Attack ApproachesFGSM:原论文不迭代,一次攻击成功每个像素点在各个方向上取反,(一拳超人),最后获得的结果就是原图像的攻击结果,使用范数降改动后的x1拉回范数范围。
2021-05-25 11:06:16 213
原创 深度学习排错笔记-jupyter notebook切换到指定的anaconda虚拟环境中
之前一直用base环境中的tensorflow2.1,今天想要切换到tf1.13gpu下运行,虽然从anaconda中activate到指定的环境,但是jupyter notebook打开后一直找不到一个文件路径,明明在conda的env文件中是有的,找了好久才发现是环境出错,jupyter notebook还是在base环境中使用tf2.1,气傻了。解决方法在虚拟环境下创建kernel:(此步感觉非必须,我执行之后直接update了我的ipykernel)以我的环境名称tf1.13gpu为例con
2021-05-23 00:48:42 175 1
原创 对抗攻击笔记01:李宏毅对抗攻击视频课p2
正常training是要使得f(x)的值与真实值y—true越接近越好Non-targeted Attack是要使得f(x)的值与y—true越远越好Targeted Attack目标是要让f(x)与某一错误分类y—false越近越好在添加攻击噪声的同时要使得图像与原图越接近越好(肉眼不被发现)定义两张图片之间的差异使用l0范数,l2范数和l∞范数 来表示图像扰动的大小L0范数:表示非0元素的个数,对抗样本中表示扰动的非0元素的个数L2范数:表示各元素的平方和再开方,对抗样本中表示扰动..
2021-05-19 22:38:03 393 3
原创 LeetCode-Q99-恢复二叉搜索树
【原题链接】https://leetcode-cn.com/problems/recover-binary-search-tree/【题目】给你二叉搜索树的根节点 root ,该树中的两个节点被错误地交换。请在不改变其结构的情况下,恢复这棵树。【解题思路】利用BST的特点,对给出的错误二叉搜索树进行中序遍历,遍历完成后会出现两种情况:(1)两个位置不满足递增序列的要求:例如[1 6 3 4 5 2 7] (此时2与6交换)此时将ai与j+进行swap(2)一个位置不满足递增序列的要求:例如[1 3
2021-04-05 20:03:12 97
原创 LeetCode-Q98-验证二叉搜索树
【原题链接】https://leetcode-cn.com/problems/validate-binary-search-tree/【题目】给定一个二叉树,判断其是否是一个有效的二叉搜索树【二叉树特征如下:】节点的左子树只包含小于当前节点的数节点的右子树只包含大于当前节点的数所有左子树和右子树自身必须也是二叉搜索树【方法一:递归】算法:(1)定义函数boolean recurse(TreeNode node, int lower, int upper)(2)如果上界和下界存在,判断当前
2021-04-05 16:18:27 190
原创 LeetCode-Q105-从前序与中序遍历序列构造二叉树
【labuladong P26】【题目地址】https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/【解题思路】https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/solution/cong-qian-xu-yu-zhong-xu-bian-li-xu
2021-04-03 21:15:11 142
原创 LeetCode-Q124-二叉树中的最大路径和
题目链接如下:https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/【难度】hard【题目】给你一个二叉树的根节点root,返回其最大路径和解题代码如下: /*使用后序遍历,对子节点进行遍历获得最大值,然后递归获得最终结果 */class Solution { int maxRes = Integer.MIN_VALUE;//首先定义返回的最大值,先置为MIN_VALUE public int maxPat
2021-04-03 20:06:22 108
原创 算法笔记002——用一个栈实现另一个栈的排序
用一个栈实现另一个栈的排序思路:为了实现一个栈的从大到小的排序(栈顶到栈底),需要考虑一个事实,如果我们每次都往辅助栈中存放当前剩余的最大的值,最后直到当前栈空了,再把辅助栈转移回去就可以完成排序。【思路】利用help栈完成从上到下的顺序是从小到大,然后反压入原来栈就可以先弹出原来stack的栈顶元素,记为cur如果help为空,或cur小于help的栈顶元素(help.peek()),则将cur压入help否则,把help里面大于cur的栈顶元素pop出来,压入原来的stack,再往help里
2021-03-23 11:20:46 113
原创 算法笔记001——栈
参考书本《程序员代码面试指南》import java.util.Stack;/**设计一个getMin功能的栈【题目】实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。【要求】 1.pop、push、getMin操作的时间复杂度都是O(1) 2.设计的栈类型可以使用现成的栈结构。【难度】* **/public class Mystack1 { private Stack<Integer> stackData; priva
2021-03-22 16:45:58 125
原创 算法视频课笔记-初四1-转圈打印矩阵/Z字形打印矩阵/矩阵中寻找值/判断是否为回文列表
转圈打印矩阵【题目七】给定一个整型矩阵matrix,请按照转圈的方式打印它。例如:12345678910111213141516打印结果为:1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10【要求】额外空间复杂度为0(1)。【解题思路】定位左上角与右下角,每次循环最外层的一圈,打印完后左上角向右下移动一位,右下角向左上角移动一位继续下次循环直到越界时结束(row1>row2 || col1 >col2)public class code_e7_P
2021-03-13 23:04:06 186
原创 算法视频课笔记-初三2-哈希函数/Random Pool
哈希函数具有离散型,即每个桶对应装的货物量差不多在增删改查的时间复杂度都是O(1)的hashset和hashmap的使用区别HashMap<String, String> map = new HashMap<>();map.put("zuo","1");map.containsKey("zuo");map.get("zuo");HashSet<String> set = new HashSet<String>();set.add("zuo")
2021-03-13 15:59:06 128
原创 深度学习笔记-014-目标检测基础知识
目标检测任务及发展脉络图 像 处 理 三 大 任 务 : 物 体 识 别 、 目 标 检 测 、 图 像 分 割目标检测:给 定 一 张 图 像 , 判 断 图 像 中 是 否 存 在 指 定 类 别 的 目 标 , 若 存 在 , 则 输 出 目 标 位 置 、 类 别 及 置 信 度 。目标检测的任务:目 标 检 测 属 于 多 任 务 , 一 个 任 务 是 目 标 分 类 , 另 一 个 是 目 标 位 置 的 确 定 , 即 分 类 与 回 归目标检测发展历程如下图基于深层伸进网
2021-03-08 00:00:30 557
原创 算法视频课笔记-初三1-数组/队列/栈及其相互转换
【题目1】用数组结构实现大小固定的队列和栈队列:先进先出栈:先进后出【使用固定数组实现栈的功能】public static class ArrayStack{ private Integer[] arr; private Integer index; public ArrayStack(int initSize){ if(initSize < 0){ throw new IllegalArgumentException("The init size is less than 0
2021-03-07 16:33:34 86 1
原创 算法视频课笔记-初?-冒泡+插入排序
冒泡排序【时间复杂度】O(n^2)public static void bubbleSort(int[] arr){ if(arr.length < 2 || arr == null){ return; } for(int i = 0;i < arr.length -1;i++){ //外层循环控制排序次数 for(int j = 0; j< arr.length-1-i;j++){ //内层循环控制每一次排序次数 if(arr[j] > arr[j+1
2021-03-07 12:57:09 79 1
原创 算法视频课笔记-初三1-BucketSort及其延展
bucket sort 桶排序按照词频进行排序(计数排序)一般是0~200之内个数字进行排序public static void bucketSort(int[] arr){ if(arr = null || arr.length < 2){ return; } //获取数组中的最大值 int max = Integer.MIN_VALUE for (int i = 0; i < arr.length; i++){ max = Math.max(max, arr[i]);
2021-03-06 15:55:31 105
原创 LeetCode-Q2-两数相加
链接:https://leetcode-cn.com/problems/add-two-numbers/solution/liang-shu-xiang-jia-by-leetcode-solution/两数相加给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 1:输入:l1 = [2,4,3], l2 = [5,
2021-01-12 11:20:13 108
原创 LeetCode-Q38-外观数列
原题链接:https://leetcode-cn.com/problems/count-and-sayQ:给定一个正整数 n ,输出外观数列的第 n 项。「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。你可以将其视作是由递归公式定义的数字字符串序列:countAndSay(1) = “1”countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。前五项如下:1112112111
2021-01-09 12:45:54 94
原创 深度学习笔记-013 模型权重保存
保存模型参数state_dict就是一个简单的Python字典,它将模型中的可训练参数(比如weights和biases,batchnorm的running_mean、torch.optim参数等)通过将模型每层与层的参数张量之间一一映射,实现保存、更新、变化和再存储。首先定义模型的保存位置和文件名(以.pth结尾)再save模型权重到固定路径PATH = './my_net.pth'torch.save(model.state_dict(), PATH)加载所保存的模型权重需要初始化之前所
2021-01-08 21:34:10 2502 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人