目錄
序言
最近幾年深度學習大火,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、未完待續
後面遇到這種類型實用的工具箱會再繼續添加更新。