前言
兜兜转转试了好多框架与算法,从软件再到代码,中途有许多问题,从 ArcGIS Pro 再到 Tensorflow 的 Mask-RCNN,再到 Detectron2 。
目标检测与目标分割
目标分割
建筑物轮廓的提取属于目标分割(实例分割)的一种,与目标检测不同,不仅要框出目标所在的位置,还要以 mask 的形式框出物体的轮廓。
上图是 Detectron2 中采用 Mask-RCNN 算法提取建筑物的轮廓,包含了 mask 和 bounding box 以及 possible,当然,这仅仅是 RGB 三通道的数据训练后的结果,也可以加入更多的 channels,包括点云数据、高光谱的数据,数据量大后,也会带来一系列的问题。
目前比较常用的算法包括 U-Net(医学图像分割的鼻祖),Mask-RCNN…
目标分割
目标检测是检测物体所在的位置,并且框出其所在的位置。
下图是 Yolov5 (目标检测)算法检测出的物体,其并没有将 mask 给标出来。
常见的算法包括 Yolo、SSD…
算法部署
Mask-RCNN 算法
深度学习由于环境配置较为繁琐,除了常见的显卡驱动和 CUDA、CUDNN 的问题之外,还存在 Python 虚拟环境、各种 packages 的版本匹配的问题。
常见的深度学习框架通常用 Pytorch、Tensorflow 写,而 Tensorflow 的显存使用明显比 Pytorch 高,而且,Tensorflow 通常存在 tf 1.x 和 tf2.x 版本的问题,所以之前使用 tensorflow 版本的 mask-RCNN 存在许多问题,
关于 tensorflow 的 mask-RCNN 在之前的 demo 跑通已经有所记录(Colab 由于文件存于 Drive 中分享不方便,即不分享),而 tensorflow 版本的 mask-RCNN 对于 tensorflow-gpu
和 keras
的版本有较高的要求,配置起来较为麻烦,此外,其 mask 的轮廓提取相较于其他算法的提取较为不准确,所以采用其他框架(Pytorch)的 Mask-RCNN.
2. Detectron2
跑通 Demo
Detectron2 是 facebook 研究部门的一款深度学习的综合集成框架,其包括了目标检测和目标分割的算法,其包括不同格式(coco、PascalVOC)格式的目标检测和目标分割的算法,在其 configs
文件中存在许多文件。主要就是不同算法的 yaml 文件(许可权重)
关于 Detectron2 算法,官方有一个 Colab 教程文件,在 Github 中搜索 Detectron2 ,在 Getstarted 部分中的 Colab Notebook 部分打开即可跑通官方的代码,当然,官