Clichong
这个作者很懒,什么都没留下…
展开
-
目标检测的Tricks | 【Trick13】使用kmeans与遗传算法聚类anchor
如有错误,恳请指出。这篇博客的代码来着博主:太阳花的小绿豆,具体的解释说明可以见参考资料,这里只贴上代码留作笔记使用。ps:参考资料解释得非常的详细文章目录1. kmeans聚类中心2. kmeans聚类anchor3. kmeans+遗传算法聚类anchor1. kmeans聚类中心参考代码:plot_kmeans.pyimport numpy as npfrom matplotlib import pyplot as pltnp.random.seed(0)colors = .原创 2022-04-23 21:29:38 · 2761 阅读 · 0 评论 -
目标检测的Tricks | 【Trick12】分布式训练(Multi-GPU)与DistributedParallel使用相关总结
如有错误,恳请指出。用这篇博客记录多卡(也就是mutil-gpu)的使用,目的是加快训练过程,在pytorch中称之为分布式训练。在pytorch中主要使用的是DistributedParallel的相关函数来实现分布式训练。下面就记录一下我设置gpu等方面的一些笔记,比较多的部分是从其他笔记整理而来,详细见参考资料。文章目录1. 设置可见GPU,进行多显卡深度学习训练2. 一些标志位的设置3. 多卡训练且平均数据DataParallel4. 分布式训练DistributedParallel5. .原创 2022-04-23 20:52:46 · 1516 阅读 · 2 评论 -
目标检测的Tricks | 【Trick11】label的缩放与显示
如有错误,恳请指出。在之前的内容中,基本已经把trick与处理流程讲了一遍,这两个函数只是进行缩放与画框,也谈不上是一个技巧,也可以说是一个工具。所以下面介绍两个函数:sacle_coords函数:将当前的label坐标位置尺寸还原为原图的坐标位置尺寸draw_box函数:将当前的预测边界框显示在原图上文章目录1. sacle_coords函数2. draw_box函数1. sacle_coords函数主要思路:获取缩放后的图像与缩放前图像的一个比例,根据比例计算出上下左右pad.原创 2022-04-23 15:58:22 · 1824 阅读 · 0 评论 -
目标检测的Tricks | 【Trick10】工具类文件调用(coco评价指标包、日志工具、Tensorboard工具...)
如有错误,恳请指出。对于一些评价指标与常见的日志记录与输出,除了自己写或者是使用普通的python提供的工具包,比如说是logging等,其实还可以使用一些大佬写好的工具函数来调用,就拿我目前看过为数不多的项目代码,对于日志信息记录啥的,基本都会使用一个MetricLogger的工具类,还有记录数值的也有SmoothedValue这么一个工具类。对于目标检测中的验证,也有coco评价指标包来进行调用。文章目录1. coco评价指标包调用2. 日志工具代码调用3. Tensorboard工具调用1..原创 2022-04-23 15:36:03 · 6912 阅读 · 8 评论 -
目标检测的Tricks | 【Trick9】nms非极大值抑制处理(包括变体merge-nms、and-nms、soft-nms、diou-nms等介绍)
如有错误,恳请指出。用这篇博客记录一下nms,也就是非极大值抑制处理,算是目标检测后处理的一个难点。在训练阶段是不需要nms处理的,只有在验证或者是测试阶段才需要将预测结果进行非极大值抑制处理,来挑选最佳的正样本。下面就详细查看一下非极大值抑制处理算法的一个大致流程。文章目录1. NMS主要步骤2. NMS代码实现3. NMS的变体与实现3.1 hard_nms_batch3.2 hard_nms3.3 and-nms3.4 merge-nms3.5 soft-nms3.6 iou-nms3.7 .原创 2022-04-23 15:26:29 · 6449 阅读 · 3 评论 -
目标检测的Tricks | 【Trick8】数据增强——随机旋转、平移、缩放、错切、hsv增强
如有错误,恳请指出。在之前使用opencv就介绍使用过一些常用的数据增强的实现方法,见:《数据增强 | 旋转、平移、缩放、错切、HSV增强》,当时介绍了旋转、平移、缩放、错切、HSV增强,但是只是针对了图像的数据增强,并没有涉及到label的变化。因为,对于分类任务的数据增强来说,只需要对图像进行数据增强就可以了;但是对于目标检测任务来说,图像改变了,也以为着label的位置改变,同样需要作出变换,所以这里我介绍一下目标检测下的数据增强方法。文章目录1. 随机旋转、平移、缩放、错切2. hsv增强.原创 2022-04-23 14:59:26 · 8561 阅读 · 1 评论 -
目标检测的Tricks | 【Trick7】数据增强——Mosaic(马赛克)
如有错误,恳请指出。在之前的博客中也有提及到mosaic这种数据增强,然后用这篇博客来进行详细介绍。文章目录1. Mosaic概要介绍2. Mosaic算法步骤3. Mosaic实现代码4. Mosaic代码说明1. Mosaic概要介绍mosaic是yolov4提出的一个tricks,其思路就是将四张图片进行随机裁剪,再拼接到一张图上作为训练数据。这样做的好处是丰富了图片的背景,并且四张图片拼接在一起变相地提高了batch_size,在进行batch normalization的时候也会计算四.原创 2022-04-23 14:47:01 · 15304 阅读 · 6 评论 -
目标检测的Tricks | 【Trick6】加快推理速度——Rectangular inference
如有错误,恳请指出。文章目录1. Square Inference理论概要2. Rectangular inference理论概要3. Rectangular inference实现代码4. Rectangular inference顺序排序1. Square Inference理论概要为了说明什么是Rectangular inference(矩形推理),就得先说说什么是 Square Inference(正方形推理 )。YOLOv3下采样了32倍,因此输入网络的长宽需要是32的倍数,最常用的.原创 2022-04-23 11:38:29 · 1038 阅读 · 0 评论 -
目标检测的Tricks | 【Trick5】学习率调优方法——warmup
如有错误,恳请指出。文章目录1. warmup理论概要2. warmup实现代码1. warmup理论概要warmup定义:在模型训练之初选用较小的学习率,训练一段时间之后(如:10epoches或10000steps)使用预设的学习率进行训练。warmup作用:因为模型的weights是随机初始化的,可以理解为训练之初模型对数据的“理解程度”为0(即:没有任何先验知识),在第一个epoches中,每个batch的数据对模型来说都是新的,模型会根据输入的数据进行快速调参,此时如果采用较大的.原创 2022-04-17 11:43:31 · 3053 阅读 · 0 评论 -
目标检测的Tricks | 【Trick4】Multi-scale training与Multi-scale testing
如有错误,恳请指出。文章目录1. Multi-scale training理论概要2. Multi-scale training实现代码3. Multi-scale testing理论概要1. Multi-scale training理论概要多尺度训练对全卷积网络有效,一般设置几种不同尺度的图片,训练时每隔一定iterations随机选取一种尺度训练。这样训练出来的模型鲁棒性强,其可以接受任意大小的图片作为输入,使用尺度小的图片测试速度会快些,但准确度低,用尺度大的图片测试速度慢,但是准确度高。.原创 2022-04-17 11:33:48 · 1197 阅读 · 0 评论 -
目标检测的Tricks | 【Trick3】IoU loss与focal loss(包含一些变体介绍)
如有错误,恳请指出。这里介绍一下IoU loss与focal loss函数,之前的文章也有提及到,这里就不再过多的细说了。简单来说:IoU loss:用来计算pred box与ground true之间的差异,用来边界框损失函数的计算;focal loss:用来平衡正负样本不均衡的问题,由RetinaNet提出使用与One-Step目标检测算法上的一个技巧关于这两部分的详细介绍可以见之前的博文:YOLOv4中的tricks概念总结——Bag of freebies然后,后续有不少大佬对fo.原创 2022-04-17 11:16:53 · 2775 阅读 · 1 评论 -
目标检测的Tricks | 【Trick2】自动混合精度(Automatic mixed precision)
如有错误,恳请指出。这篇博客用来记录一下自动混合精度的笔记,同时截取了yolov3spp项目相应的代码。文章目录1. 自动混合精度理论概要2. Autocast使用介绍3. GradScaler使用介绍4. 自动混合精度实现代码1. 自动混合精度理论概要一句话概括的是,自动混合精度的实现使用的autocast + GradScaler。以下是对自动混合精度的介绍:amp:Automatic mixed precision,自动混合精度,可以在神经网络推理过程中,针对不同的层,采用不同的数据精.原创 2022-04-17 10:51:01 · 1881 阅读 · 0 评论 -
目标检测的Tricks | 【Trick1】Label Smoothing
如有错误,恳请指出。文章目录1. Label Smoothing理论概要2. Label Smoothing实现代码1. Label Smoothing理论概要假设我们的分类只有两个,一个是猫一个不是猫,分别用1和0表示。Label Smoothing的工作原理是对原来的[0 1]这种标注做一个改动,假设我们给定Label Smoothing的平滑参数为0.1:[0,1]×(1−0.1)+0.1/2=[0.05,0.95]可以看到,原来的[0,1]标签成了[ 0.05 , 0.95 ] 了,那.原创 2022-04-16 22:48:39 · 1134 阅读 · 0 评论