<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[effort_study的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/effort_study</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; effort_study]]></copyright><item><title><![CDATA[PaddleDetection目标检测实战课程目录]]></title><link>https://blog.youkuaiyun.com/effort_study/article/details/126454702</link><guid>https://blog.youkuaiyun.com/effort_study/article/details/126454702</guid><author>effort_study</author><pubDate>Sun, 21 Aug 2022 20:09:59 +0800</pubDate><description><![CDATA[零基础掌握目标检测实战流程，从制作数据集到全流程的训练评估，再到最终的部署，不需要自备GPU，四五个小时的内容即可掌握目标检测实操技术。]]></description><category></category></item><item><title><![CDATA[08目标检测数据集半自动化标注]]></title><link>https://blog.youkuaiyun.com/effort_study/article/details/125732208</link><guid>https://blog.youkuaiyun.com/effort_study/article/details/125732208</guid><author>effort_study</author><pubDate>Mon, 11 Jul 2022 22:14:21 +0800</pubDate><description><![CDATA[目标检测数据集半自动化标注]]></description><category></category></item><item><title><![CDATA[目标检测实战教程07-windows端cpp部署PaddleDetection目标检测模型]]></title><link>https://blog.youkuaiyun.com/effort_study/article/details/125363509</link><guid>https://blog.youkuaiyun.com/effort_study/article/details/125363509</guid><author>effort_study</author><pubDate>Sun, 19 Jun 2022 22:48:14 +0800</pubDate><description><![CDATA[在windows端使用cpp完成paddledetection目标检测模型的部署]]></description><category></category></item><item><title><![CDATA[目标检测实战教程06-AIstudio后台任务]]></title><link>https://blog.youkuaiyun.com/effort_study/article/details/125219378</link><guid>https://blog.youkuaiyun.com/effort_study/article/details/125219378</guid><author>effort_study</author><pubDate>Fri, 10 Jun 2022 12:31:22 +0800</pubDate><description><![CDATA[使用aistudio可以实现后台任务，提交到服务器后即可，无需本地等待。]]></description><category></category></item><item><title><![CDATA[目标检测实战教程05-目标检测训练小技巧]]></title><link>https://blog.youkuaiyun.com/effort_study/article/details/125053054</link><guid>https://blog.youkuaiyun.com/effort_study/article/details/125053054</guid><author>effort_study</author><pubDate>Mon, 30 May 2022 20:08:46 +0800</pubDate><description><![CDATA[使用paddlex划分数据集
第一节课我们讲了如何将编号标注完成后的数据集放置在不同文件夹后，导出COCO格式的训练集与测试集标注文件。这里我们介绍另一种方法：
只需要提供数据集的路径，路径文件夹中包含对应的图像文件夹和标注文件夹即可，再指明训练集测试集验证集划分比例，就会将标注数据集按比例划分为训练集与测试集。
!pip install paddlex
!paddlex --split_dataset --format VOC --dataset_dir /home/aistudio/data --val]]></description><category></category></item><item><title><![CDATA[目标检测实战教程04-目标检测实战全流程]]></title><link>https://blog.youkuaiyun.com/effort_study/article/details/124940058</link><guid>https://blog.youkuaiyun.com/effort_study/article/details/124940058</guid><author>effort_study</author><pubDate>Tue, 24 May 2022 08:47:09 +0800</pubDate><description><![CDATA[01下载套件
!git clone https://gitee.com/paddlepaddle/PaddleDetection.git -b release/2.4

02安装依赖环境
%cd PaddleDetection/
!pip install -r requirements.txt
%cd ..

03解压数据集
!unzip -oq /home/aistudio/data/data121670/Big.zip -d /home/aistudio/data

