def

【实战】Windows10+YOLOv3实现检测自己的数据集(1)——制作自己的数据集

拜拜、爱过 提交于 2020-12-29 07:23:23
本文将从以下三个方面介绍如何制作自己的数据集 数据标注 数据扩增 将数据转化为COCO的json格式 参考资料 一、数据标注 在深度学习的目标检测任务中,首先要使用训练集进行模型训练。训练的数据集好坏决定了任务的上限。下面介绍两种常用的图像目标检测标注工具: Labelme 和 LabelImg。 (1)Labelme Labelme适用于图像分割任务和目标检测任务的数据集制作,它来自该项目: https://github.com/wkentaro/labelme 。 按照项目中的教程安装完毕后,应用界面如下图所示 : 它能够提供多边形、矩形、圆形、直线和点的图像标注,并将结果保存为 JSON 文件。 (2)LabelImg LabelImg适用于目标检测任务的数据集制作。它来自该项目: https://github.com/tzutalin/labelImg 应用界面如下图所示: 它能够提供矩形的图像标注,并将结果保存为txt(YOLO)或xml(PascalVOC)格式。如果需要修改标签的类别内容,则在主目录data文件夹中的predefined_classes.txt文件中修改。 我使用的就是这一个标注软件,标注结果保存为xml格式,后续还需要进行标注格式的转换。 操作快捷键: Ctrl + u 加载目录中的所有图像,鼠标点击Open dir同功能 Ctrl + r

DRF序列化/反序列化

China☆狼群 提交于 2020-12-29 05:21:55
反序列化(不推荐版): 两个字段 一个为正序准备,一个为反序准备 重写create update方法 1 . 确定数据结构: 自己定义key book_obj = { " title " : " 语文sadasd " , " pub_time " : " 2018-11-14 " , " post_category " : 2 , " publisher_id " : 1 , " authors_list " : [1, 2 ] } 2 . 序列化器: 注意外键,多对多,多选需要反序列化,其余不用 正序和反序列化字段不统一: 1. 注意id 只序列化不走校验(required= False) id = serializers.IntegerField(required= False) 2 . 注意选择 # 正序用 category = serializers.CharField(source= " get_category_display " , read_only= True) # 只能反序用 新增分类 post_category = serializers.IntegerField(write_only= True) 3 . 注意外键 publisher = PublisherSerializer(read_only= True) publisher_id =

python with用法举例

风流意气都作罢 提交于 2020-12-29 03:22:59
我们知道在操作文件对象的时候可以这么写 with open('a.txt') as f:   '代码块' 上述叫做上下文管理协议,即with语句,为了让一个对象兼容with语句,必须在这个对象的类中声明__enter__和__exit__方法 使用举例 import shelve class ShelveUtil(object): """ 使用Shelve存储提取对象 """ def __init__ (self, file): self.file_name = file def save(self, key, value): """ 存储对象 :param key: :param value: :return: """ self.file_obj[key] = value def load(self, key): """ 获得对象 :param key: :return: """ return self.file_obj[key] def load_keys(self): """ 返回所有key :return: """ return list(self.file_obj.keys()) def del_obj(self, key): """ 删除object :return: """ del self.file_obj[key] def __enter__(self):

python+opencv图像处理(一)

杀马特。学长 韩版系。学妹 提交于 2020-12-29 01:58:25
一、什么是opencv?     Open Source Computer Vision Library.OpenCV于1999年由Intel建立,如今由Willow Garage提供支持。OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、MacOS操作系统上。它轻量级而且高效——由一系列 C 函数和少量C++类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。最新版本是3.1 ,2016年1月29日发布。(引自 百度百科openCV )   简言之,通过openCV可实现计算机图像、视频的编辑。广泛应用于图像识别、运动跟踪、机器视觉等领域。 二、安装   直接使用pip安装 pip install numpy Matplotlib #由于opencv依赖numpy pip install opencv-python #或者使用国内镜像 pip install opencv-python -i https://pypi.douban.com/simple  安装完成之后再命令行解释器输入: import cv2  若没有提示no module错误,则表示安装成功 测试脚本: import cv2 #导入模块,opencv的python模块叫cv2 imgobj =

