0%

经过几天连续的开坑和读源代码,对 mmdetection 的配置流程了解的差不多了。考虑一个实例应用,尝试着将 FGSM 攻击算法的制作的对抗样本植入目标检测中,企图增加网络的鲁棒性,也就是一个自定义输出处理 Pipeline 的实际流程。之后会尝试自定义损失函数,支持简单的对抗训练,如 MART 算法等 1

最近喜欢上了听音乐,B 站关注了个 UP 主叫『咻咻满』,长得好看,戏腔唱『青花瓷』入坑了,也听了其它的『星辰大海』和『白月光和朱砂痣』,都挺好听。以后得关注点女 UP 了,看着多可爱,生活又不是只有代码。卧艹不对说回正题。

MMDetection 是一个基于 PyTorch 的目标检测开源工具箱 1,支持了众多主流的和最新的检测算法,例如 Faster R-CNN,Mask R-CNN,RetinaNet 等,官网也给出了详细的教程。既然如此,生命不息,开坑不止。前前后后被各种事情打断,大概花了一周搞懂了如何使用 MMdetection 去做检测的任务。本文收录:

  • 安装
  • 修改配置文件
  • 调用模型与训练好的参数,进行推理
  • 自定义训练
  • 数据处理流程

注意,本文更多像是记录学习过程,这也是我第一次用这个工具,遇到问题一步一步的 debug 与记录,并不是直接的教程。且,本文程序大多能直接复制运行,需要对应到自己的路径。我希望读者看完本文后具有解决问题的能力,而不只是会解决问题。

今日在写程序时,遇到了一个蜜汁 bug,加载别人训练好的 ResNet18,识别精度很低,只有 16%,但理论上而言应该有 92%,我也好奇那 80% 的准确率去哪里了。而程序和数据本身又无错误,所以来探究一下这是为什么。

五一闲的没事继续开坑,差不多也该做论文了。等看完一些经典的攻击算法后,做一些复现和对比实验,然后去看经典的防御算法。CW 算法是一种基于优化的攻击算法 1,而论文的创新点在于损失函数的定义与梯度的截断。

最早在天池玩耍的时候接触到了目标检测。当时真的啥都不知道,头铁,一点点的开坑造轮子。后来再看前几名开源的程序,发现有很多库可以使用,切图,目标检测等,比如数据增强、目标检测都有现成的工具箱。所以想着,就先用调库的形式写一个简单的 baseline,下一个任务直接用现成的代码,省点事,所以写了一个这样的简单的平台。

在目标检测领域,很难保证所要检测目标的大小都是类似的,MNIST,cifar10,imageNet 等玩具数据集除外。实际场景中,往往目标大小不一致、长宽比例不一致、图片的大小也不一致。长宽比例不一致可以通过之前提到的 Faster R-CNN 1 来解决。FPN 的全称是 Feature Pyramid Networks 2 ,本算法重点关注目标多尺度的问题。因为传统两阶段检测(区域提议、区域识别)算法基于特征图进行预测,通常来自网络骨干的最后一层,回导致小物体信息的丢失。

又来开计算机视觉的坑了,这次一定做好整理和记录,包括算法内容和程序。做好训练、保存和推理的框架,下次需要的时候直接用。做目标检测的东西,于是决定从 Fast R-CNN 重头来过了。其中,Fast R-CNN 只有理论,Faster-RCNN 部分含有代码,不过会在下一篇博客了。

既然是目标检测,就需要做两件事情,目标在哪,目标是什么。对于目标在哪的问题,可以让网络生成一个目标框,目标框有四部分组成:$(x,y,w,h)$,表示物体的起始点坐标和框的宽度与高度;对于目标是什么的问题,就是传统神经网络的多分类问题了。