04修改配置文件
修改训练参数
05]]></description><category></category></item><item><title><![CDATA[mysql的C语言api函数]]></title><link>https://blog.youkuaiyun.com/effort_study/article/details/124894359</link><guid>https://blog.youkuaiyun.com/effort_study/article/details/124894359</guid><author>effort_study</author><pubDate>Sat, 21 May 2022 09:21:49 +0800</pubDate><description><![CDATA[这节主要是介绍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地址
    ]]></description><category></category></item><item><title><![CDATA[目标检测实战教程03-PaddleDetection配置文件详细介绍]]></title><link>https://blog.youkuaiyun.com/effort_study/article/details/124810188</link><guid>https://blog.youkuaiyun.com/effort_study/article/details/124810188</guid><author>effort_study</author><pubDate>Mon, 16 May 2022 22:53:22 +0800</pubDate><description><![CDATA[paddledetection配置文件详细介绍
数据集配置文件
# 数据评估类型
metric: COCO
# 类别信息，不包含背景类
num_classes: 1

# 训练集
TrainDataset:
  !COCODataSet
    # 数据图像路径
    image_dir: /home/aistudio/data/JPEGImages
    # 标注文件位置
    anno_path: /home/aistudio/data/bigtrain.json
    dataset_dir:]]></description><category></category></item><item><title><![CDATA[目标检测实战教程02-没有GPU，如何训练自己的目标检测算法]]></title><link>https://blog.youkuaiyun.com/effort_study/article/details/124720626</link><guid>https://blog.youkuaiyun.com/effort_study/article/details/124720626</guid><author>effort_study</author><pubDate>Wed, 11 May 2022 22:22:55 +0800</pubDate><description><![CDATA[没有GPU，如何训练自己的目标检测算法
很多初学者想要尝试学习深度学习的时候苦于没有相应的GPU资源，而使用CPU训练任务效率又太低，所以本节内容教大家如何使用在线的免费GPU学习平台，在Ai studio上完成目标检测训练任务。
项目地址：
fork以后注意修改数据集配置文件内容
https://aistudio.baidu.com/aistudio/projectdetail/3795143

下载目标检测套件
由于github的访问速度较慢，所以选择下载gitee上的套件代码。
在命令的最后加上要下载]]></description><category></category></item><item><title><![CDATA[目标检测实战教程01-使用labelimg标注目标检测数据集|voc转COCO数据集]]></title><link>https://blog.youkuaiyun.com/effort_study/article/details/123763951</link><guid>https://blog.youkuaiyun.com/effort_study/article/details/123763951</guid><author>effort_study</author><pubDate>Sat, 26 Mar 2022 21:17:45 +0800</pubDate><description><![CDATA[目标检测实战教程01-使用labelimg标注目标检测数据集|voc转COCO数据集
对图像进行编号
将收集到的图像进行编号方便统一管理，编号代码如下
import os
path = "E:\\image1"
filelist = os.listdir(path) #该文件夹下所有的文件（包括文件夹）
count=0
for file in filelist:
    print(file)
for file in filelist:   #遍历所有文件
    Olddir=os.path.join(p]]></description><category></category></item><item><title><![CDATA[单调栈C++实现-查找数组中某个数左右两边离他最近小于他的数]]></title><link>https://blog.youkuaiyun.com/effort_study/article/details/122765525</link><guid>https://blog.youkuaiyun.com/effort_study/article/details/122765525</guid><author>effort_study</author><pubDate>Tue, 01 Feb 2022 19:07:50 +0800</pubDate><description><![CDATA[单调栈
给出一个数组，求助每个位置上的数，左边比他小的和右边比他小的数，常规的方法时间复杂度是O(N^2)，利用单调栈结构可以用O(N)解决上述问题。
单调栈实现（无重复数）
设置一个栈，栈底到栈顶从小到大，按照顺序将数据压入栈中，如某个数压入时不满足此时的大小顺序要求，就需要将栈中的数弹出，此时记录这个数的左右情况，右边比这个数小的是当前准备压入的这个数，左边比他小的这个数是栈中当前数压着的那个。
当数组压完以后，栈中有剩余，则依次弹出，右边比当前数小的不存在，左边比当前数小的是栈中他压着的那个
代码实现]]></description><category></category></item><item><title><![CDATA[滑动窗口动态获取窗口最大值与最小值]]></title><link>https://blog.youkuaiyun.com/effort_study/article/details/122694644</link><guid>https://blog.youkuaiyun.com/effort_study/article/details/122694644</guid><author>effort_study</author><pubDate>Wed, 26 Jan 2022 01:02:46 +0800</pubDate><description><![CDATA[滑动窗口
滑动窗口是一种想象出来的数据结构，窗口有左边界L和右边界R。
在数组或者字符串或者一个序列上，记为S，窗口就是S[L…R]这一部分，L往右滑动意味着有样本滑出窗口，R往右划动意味着有样本滑入窗口，L和R都只能往右滑动。
窗口定义