Linux上天之路(十八)之自动化部署

你离开我真会死。 提交于 2020-12-28 08:06:09
pexpect Pexpect 是 Don Libes 的 Expect 语言的一个 Python 实现,是一个用来启动子程序,并使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的 Python 模块。 Pexpect 的使用范围很广,可以用来实现与 ssh、ftp 、telnet 等程序的自动交互;可以用来自动复制软件安装包并在不同机器自动安装;还可以用来实现软件测试中与命令行交互的自动化。 import pexpect import sys child = pexpect.spawn('ssh std20@123.57.211.212') child.logfile = sys.stdout #fout = file('mylog.txt', 'w') #child.logfile = fout child.expect('password:') child.sendline('std20') child.expect('std20.*') child.sendline('ls /') child.expect('std20.*') child.sendline('exit') #coding=utf_8 from pexpect import pxssh import sys s = pxssh.pxssh() s.logfile = sys.stdout

找出不在给定数组中的最小正整数

有些话、适合烂在心里 提交于 2020-12-28 02:58:24
在leetcode上看到这道题,许多同道给出了惊艳和炫酷的解答方法。 题目:给定一个数组nums,数组中元素均为整数,返回不在nums中的最小正整数    :type: nums -> list[int]    :rtype: i -> integer    :example: nums = [2,4,7,1,-3,0,5],返回3; nums = [3,2,4,5,6] 返回 1 线性时间复杂度的常规实现不难:返回值一定在闭区间[1,k+1]中,创建一个长度为k+1的数组,并全部初始化为0,然后读取原数组,将[1,k]区间内的值写入新数组。最后再返回新数组中第一个0元素的位置 加 1. 算法一(空间复杂度O(N)): 1 def findmissing(nums): 2 r = [0] * (len(nums) + 1 ) 3 for num in nums: 4 if 0 < num <= len(nums): 5 r[num - 1] = 1 6 7 for i in range(len(r)): 8 if r[i] == 0: 9 return i + 1 10 不难看出,空间复杂度为r数组的长度,即O(n).如果在时间复杂度不变的情况下降低空间复杂度,我们需要在原数组中记录信息。 (1)清除无效数据,将小于等于0 和 大于数组长度的值清除; (2)记录 [1,len

Python学习笔记【第八篇】:Python内置模块

[亡魂溺海] 提交于 2020-12-27 08:57:59
什么时模块     Python中的模块其实就是XXX.py 文件 模块分类     Python内置模块(标准库)     自定义模块     第三方模块 使用方法    import 模块名    form 模块名 import 方法名    说明:实际就是运行了一遍XX.py 文件 导入模块也可以取别名    如: import time as t import time as t print(t.time()) 定位模块 当前目录 如果不在当前目录,Python则搜索在shell变量PYTHONPATH下的每个目录。 如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/ 模块搜索路径存储在 system模块的sys.path变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。 自定义模块    我们自己写的XX.py 文件就是一个模块,在项目中可以引用这个模块调用里面的方法。 __all__[]关键字     __all__ = ["函数名","类名","方法名"] 没有all关键字 所有方法都可以访问到 使用all关键字    总结 如果一个文件中有__all__变量,那么也就意味着不在这个变量中的元素,不会被from xxx import *时导入 模块包   模块包就是为了防止模块重名

机器学习(二)之决策树(ID3)

谁说我不能喝 提交于 2020-12-27 03:47:13
Contents 理论基础 熵 信息增益 算法实现 Python 模型的保存与读取 总结 理论基础 决策树(Decision Tree, DT): 决策树是一种基本的分类与回归方法。由于模型呈树形结构,可以看做是if-then规则的集合,具有一定的可读性,可视化效果好。 决策树的建立包括3个步骤: 特征选择、决策树生成和决策树的修剪。   模型的建立实际上就是 通过某种方式,递归地选择最优的特征,并通过数据的划分,将无序的数据变得有序。( 对于分类而言,希望的是 将一些多类别的数据划分到各自的类别中 ,实现 从数据的混杂到条理 ,这也就是无序到有序的概念 )    如下图所示,PLAN1和PLAN2描述了 通过两个不同的特征,数据从无序变到有序的情况 。从划分结果可以看出,特征1相对于特征2要更优一些,划分结果数据的有序程度更高。   因此,在构造决策树时,第一个需要解决的问题就是 如何确定出哪个特征划分数据是起决定性作用的 ,或者说 先使用哪个特征进行划分能够使数据的不确定性减少的更多 ,从而使数据变得更有序,分类效果更好,也就是接下来要介绍的 熵 和 信息增益 的概念(Id3)。当找到最优的特征后,数据集依据此特征划分为几个数据子集,这些数据会分布在该决策点的所有分支中。此时, 如果某个分支下的数据属于同一类型,则该分支下的数据分类已经完成 ,无需进行下一步的数据集分类;如果

【Python 机器学习实战】ID3决策树

邮差的信 提交于 2020-12-27 01:04:40
一、决策树的构造 决策树是一种依托决策而建立起来的一种树。 在机器学习中,决策树是一种预测模型,代表的是一种对象属性与对象值之间的一种映射关系,每一个节点代表某个对象,树中的每一个分叉路径代表某个可能的属性值,而每一个叶子节点则对应从根节点到该叶子节点所经历的路径所表示的对象的值。 优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据。 缺点:可能会产生过度匹配问题。 适用数据类型:数值型和标称型。 决策树的一般流程 (1)收集数据:可以使用任何方法。 (2)准备数据:树构造算法只适用于标称型数据,因此数值型数据必须离散化。 (3)分析数据:可以使用任何方法,构造树完成之后,应检查图形是否符合预期。 (4)训练算法:构造树的数据结构。 (5)测试算法:使用经验树计算错误率。 (6)使用算法:此步骤可以适用于任何监督学习算法,而使用决策树可以更好地理解数据的内在含义。 ID3算法是决策树的一种,它是基于奥卡姆剃刀原理的,即用尽量用较少的东西做更多的事。 ID3算法,即Iterative Dichotomiser 3,迭代二叉树3代,是Ross Quinlan发明的一种决策树算法 1.1 信息增益 在划分数据集之前之后信息发生的变化称为信息增益,获得信息增益最高的特征就是最好的选择。 熵定义为信息的期望值。 如果待分类的事务可能划分在多个分类之中

VB无所不能之五:建立“标准”DLL动态链接库文件(1)

一曲冷凌霜 提交于 2020-12-26 12:31:22
VB无所不能之五:建立“标准”DLL动态链接库文件(1) ——作者:钟声 博客地址: http://useway.blog.51cto.com 动态链接库经常被认为是VC或者Dephi的专利,DLL文件可以将你编写的函数动态的发布,并可以被其他程序很方便的调用。 有朋友会问了,在VB里面不是有一个叫做“ActiveX DLL”的项目类型吗,生成的文件最终也是“DLL”文件啊? 没错,最终文件确实是DLL文件,但其实严格意义上VB建立的DLL并不是像VC一样的动态链接库,VB建立的是ActiveX DLL,不能像kernel32.dll”那样通过“Declare Function .....”来调用的。 本文中将详细讲解用VB生成一个DLL动态链接库文件的方法,请注意,本文将详细讲述生成一个像VC的动态链接库文件,并且调用方法也是用“Declare Function .....”来调用。 好,那么我们来建立一个DLL吧。 原理讲述: VB在编译文件的时候,采取的是两次编译的方法: 编译第一步,首先是调用c2.exe产生OBJ文件 “c2.exe”这个文件在“C:\Program Files\Microsoft Visual Studio\VB98”目录中,大家可以去找找看。“c2.exe”就是VB在编译的时候调用的命令。 编译第二步,调用Link.exe对OBJ文件进行链接