- 博客(134)
- 收藏
- 关注
原创 目标检测标注文件xml,json,txt相互转换
前言在目标检测中我们可能会碰到很多种不同格式的标注文件,比如xml,txt,json等格式文件。这个时候就会涉及到不同格式之间的数据进行转换。笔者自己最近也在搞这些相关的数据处理,整理总结了一下。json转xml用labelme可以直接标注成json格式文件,是coco数据集的标注格式。针对每个json格式文件,读取标注信息,然后根据每张图片生成对应的xml格式文件。import osimport numpy as npimport codecsimport jsonfrom glob im
2021-05-12 16:22:06 2324 1
原创 Python模块之threading
前言我们在日常开发中,不可避免要处理并发的情况。常用并发手段有多进程和多线程。这篇文章主要讲多线程,后面会专门出一篇多进程的文章。线程线程(Thread)也叫轻量级进程,是程序执行流的最小单元。它被包涵在进程之中,是进程中的一个实体,是被系统独立调度和分派的基本单位。线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。在Python3中引入了threading模块,
2021-04-26 21:50:29 460 3
翻译 【论文解读】一文看懂EfficientnetB0~B7模型所有细节
作者 | Vardan Agarwal译者 | 柚子论文原文:https://arxiv.org/abs/1905.11946官方源码:https://github.com/tensorflow/tpu/tree/master/models/official/efficientnetpytorch实现:https://github.com/lukemelas/EfficientNet-PyTorch前言本文可视化了EfficientnetB0~B7模型的所有结构,让你轻松拿捏Effi..
2021-04-21 15:43:07 6776 1
原创 Python模块之pyyaml
简介YAML(“Yet Another Markup Language”)是一种标记性语言,可读性高,用来表达数据序列化的格式。使用缩进表示层级关系,用来写项目配置文件,非常简洁和强大。安装pip install pyyaml基本语法规则大小写敏感使用缩进表示层级关系缩进不允许使用tab,只允许空格'#'表示注释缩进的空格数目不重要,只要相同层级的元素左侧对齐即可数据类型对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary),
2021-04-17 19:03:11 292 1
原创 手把手教你使用yolov5训练自己的数据集并用TensorRT加速
硬件配置ubuntu 18.04 64bitnvidia gtx 2080Ticuda 11.0torch 1.7yolov5环境配置pip install requirements(???手动狗头)我用的是nvidia官方的镜像,下载下来直接就可以用。不想装环境的戳这里训练COCO我们下载的预训练模型就是使用coco数据集训练出来的模型。下载COCO,运行下面的命令。YOLOv5s/m/l/x的训练时间在单台V100上是2/4/6/8天(多GPU时间更快)。使用你的GPU允许的最大
2020-12-19 16:22:27 5873 5
转载 python 读取与修改 XML(增删改查)
昨天跑yolo时候要改xml文件,本来想通过lableimg修改标签,但是无奈数据太多,专而想下个脚本修改,于是找到这篇博客,转载自:https://blog.csdn.net/wsp_1138886114/article/details/86576900。方便以后快速查找。xml 访问与查找import xml.etree.ElementTree as ETtree = ET.parse('students.xml')root = tree.getroot() # 使用getroot()获取根
2020-12-19 11:19:54 514 1
转载 Python中的 logging模块
本文转载自:https://maoli.blog.csdn.net/article/details/105339448非常清晰易懂,转过来方便自己查找。logging模块是Python内置的标准模块,主要用于输出脚本运行日志,可以设置输出日志的等级、日志保存路径等。日志日志是一种可以追踪某些软件运行时所发生事件的方法。软件开发人员可以向他们的代码中调用日志记录相关的方法来表明发生了某些事情。一个事件可以用一个可包含可选变量数据的消息来描述。此外,事件也有重要性的概念,这个重要性也可以被称为严重性级
2020-12-11 17:39:45 123
翻译 TensorRT开发者手册(3)使用TensorRT的PythonAPI
注意:原文中所有超链接均已更新,部分链接可能需要科学上网才能访问。部分单词我觉得翻译成中文总是缺少点意思,所以直接保留!由于本人实力有限,有错误之处希望指明,谢谢。–2020/11/25Chapter 3. Using The Python API下面的部分突出NVIDIA®TensorRT™用户目标和任务,您可以使用Python API执行这些目标和任务。这些部分集中在使用Python API。 更多细节在Samples Support Guide。假设你从一个已经训练好的模型开始。 本章将涵盖使
2020-11-25 15:35:38 1123
原创 Docker容器数据卷
是什么先来看看Docker的理念:将运用与运行的环境打包形成容器运行 ,运行可以伴随着容器,但是我们对数据的要求希望是持久化的容器之间希望有可能共享数据Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据做为镜像的一部分保存下来,那么当容器删除后,数据自然也就没有了。为了能保存数据在docker中我们使用卷。能干嘛容器的持久化容器间继承+共享数据数据卷容器内添加1.直接命令添加a.命令: docker run -it -v /宿主机绝对路径目录
2020-11-22 15:18:13 228
原创 Docker镜像解析
是什么1.UnionFS(联合文件系统)Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)。Union 文件系统是 Docker 镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。特性:一次同时加载多个文件系统,但从外面
2020-11-22 14:52:21 347
原创 Docker本地镜像发布到阿里云
本地镜像发布到阿里云流程镜像的生成方法1.前面的DockerFile2.从容器创建一个新的镜像 docker commit [OPTIONS] 容器ID [REPOSITORY[:TAG]]OPTIONS说明:-a :提交的镜像作者;-m :提交时的说明文字;将本地镜像推送到阿里云1.本地镜像素材原型2.阿里云开发者平台 :https://dev.aliyun.com/search.html3.创建仓库镜像4.将镜像推送到registry5.公有云可以查询到6.查看
2020-11-22 14:42:13 174
原创 Docker常用命令
1 帮助命令docker versiondocker infodocker --help2 镜像命令(1)docker images :列出本地主机上的镜像OPTIONS说明:-a :列出本地所有的镜像(含中间映像层)-q :只显示镜像ID。–digests :显示镜像的摘要信息–no-trunc :显示完整的镜像信息各个选项说明:REPOSITORY:表示镜像的仓库源TAG:镜像的标签IMAGE ID:镜像IDCREATED:镜像创建时间SIZE:镜像大小PS:
2020-11-22 14:31:53 135
原创 DockerFile最全解析
1.Dockerfile是什么Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。构建三步骤:编写Dockerfile文件->docker build->docker runDockerfile文件:以我们熟悉的CentOS为例 (https://hub.docker.com/_/centos/)2.DockerFile构建过程解析Dockerfile内容基础知识1:每条保留字指令都必须为大写字母且后面要跟随至少一个参数2:指令按照从上到下
2020-11-21 14:44:23 1298
原创 cmake入门资料推荐及常用命令
最近要用到c++,个人觉得学c++肯定要学cmake的,所以开始学习cmake。找到一些入门资料和相关的命令总结。分享出来。手把手教你写CMake一条龙教程:这个是下面的博客的配到讲解,看不懂博客可以先看这个。CMake 入门实战:首先看这个,入门简介,清晰易懂。CMake官方教程— CMake 3.17.0-rc1文档cmake使用示例与整理总结:这个是cmake常用的命令说明,可以当作快速查找工具。CMake命令/函数汇总(翻译自官方手册):官方的cmake命令翻译文档,不想看英文的官方教程可
2020-11-19 17:50:05 272
转载 编写 Shell 脚本的最佳实践
作者:Myths,觉得写的很好,就转了过来。原文地址:http://kb.cnblogs.com/page/574767/由于工作需要,最近重新开始拾掇 shell 脚本。虽然绝大部分命令自己平时也经常使用,但是在写成脚本的时候总觉得写的很难看。而且当我在看其他人写的脚本的时候,总觉得难以阅读。毕竟 shell 脚本这个东西不算是正经的编程语言,他更像是一个工具,用来杂糅不同的程序供我们调用。因此很多人在写的时候也是想到哪里写到哪里,基本上都像是一段超长的 main 函数,不忍直视。同时,由于历史原因,
2020-11-09 19:28:41 199
原创 Shell编程从入门到入土
1.为什么要学习 Shell 编程1)Linux 运维工程师在进行服务器集群管理时,需要编写 Shell 程序来进行服务器管理。2)对于 JavaEE 和 Python 程序员来说,工作的需要,你的老大会要求你编写一些 Shell 脚本进行程序或者是服务器的维护,比如编写一个定时备份数据库的脚本。3)对于大数据程序员来说,需要编写 Shell 程序来管理集群。2.Shell 是什么Shell 是一个命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序的界面系统级程序,用户可以
2020-11-01 17:30:32 429
原创 神经网络中的激活函数
1.什么是激活函数?激活函数(Activation functions)对于人工神经网络模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。它们将非线性特性引入到我们的网络中。如在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数。引入激活函数是为了增加神经网络模型的非线性。没有激活函数的每层都相当于矩阵相乘。就算你叠加了若干层之后,无非还是个矩阵相乘罢了。2.为什么需要激活函数?激活函数还有助于我们根据要求将神经元的输出值限定在一定的范围内。这一点
2020-05-14 11:44:37 1737
转载 Python __init__.py 文件使用
注:因为有需要,所以转载此文章。文末附有出处。init.py的主要作用是:Python中package的标识,不能删除定义__all__用来模糊导入编写Python代码(不建议在__init__中写python模块,可以在包中在创建另外的模块来写,尽量保证__init__.py简单)init.py 文件的作用是将文件夹变为一个Python模块,Python 中的每个模块的包中,都有__init__.py 文件。通常__init__.py 文件为空,但是我们还可以为它增加其他的功能
2020-05-13 14:35:24 573
原创 卷积神经网络参数量和计算量的计算
注意:本文先区分两个概念,再介绍stride = 1情况下CNN卷积的计算参数和计算量。文末会附上不同stride的计算CNN参数量和计算量和使用API自动计算CNN参数量和计算量的博客。先区分两个概念:FLOPS 注意全部大写 是floating point of per second的缩写,意指每秒浮点运算次数。用来衡量硬件的性能。FLOPs 是floating point of operations的缩写,是浮点运算次数,可以用来衡量算法/模型复杂度。注意:以下得计算均默认stride = 1
2020-05-13 11:43:45 13243 5
原创 剑指offer-平衡二叉树(python和c++)
题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树思路:最直接的做法,遍历每个结点,借助一个获取树深度的递归函数,根据该结点的左右子树高度差判断是否平衡,然后递归地对左右子树进行判断。# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None#
2020-05-13 09:45:15 256
原创 剑指offer-顺时针打印矩阵(python和c++)
题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.思路来自首先拿到这个题,读完题我们脑子里会呈现出这样的一个画面。从外圈到内圈顺序的依次打印,我们就可以把矩阵想象成若干个圈,如上图所示,我们可以用一个循环来打印矩阵,每一次打印矩阵中的一个圈。那么循环结束的条件是什么?假设这个
2020-05-12 15:29:54 170
原创 目标检测常用数据集介绍
以下介绍来自于github工程整理:DeepLearning-500-questionsPASCAL VOC数据集VOC数据集深入介绍VOC数据集是目标检测经常用的一个数据集,自2005年起每年举办一次比赛,最开始只有4类,到2007年扩充为20个类,共有两个常用的版本:2007和2012。学术界常用5k的train/val 2007和16k的train/val 2012作为训练集,test 2007作为测试集,用10k的train/val 2007+test 2007和16k的train/val
2020-05-10 22:00:15 1970
原创 剑指offer-复杂链表的复制(python和c++)
题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)思路:python# -*- coding:utf-8 -*-# class RandomListNode:# def __init__...
2020-05-06 23:39:43 108
原创 剑指offer-二叉树中和为某一值的路径(python和c++)
题目描述输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。思路:1.先判断根节点的值是否为我们要找的值,是的话直接返回根节点的值。2.根节点不是expectNumber,递归左右子树,其中的expectNumber应该为减去根节点值之后的目标值。注意在最后返回的时候添加上根节点的值就行了。边...
2020-05-06 23:14:47 149
原创 python中的sum()函数
Python sum() 函数描述sum() 方法对系列进行求和计算。用法sum(iterable[, start])参数iterable – 可迭代对象,如:列表、元组、集合。start – 指定相加的参数,如果没有设置这个值,默认为0。>>>sum([0,1,2]) 3 >>> sum((2, 3, 4), 1) ...
2020-05-06 20:58:43 580
原创 python中列表推导式和生成器的比较
列表推导式优点:如果生成列表的方式不太复杂,这是建议使用列表推导式,其内部是通过cpython来实现的比较用for循环要快;列表推导式可以遍历任意次。缺点:一次性加载所有的数据到内存,不适合大量数据。生成器生成器可以使用yield关键字编写也可以使用生成器表达式即把[]改成(),不会将所有的值一次性加载到内存中,延迟计算,一次返回一个结果,它不会一次生成所有的结果,这对大数据量处理,非常有...
2020-05-06 15:47:19 1263
原创 Pandas 中map, applymap and apply的区别
先给结论:(1)map、apply在用于Series时,对每一个值进行处理,两者并没有什么区别。(是否受数据量影响可以自行验证)(2)apply不仅可以用于Series,还可以用于DataFrame;而map只能用于Series。(3)一般情况下,apply应用更广泛,尤其是自定义函数带多个参数时,建议使用apply。(4)applymap()是一种让函数作用DataFrame每一个元素的...
2020-05-06 10:32:59 167
原创 剑指offer-二叉树的深度(python和c++)
题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。思路:层次遍历,直接遍历每一层,左右节点不为空d就加1。python# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# ...
2020-05-06 09:57:33 94
原创 剑指offer-机器人的运动范围(python和c++)
题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?思路:将地图全部置1,遍历能够到达的点,将遍...
2020-04-30 14:43:54 108
原创 剑指offer-剪绳子(python和c++)
题目描述给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],…,k[m]。请问k[0]xk[1]x…xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。输入描述:输入一个数n,意义见题面。(2 <= n <= 60)输出...
2020-04-30 14:24:12 104
原创 剑指offer-滑动窗口的最大值(python和c++)
题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5...
2020-04-28 10:35:37 110
原创 剑指offer-数据流中的中位数(python和c++)
题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。拒绝一切花里胡哨,python真香,哈哈哈。直接上代码,c的有兴趣可以看下。python# -*- c...
2020-04-27 15:01:14 121
原创 剑指offer-二叉搜索树的第k个结点(python和c++)
题目描述给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。思路:二叉搜索树按照中序遍历的顺序打印出来正好就是排序好的顺序。所以,按照中序遍历顺序找到第k个结点就是结果。python# -*- coding:utf-8 -*-# class TreeNode:# def __init__(se...
2020-04-27 14:55:53 159
原创 剑指offer-序列化二叉树(python和c++)
题目描述请实现两个函数,分别用来序列化和反序列化二叉树二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(value!)。二叉树的反序列化是指:根据某种遍历顺序得到...
2020-04-27 14:45:46 104
原创 剑指offer-把二叉树打印成多行(python和c++)
题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。思路:每一次维护两个列表,循环一层先把该层的根节点添加进一个列表,再判断该层节点的左右子节点是否存在,存在就把left和right的节点的都添加进去,依次遍历添加进最后的res。python# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self...
2020-04-27 14:28:36 149
原创 剑指offer-对称的二叉树(python和c++)
题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。思路:首先根节点以及其左右子树,左子树的左子树和右子树的右子树相同左子树的右子树和右子树的左子树相同即可,采用递归非递归也可,采用栈或队列存取各级子树根节点python# -*- coding:utf-8 -*-# class TreeNode:# de...
2020-04-26 10:40:46 85
原创 剑指offer-二叉树的下一个结点(python和c++)
题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路(来自牛客大神回答):首先知道中序遍历的规则是:左根右,然后作图结合图,我们可发现分成两大类:1、有右子树的,那么下个结点就是右子树最左边的点;(eg:D,B,E,A,C,G) 2、没有右子树的,也可以分成两类,a)是父节点左孩子(eg:N,I,...
2020-04-26 10:30:12 153
原创 剑指offer-删除链表中重复的结点(python和c++)
题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5非递归的代码思路:首先添加一个头节点,以方便碰到第一个,第二个节点就相同的情况2.设置 pre ,last 指针, pre指针指向当前确定不重复的那个节点,而l...
2020-04-26 10:09:15 102
原创 剑指offer-链表中环的入口结点(python和c++)
题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。思路来自牛客大佬的笔记,讲的十分清楚。思路:设置快慢指针,都从链表头出发,快指针每次走两步,慢指针一次走一步,假如有环,一定相遇于环中某点(结论1)。接着让两个指针分别从相遇点和链表头出发,两者都改为每次走一步,最终相遇于环入口(结论2)。以下是两个结论证明:两个结论:1、设置快慢指针,假如有环,他们最后...
2020-04-24 14:06:54 134
原创 剑指offer-不用加减乘除做加法(python和c++)
题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。思路:/*首先看十进制是如何做的: 5+7=12,三步走第一步:相加各位的值,不算进位,得到2。第二步:计算进位值,得到10. 如果这一步的进位值为0,那么第一步得到的值就是最终结果。第三步:重复上述两步,只是相加的值变成上述两步的得到的结果2和10,得到12。同样我们可以用三步走的方式计算二进制...
2020-04-23 10:18:34 115
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人