R边界向右移动，数组中的数从窗口右侧进入窗口
L边界向右移动，数组中的数从窗口左侧出窗口
左边界不能到右边界的右侧

如何找到动态窗口中的最大值

准备一个双端队列，数据可以从头部进头部出，也可以从尾部进尾部出。
R++时，将数据从双端队列的尾部插入，此时队列为空，可以]]></description><category></category></item><item><title><![CDATA[图论算法-最小生成树-Kruskal和prim算法]]></title><link>https://blog.youkuaiyun.com/effort_study/article/details/122548034</link><guid>https://blog.youkuaiyun.com/effort_study/article/details/122548034</guid><author>effort_study</author><pubDate>Mon, 17 Jan 2022 20:46:37 +0800</pubDate><description><![CDATA[最小生成树
概念：在无向图中求一棵树T，使得这个树拥有图G中所有顶点，且所有边都是来自图G中的边，并且满足整颗树的边权之和最小，这棵树就是图G的最小生成树。
特征：

最小生成树是树，因此边的数量等于顶点数减1，并且树内一定不会有环
图G生成的最小生成树，最小生成树可能不唯一，但是边权之和必然唯一
由于是无向图，所以根据给出的结点开始生成最小生成树即可。

Kruskal算法
步骤

以边的角度出发，将所有边按权值大小排序，先将边从小到大加入到集合中，
看添加边后有没有形成环，若形成环，则不要这条边。判断是]]></description><category></category></item><item><title><![CDATA[图论算法-dijkstra算法]]></title><link>https://blog.youkuaiyun.com/effort_study/article/details/122547966</link><guid>https://blog.youkuaiyun.com/effort_study/article/details/122547966</guid><author>effort_study</author><pubDate>Mon, 17 Jan 2022 20:45:06 +0800</pubDate><description><![CDATA[dijkstra算法
思想：
用于解决单源最短路问题，即给定有向图G和起点from，通过算法得到from到其他每个顶点的最短距离。
步骤：

设置集合selectedNode存放已被访问过的点，每次从未被访问的的结点集合distancemap中找到一个距离起点from最近的点minnode。
令minnode为中介点，优化起点与其他所有能从u到达的所有点的最短距离。
将minnode加入到已访问结点selectednode中。这样执行n次(图中结点数)以后，直到集合selectednode已包含所有顶点。
]]></description><category></category></item><item><title><![CDATA[图论算法-拓扑排序C++实现]]></title><link>https://blog.youkuaiyun.com/effort_study/article/details/122547945</link><guid>https://blog.youkuaiyun.com/effort_study/article/details/122547945</guid><author>effort_study</author><pubDate>Mon, 17 Jan 2022 20:41:52 +0800</pubDate><description><![CDATA[拓扑排序
思想
将有向无环图的所有顶点排成一个线性序列，使得对图G中的任意两个顶点u、v，若存在u-&gt;v，则u一定在v的前面，这个序列又被称为拓扑序列。
步骤

