目录
序言
最近几年深度学习大火,AI渗透各个行业领域,也涌现了大批AI从业者,可是在最近两年中已经开始趋近于饱和,就业也开始严谨起来,对于将来的展望,让人不由联想起java的岗位,一份招聘上百份投递。好了,废话很少说,今天要讲的是CV方向的各类工具包,为何叫作失业大礼包,其实很容易想象,这类工具包一出,对于项目需求,扔点数据进去,也许就是调个库就能够实现,那么CV调参侠也将无用武之地,固然失业工具包这只是调侃,若是不想被行业淘汰,掌握这类工具箱是必要的,一方面里面已经涵盖了各类模型,能够大大的提升工做效率,另外一方面经过对这些模型的理解,也可以更好的提高本身。php
1、目标检测工具箱
1.1 mmdetection
mmdetection是由商汤科技和香港中文大学开源的一个基于Pytorch实现的深度学习目标检测工具箱,这个工具箱很是的强大,支持Faster-RCNN,Mask-RCNN,Fast-RCNN、Cascade-RCNN、SSD等主流的目标检测框架,目前已经更新到2.0版本,支持的主流算法也很是多,是目前最大最全的模型库。
java
截至 2020 年 5 月底,MMDetection 官方模型库已经支持了35篇论文中的算法,提供了超过 250 个预训练模型,是目标检测领域最大规模的模型库。除此以外,还有 16 篇论文在 Github 上开源了基于 MMDetection 的代码。目前官方支持的算法如图所示:
在博主看来,mmdetection的价值不只在工程上,在学术上不少新开源的高性能、高mAP检测算法都是基于mmdetection编写,例如现阶段目标检测COCO mAP榜一的DetectoRS(mAP 54.7)就是基于 MMDetection 的代码。
git
使用环境:github
- Pytorch1.3 +
- Linux(官方不支持Windows,可是网上有相关教程)
- Python3.6 +
相关连接:算法
1.2 Detectron2
Detectron是构建在Caffe2和Python之上计算机视觉库,集成了多项计算机视觉最新成果,一经发布广受好评。去年10月份,Facebook AI研究院又开源了Detectron的升级版,也就是接下来咱们要介绍的:Detectron2。windows
Detectron2是和mmdetection对齐的目标检测工具箱,一样很是强大,集合了不少算法,与mmdetection号称打比赛的两大神器。
跨域
Detectron2 是 Facebook AI Research 推出的第二代CV库,它不但进一步集成了最新的目标检测算法,,并且是对先前版本 Detectron 的彻底重写,号称目标检测三大开源神器之一(Detectron2/mmDetection/SimpleDet)。源自最初的maskrcnn-benchmark库。微信
与 mmdetection 、TensorFlow Object Detection API同样,Detectron2 也是经过配置文件来设置各类参数,从而实现当前最优的目标检测效果。它支持与目标检测有关的一系列任务。和以前的 Detectron 相比,它也支持目标检测、实例分割、人体姿态估计等任务。此外,Detectron2 还支持语义分割和全景分割。网络
Detectron2包含了一代可用的全部模型,并加入了一些新模型,现支持的模型主要有:架构
- Faster R-CNN
- Mask R-CNN
- RetinaNet
- DensePose
- Cascade R-NN
- Panoptic FPN
- TensorMask
具体介绍请移步:Detectron2模型介绍
使用环境:
- Pytorch1.3
- Linux
- Python3.6 +
相关连接:
1.3 SimpleDet
SimpleDet是由图森将来开源的一套简单通用的目标检测与物体识别框架,整套框架基于MXNet的原生API完成。对于学习MXNet或者对其感兴趣的能够来使用SimpleDet。
一样的,SimpleDet和前面两个开源工具箱同样,支持众多的目标检测算法,并且提供了不少不一样头部的实现和预训练模型,目前支持的算法主要有:
- Faster-RCNN
- Mask-RCNN
- Cascade-RCNN
- RetinaNet
- DCNv1/v2
- TridentNet
具体介绍请移步:SimpleDet模型介绍
使用环境:
- MXNet
- Linux
- Python3.6 +
相关连接:
1.4 PaddleDetetion
PaddleDetetion是由百度开源的一款深度学习目标检测框架,代码的编写基于百度自研的深度学习框架Paddle,该开发套件覆盖了主流的目标检测算法并提供丰富的预训练模型。若是有感兴趣支持国产的可使用PaddleDetetion,并且近些日子,百度为了推广本身的平台,作了不少推广工做,公开了不少课程以及资源,很是适合小白入门白嫖。
相比 TensorFlow 或 PyTorch,PaddlePaddle 拥有最大的官方模型库,也就是说飞桨团队会花费大量精力维护这些模型,以保证它们的性能最优、API 最新、易用性最好。事实上Paddle已经在国内建起了很是活跃的社区,你甚至在使用Paddle时遇到了问题能够直接去询问百度的专业开发人员,仍是很不错的,虽然Paddle常常被torch和tf用户看不起,可是也不至于这么不堪。
PaddleDetection 的目的是为工业界和学术界提供丰富、易用的目标检测模型。在最近一次更新中,能够看到 PaddleDetection 优化了不少主流模型的性能:对YOLOv3的优化,精度提高4.3%,训练提速40%,推理提速21%;以及加入了此前COCO上最优精度的CBNet等。目前PaddleDetection支持的主流算法模型主要有:
新增的模型:
- EfficientDet
- FCOS
- CornerNet-Squeeze
- YOLOv4
详细介绍移步:PaddleDetection模型介绍
使用环境:
- PaddlePaddle 1.7+
- Linux or Windows
- Python3.6+
相关连接:
2、语义分割工具箱
2.1 semantic-segmentation-pytorch
其实这个工具箱我也没用过,不过里面实现了不少的语义分割模型,在github上得到了3.2k的Star,而且是基于Pytorch,使用起来也很方便,感兴趣的同窗能够去看看。
现支持的模型有:
相关连接:
2.2 Semantic-Segmentation-Keras
一样的,这款工具箱也没有名字,由于是基于Keras实现的,因此我就索性标题直接这么称呼了。这款语义分割工具箱是由GiantPandaCV公众号做者BBuf和pprp共同开源和维护,目前已经支持了不少语义分割算法,并且更新频率很是快,而且做者团队正在扩大,相信将来必定可以将这个库作的更加完善,值得期待,若是你在使用这个库时有疑问能够直接加群联系做者进行解疑,社区很活跃。
先已支持的分割模型:
详细介绍移步:Keras-Sematic-Segmentation介绍
使用环境:
- tensorflow 1.8.0/1.13.0
- keras 2.2.4
- GTX 2080Ti/CPU
- Cuda 10.0 + Cudnn7
相关连接:
- github开源代码
- 微信公众号:GiantPandaCV
3、OCR工具箱
3.1 chineseocr_lite
chineseocr_lite是一个超轻量级中文ocr开源项目,代码基于pytorch编写,支持竖排文字识别,支持 ncnn 推理,psenet (8.5M) + crnn (6.3M) + anglenet (1.5M) 总模型仅17M。目前,这个开源项目已在GitHub上标星4800+。
该 chineseocr_lite 项目表示,相比chineseocr(基于 YOLO V3 与 CRNN 实现中文天然场景文字检测及识别),它采用了轻量级的主干网络 PSENet,轻量级的 CRNN 模型和行文本方向分类网络 AngleNet。尽管要实现多种能力,但 chineseocr_lite 整体模型只有 17M。
chineseocr_lite虽然小,可是可以实现的功能却很是强大:
- 提供轻量的 backone 检测模型 psenet(8.5M),crnn_lstm_lite (9.5M) 和行文本方向分类网络(1.5M);
- 任意方向文字检测,识别时判断行文本方向;
- crnn\crnn_lite lstm\dense识别(ocr-dense和ocr-lstm是搬运chineseocr 的);
- 支持竖排文本识别;
- ncnn实现psenet(未实现核扩展);
- ncnn实现crnn_dense(改变了全链接为conv1x1);
- ncnn实现shuuflenev2角度分类网络;
- ncnn实现ocr整个流程;
最近,项目做者对更新了可实现的功能。
- 实现的crnn_lstm推理;
- 升级crnn_lite_lstm_dw.pth模型crnn_lite_lstm_dw_v2.pth , 精度更高;
- 提供竖排文字样例以及字体库(旋转90度的字体)。
这款轻量型的OCR开源项目,无疑是为OCR从业者们提供了便利,若是你是刚入行的OCR算法工程师或者准备入行,能够花点时间好好研究一下。
使用环境:
- Pytorch1.2+
- Linux/Macos/Windows
相关连接:
3.2 PaddleOCR
PaddleOCR是今日百度基于Paddle框架开源的一款超轻量型的OCR工具箱.模型由1个文本检测模型(4.1M)和1个文本识别模型(4.5M)组成,共8.6M。
其中,文本检测模型使用的2020年发表于AAAI上的DB算法,文本识别模型使用经典的CRNN算法。鉴于MobileNetV3在端侧系列模型中的优越表现,两个模型均选择使用MobileNetV3做为骨干网络,可将模型大小初步减小90%以上。
这款工具箱的实现很是强大,而且有百度的专人进行维护,你在使用过程当中若是遇到任何问题,均可以添加他们的微信群进行提问解答。而且结合了百度的模型压缩和部署,能够很好的应用于实际环境中,这对于博主这种pytorch的忠实用户来讲仍是很诱惑的。感兴趣的能够下载下来研究。
详细介绍移步:PaddleOCR
使用环境:
- PaddlePaddle 1.7+
- Linux (暂时不支持windows)
- Python3.6+
相关连接:
- PaddleOCR开源地址
- 详细的训练和模型串联指导
- 用户体验群
4、实例分割工具箱
4.1 AdelaiDet
实例分割你们应该都不陌生了,大名鼎鼎的mask-RCNN,在上诉的每一个检测框架里,都不敢缺乏它,固然除了mask-RCNN之外,还有不少其余的实例分割算法,例如:YOLCAT、PolarMask、SOLO、BlendMask等。
其实在实例分割领域,现阶段使用最多的仍是mask-rcnn(永远滴神啊),若是在项目中要用到,能够直接在上诉的几个检测工具箱中直接使用,可是若是不局限于使用mask-rcnn,能够考虑一下这个实例分割工具箱:AdelaiDet。
AdelaiDet是在Detectron2基础之上编写的实例分割工具箱,目前实现了包括业内最好的实例分割模型SOLOv二、BlendMask等。做者维护的也比较频繁,感兴趣的能够研究研究。
目前该工具箱内支持的模型有:
- FCOS
- BlendMask
- MEInst
- ABCNet
- SOLO to be released (mmdet version)
- SOLOv2 to be released (mmdet version)
- DirectPose to be released
- CondInst to be released
使用环境:
- pytorch1.2+
- Linux
相关连接:
5、重识别工具箱
5.1 FastReID
FastReID是最近由京东研究院开源的重识别框架,是一个 SOTA 级的 ReID 方法集合工具箱,同时面向学术界和工业界落地,此外该团队还发布了在多个不一样任务、多种数据集上的SOTA模型。
FastReID 参照了 Detectron2 的总体概念和设计哲学,设计成了一个高度模块化和可拓展的架构,从而可让研究人员快速的实现新的 idea ;更重要的是,该框架友好的管理系统配置和工程部署函数可让工程师快速的部署它。做者提供了 PyTorch 模型转 Caffe、ONNX 和 TensorRT 的例子和脚本。
另外,做者宣称这是迄今为止最完整的、最高性能的ReID工具箱,支持单卡和多GPU训练,使用简单方便。
FastReID中实现的四大ReID任务:
- 行人重识别
- 部分区域的行人重识别
- 跨域的行人重识别
- 车辆的重识别
不只限于行人,也能够检索车辆等其余物体。
相关连接:
6、GAN工具箱
6.1 Pytorch-GAN
这个基于pytorch的GAN大礼包,是由32种热门GAN的开源代码组成,每一个GAN代码独立分开,很是简洁,并且做者还附带了各类GAN的论文地址,目前该项目在github上已经得到了超过6400+的标星。
实现的32种GAN模型有:
- Auxiliary Classifier GAN
- Adversarial Autoencoder
- BEGAN
- BicycleGAN
- Boundary-Seeking GAN
- Cluster GAN
- Conditional GAN
- Context-Conditional GAN
- Context Encoder
- Coupled GAN
- CycleGAN
- Deep Convolutional GAN
- DiscoGAN
- DRAGAN
- DualGAN
- Energy-Based GAN
- Enhanced Super-Resolution GAN
- GAN
- InfoGAN
- Least Squares GAN
- MUNIT
- Pix2Pix
- PixelDA
- Relativistic GAN
- Semi-Supervised GAN
- Softmax GAN
- StarGAN
- Super-Resolution GAN
- UNIT
- Wasserstein GAN
- Wasserstein GAN GP
- Wasserstein GAN DIV
这么强大的GAN工具箱,看的眼花缭乱,你肯定不要试试?
相关连接:
6.2 Keras-GAN
接下来介绍的这个Keras版本的GAN与上面的同样,一样是集合了众多的GAN模型与一身,而且获得Keras亲爸爸François Chollet在Twitter上的热情推荐,在github上面也得到了超过7000+的标星。
一样的,里面实现了21个GAN模型,与以前的pytorch版本有些重合:
- Auxiliary Classifier GAN
- Adversarial Autoencoder
- Bidirectional GAN
- Boundary-Seeking GAN
- Conditional GAN
- Context-Conditional GAN
- Context Encoder
- Coupled GANs
- CycleGAN
- Deep Convolutional GAN
- DiscoGAN
- DualGAN
- Generative Adversarial Network
- InfoGAN
- LSGAN
- Pix2Pix
- PixelDA
- Semi-Supervised GAN
- Super-Resolution GAN
- Wasserstein GAN
- Wasserstein GAN GP
相关连接:
对于每种GAN的介绍,博主就不写了,由于博主对GAN实在是不太了解,要花太多时间去给你们科普的话也不划算,感兴趣的能够根据相关的连接内容进行学习。
7、未完待续
后面遇到这种类型实用的工具箱会再继续添加更新。