1. 环境准备与mmdetection框架初识
如果你和我一样,是个喜欢动手实践的开发者,想把Faster RCNN这个经典的“老将”用在自己的项目上,比如识别生产线上的零件瑕疵,或者统计果园里成熟的水果,那么这篇实战指南就是为你准备的。我踩过不少坑,也积累了一些能让流程更顺畅的经验,今天就把从零开始,用mmdetection训练和部署自定义Faster RCNN模型的全过程,掰开揉碎了讲给你听。整个过程就像搭积木,我们一步步来,保证你能复现。
首先得把“地基”打好,也就是环境。mmdetection是一个基于PyTorch的开源目标检测工具箱,由商汤和港中文的团队维护,代码质量高,社区活跃。它把Faster RCNN、Mask RCNN、RetinaNet这些主流模型都实现好了,我们不用从零写代码,只需要像配置乐高一样修改配置文件,就能快速应用到自己的数据上。这大大降低了我们这些应用开发者的门槛。
我个人的实战环境是Ubuntu 18.04,搭配CUDA 10.1和PyTorch 1.7。不过你完全不用拘泥于此,mmdetection对版本有一定兼容性。核心是确保你的PyTorch、CUDA和mmcv(这是mmdetection依赖的一个计算机视觉基础库)版本匹配。一个最稳妥的方法是去mmdetection的官方GitHub仓库,查看README.md或docs/install.md文件,里面通常会有一个推荐的版本组合表格。比如,PyTorch 1.6到1.9,通常对应着mmcv-full的某个特定版本。我建议直接用Anaconda来管理环境,能避免很多依赖冲突的麻烦事。
具体操作上,你可以新建一个conda环境:conda create -n mmdet python=3.7 -y,然后激活它:conda activate mmdet。接着安装对应版本的PyTorch和torchvision,命令可以从PyTorch官网获取。之后就是安装mmcv-full,这里要注意,必须安装mmcv-full而不是mmcv,因为前者包含CUDA算子,对检测模型至关重要。安装命令类似这样:pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html。你需要把{cu_version}换成你的CUDA版本(如cu101),{torch_version}换成你的PyTorch版本(如torch1.7.0)。这一步如果网络不畅可能会慢一些,耐心等待即可。
完成这些基础依赖后,我们就可以克隆mmdetection的代码库了:git clone https://github.com/open-mmlab/mmdetection.git。进入目录后,推荐以“可编辑”模式安装:pip install -v -e .。这个-e参数意味着你后续修改库里的源代码(比如我们后面要改类别名文件)会立刻生效,非常方便开发和调试。至此,你的开发环境就基本就绪了。我建议在继续下一步之前,跑一下官方提供的demo测试脚本,验证安装是否成功,这能提前排除掉大部分环境问题。
2. 准备你的自定义数据集:VOC格式详解
模型框架准备好了,接下来就是“喂”给模型的数据。mmdetection原生支持COCO和VOC两种数据集格式。对于我们自己标注的数据,VOC格式是更简单、更常见的选择。它的结构非常清晰,像一棵树,我们只要把自己的数据“修剪”成同样的形状就行。
VOC格式的根目录通常命名为VOCdevkit,里面按年份分文件夹(比如VOC2007),这个年份文件夹下又包含几个关键子文件夹:Annotations、JPEGImages、ImageSets/Main。JPEGImages里放所有的原始图片(.jpg格式)。Annotations里放每个图片对应的XML标注文件,这个文件里记录了图片尺寸、以及每个目标物体的类别和边界框坐标。Ima


9403

被折叠的 条评论
为什么被折叠?