定义一个队列q，将所有入度为0的结点加入到队列q中
取队首结点，输出，然后删去所有从他出发的边，并令这些边到达顶点的入度-1，如果某个顶点的入度为0，则将其加入队列。
不断执行2操作，直到队列为空。如果队列为空时，入过队的结点数目恰好为N，说明拓扑排序成功，图G为有向无环图；否则拓扑排序失败，图G中有环。或者根据返回的排序结果判断，若结果数组]]></description><category></category></item><item><title><![CDATA[图模板、BFS、DFS的C++实现]]></title><link>https://blog.youkuaiyun.com/effort_study/article/details/122504670</link><guid>https://blog.youkuaiyun.com/effort_study/article/details/122504670</guid><author>effort_study</author><pubDate>Sat, 15 Jan 2022 00:02:48 +0800</pubDate><description><![CDATA[图
图的存储方式有两种：邻接矩阵和邻接表。
邻接矩阵
用二维数组来表示顶点之间是否存在边，边的权重为多少。对于无向图来说，邻接矩阵是一个对称矩阵。缺点是邻接矩阵虽然比较好写但是需要开辟一个二维数组，如果顶点数量太多，容易超过题目的内存限制。

邻接表
把同一个顶点的所有出边都放在一个列表中，那么N个顶点就会有N个列表，这N个列表就是图G的邻接表，记为Adj[N]每个结点会存放一条边的信息（括号外的数字是边的终点编号，括号内的数字是边权。

对于初学者来说，使用变长数组vector来表示邻接表更为简便。
​	]]></description><category></category></item><item><title><![CDATA[并查集C++实现]]></title><link>https://blog.youkuaiyun.com/effort_study/article/details/122463546</link><guid>https://blog.youkuaiyun.com/effort_study/article/details/122463546</guid><author>effort_study</author><pubDate>Wed, 12 Jan 2022 22:07:32 +0800</pubDate><description><![CDATA[并查集是什么
是一种含有合并和查找功能的数据结构，用于处理一些不交集的合并和查询问题。主要含有两个功能：判断任意两个元素是否属于同一个集合；按照要求合并不同集合。
并查集的基本操作
查找：
给出一个元素，查找元素属于哪个集合。步骤：不断向上查找，直到找到他的根节点，之后根据根节点是否相同判断两个元素是否属于同一个集合。查询操作完成后，并查集结构还会进行路径压缩操作，就是将查询节点到根节点之间的所有节点都指向根节点，可以有效限制因不断合并造成部分区域不匀称，使其保持较低的树高。
合并：
将两个子集合并成同一个]]></description><category></category></item><item><title><![CDATA[动态规划04数字转变为字符串结果数]]></title><link>https://blog.youkuaiyun.com/effort_study/article/details/120914634</link><guid>https://blog.youkuaiyun.com/effort_study/article/details/120914634</guid><author>effort_study</author><pubDate>Fri, 22 Oct 2021 22:38:32 +0800</pubDate><description><![CDATA[规定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开]]></description><category></category></item><item><title><![CDATA[动态规划03背包问题]]></title><link>https://blog.youkuaiyun.com/effort_study/article/details/120914619</link><guid>https://blog.youkuaiyun.com/effort_study/article/details/120914619</guid><author>effort_study</author><pubDate>Fri, 22 Oct 2021 22:37:20 +0800</pubDate><description><![CDATA[题目
给定两个长度都为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]]></description><category></category></item><item><title><![CDATA[动态规划02左右取牌返回最大点数]]></title><link>https://blog.youkuaiyun.com/effort_study/article/details/120914600</link><guid>https://blog.youkuaiyun.com/effort_study/article/details/120914600</guid><author>effort_study</author><pubDate>Fri, 22 Oct 2021 22:35:52 +0800</pubDate><description><![CDATA[题目
给定一个整型数组arr，代表数值不同的纸牌排成一条线
玩家A和玩家B依次拿走每张纸牌
规定玩家A先拿，玩家B后拿
但是每个玩家每次只能拿走最左或最右的纸牌
玩家A和玩家B都绝顶聪明
请返回最后获胜者的分数
暴力递归
首先设置一个尝试函数processf，参数为arr数组，L表示左边界，R表示右边界，返回值为int表示取到数的和。
先来看basecase：
当只有一张牌的时候，即L==R的时候，拿一张牌，拿到的就是最后这张牌。
普通情况
拿左边的牌，获得值为arr[L]，但是对方接下来要拿牌 拿的就是[]]></description><category></category></item></channel></rss>