目标检测实战教程05-目标检测训练小技巧 使用paddlex划分数据集第一节课我们讲了如何将编号标注完成后的数据集放置在不同文件夹后,导出COCO格式的训练集与测试集标注文件。这里我们介绍另一种方法:只需要提供数据集的路径,路径文件夹中包含对应的图像文件夹和标注文件夹即可,再指明训练集测试集验证集划分比例,就会将标注数据集按比例划分为训练集与测试集。!pip install paddlex!paddlex --split_dataset --format VOC --dataset_dir /home/aistudio/data --val
目标检测实战教程04-目标检测实战全流程 01下载套件!git clone https://gitee.com/paddlepaddle/PaddleDetection.git -b release/2.402安装依赖环境%cd PaddleDetection/!pip install -r requirements.txt%cd ..03解压数据集!unzip -oq /home/aistudio/data/data121670/Big.zip -d /home/aistudio/data04修改配置文件修改训练参数05
mysql的C语言api函数 这节主要是介绍MySQL的api函数,使用这些api函数可以完成C语言操作MySQL数据库。初始化连接环境//参数 mysql为null//返回值:用于连接MySQL服务器MYSQL* mysql_init(MYSQL* mysql);连接MySQL服务器//返回值与第一个参数类型相同MYSQL* mysql_real_connect( MYSQL* mysql, // mysql_init函数的返回值 const char* host, // mysql服务器的ip地址
目标检测实战教程03-PaddleDetection配置文件详细介绍 paddledetection配置文件详细介绍数据集配置文件# 数据评估类型metric: COCO# 类别信息,不包含背景类num_classes: 1# 训练集TrainDataset: !COCODataSet # 数据图像路径 image_dir: /home/aistudio/data/JPEGImages # 标注文件位置 anno_path: /home/aistudio/data/bigtrain.json dataset_dir:
目标检测实战教程02-没有GPU,如何训练自己的目标检测算法 没有GPU,如何训练自己的目标检测算法很多初学者想要尝试学习深度学习的时候苦于没有相应的GPU资源,而使用CPU训练任务效率又太低,所以本节内容教大家如何使用在线的免费GPU学习平台,在Ai studio上完成目标检测训练任务。项目地址:fork以后注意修改数据集配置文件内容https://aistudio.baidu.com/aistudio/projectdetail/3795143下载目标检测套件由于github的访问速度较慢,所以选择下载gitee上的套件代码。在命令的最后加上要下载
目标检测实战教程01-使用labelimg标注目标检测数据集|voc转COCO数据集 目标检测实战教程01-使用labelimg标注目标检测数据集|voc转COCO数据集对图像进行编号将收集到的图像进行编号方便统一管理,编号代码如下import ospath = "E:\\image1"filelist = os.listdir(path) #该文件夹下所有的文件(包括文件夹)count=0for file in filelist: print(file)for file in filelist: #遍历所有文件 Olddir=os.path.join(p
单调栈C++实现-查找数组中某个数左右两边离他最近小于他的数 单调栈给出一个数组,求助每个位置上的数,左边比他小的和右边比他小的数,常规的方法时间复杂度是O(N^2),利用单调栈结构可以用O(N)解决上述问题。单调栈实现(无重复数)设置一个栈,栈底到栈顶从小到大,按照顺序将数据压入栈中,如某个数压入时不满足此时的大小顺序要求,就需要将栈中的数弹出,此时记录这个数的左右情况,右边比这个数小的是当前准备压入的这个数,左边比他小的这个数是栈中当前数压着的那个。当数组压完以后,栈中有剩余,则依次弹出,右边比当前数小的不存在,左边比当前数小的是栈中他压着的那个代码实现
滑动窗口动态获取窗口最大值与最小值 滑动窗口滑动窗口是一种想象出来的数据结构,窗口有左边界L和右边界R。在数组或者字符串或者一个序列上,记为S,窗口就是S[L…R]这一部分,L往右滑动意味着有样本滑出窗口,R往右划动意味着有样本滑入窗口,L和R都只能往右滑动。窗口定义R边界向右移动,数组中的数从窗口右侧进入窗口L边界向右移动,数组中的数从窗口左侧出窗口左边界不能到右边界的右侧如何找到动态窗口中的最大值准备一个双端队列,数据可以从头部进头部出,也可以从尾部进尾部出。R++时,将数据从双端队列的尾部插入,此时队列为空,可以
图论算法-最小生成树-Kruskal和prim算法 最小生成树概念:在无向图中求一棵树T,使得这个树拥有图G中所有顶点,且所有边都是来自图G中的边,并且满足整颗树的边权之和最小,这棵树就是图G的最小生成树。特征:最小生成树是树,因此边的数量等于顶点数减1,并且树内一定不会有环图G生成的最小生成树,最小生成树可能不唯一,但是边权之和必然唯一由于是无向图,所以根据给出的结点开始生成最小生成树即可。Kruskal算法步骤以边的角度出发,将所有边按权值大小排序,先将边从小到大加入到集合中,看添加边后有没有形成环,若形成环,则不要这条边。判断是
图论算法-dijkstra算法 dijkstra算法思想:用于解决单源最短路问题,即给定有向图G和起点from,通过算法得到from到其他每个顶点的最短距离。步骤:设置集合selectedNode存放已被访问过的点,每次从未被访问的的结点集合distancemap中找到一个距离起点from最近的点minnode。令minnode为中介点,优化起点与其他所有能从u到达的所有点的最短距离。将minnode加入到已访问结点selectednode中。这样执行n次(图中结点数)以后,直到集合selectednode已包含所有顶点。
图论算法-拓扑排序C++实现 拓扑排序思想将有向无环图的所有顶点排成一个线性序列,使得对图G中的任意两个顶点u、v,若存在u->v,则u一定在v的前面,这个序列又被称为拓扑序列。步骤定义一个队列q,将所有入度为0的结点加入到队列q中取队首结点,输出,然后删去所有从他出发的边,并令这些边到达顶点的入度-1,如果某个顶点的入度为0,则将其加入队列。不断执行2操作,直到队列为空。如果队列为空时,入过队的结点数目恰好为N,说明拓扑排序成功,图G为有向无环图;否则拓扑排序失败,图G中有环。或者根据返回的排序结果判断,若结果数组
图模板、BFS、DFS的C++实现 图图的存储方式有两种:邻接矩阵和邻接表。邻接矩阵用二维数组来表示顶点之间是否存在边,边的权重为多少。对于无向图来说,邻接矩阵是一个对称矩阵。缺点是邻接矩阵虽然比较好写但是需要开辟一个二维数组,如果顶点数量太多,容易超过题目的内存限制。邻接表把同一个顶点的所有出边都放在一个列表中,那么N个顶点就会有N个列表,这N个列表就是图G的邻接表,记为Adj[N]每个结点会存放一条边的信息(括号外的数字是边的终点编号,括号内的数字是边权。对于初学者来说,使用变长数组vector来表示邻接表更为简便。
并查集C++实现 并查集是什么是一种含有合并和查找功能的数据结构,用于处理一些不交集的合并和查询问题。主要含有两个功能:判断任意两个元素是否属于同一个集合;按照要求合并不同集合。并查集的基本操作查找:给出一个元素,查找元素属于哪个集合。步骤:不断向上查找,直到找到他的根节点,之后根据根节点是否相同判断两个元素是否属于同一个集合。查询操作完成后,并查集结构还会进行路径压缩操作,就是将查询节点到根节点之间的所有节点都指向根节点,可以有效限制因不断合并造成部分区域不匀称,使其保持较低的树高。合并:将两个子集合并成同一个
动态规划04数字转变为字符串结果数 规定1和A对应、2和B对应、3和C对应…26和Z对应那么一个数字字符串比如"111”就可以转化为:“AAA”、“KA"和"AK”给定一个只有数字字符组成的字符串str,返回有多少种转化结果暴力递归构建尝试函数,str为数字字符串,index为当前进行到哪个位置,返回值为当前转换结果数主函数中如何调用process(str,index)分析basecase当index==str的长度时,到达字符串的尾部,返回数字1,表示找到一种转换结果分析普通情况当index遇到的字符为0,因为没有以0开
动态规划03背包问题 题目给定两个长度都为N的数组weights和values,weights[i]和values[i]分别代表 i号物品的重量和价值给定一个正数bag,表示一个载重bag的袋子,装的物品不能超过这个重量返回能装下的最大价值暴力递归首先建立尝试函数process,参数为w数组、v数组、当前进行到的序号index、背包剩余的容量rest,返回值为包中物品的总价值那么主函数中调用的就是process(w,v,0,bag)首先分析basecase:当index==N时,所有物品都以选完,返回0当res
动态规划02左右取牌返回最大点数 题目给定一个整型数组arr,代表数值不同的纸牌排成一条线玩家A和玩家B依次拿走每张纸牌规定玩家A先拿,玩家B后拿但是每个玩家每次只能拿走最左或最右的纸牌玩家A和玩家B都绝顶聪明请返回最后获胜者的分数暴力递归首先设置一个尝试函数processf,参数为arr数组,L表示左边界,R表示右边界,返回值为int表示取到数的和。先来看basecase:当只有一张牌的时候,即L==R的时候,拿一张牌,拿到的就是最后这张牌。普通情况拿左边的牌,获得值为arr[L],但是对方接下来要拿牌 拿的就是[