PyTorch實(shí)現(xiàn),GitHub 4000星:這是微軟開源的計(jì)算機(jī)視覺庫
近年來,計(jì)算機(jī)視覺領(lǐng)域突飛猛進(jìn),在人臉識(shí)別、圖像理解、搜索、無人機(jī)、地圖、半自動(dòng)和自動(dòng)駕駛方面得到廣泛應(yīng)用。而這些應(yīng)用的核心部分是視覺識(shí)別任務(wù),如圖像分類、目標(biāo)檢測和圖像相似度。
在各種計(jì)算機(jī)視覺模型和應(yīng)用層出不窮的當(dāng)下,如何把握發(fā)展脈絡(luò),跟進(jìn)領(lǐng)域前沿發(fā)展呢?微軟創(chuàng)建了一個(gè)庫,提供構(gòu)建計(jì)算機(jī)視覺系統(tǒng)的大量示例和最佳實(shí)踐指導(dǎo)原則。
項(xiàng)目地址:https://github.com/microsoft/computervision-recipes
這個(gè)庫旨在構(gòu)建一個(gè)全面的集合,涵蓋利用了計(jì)算機(jī)視覺算法、神經(jīng)架構(gòu)和系統(tǒng)運(yùn)行方面近期進(jìn)展的工具和示例。
該庫沒有從頭開始創(chuàng)建實(shí)現(xiàn),而是基于已有的 SOTA 庫發(fā)展而來,并圍繞加載圖像數(shù)據(jù)、優(yōu)化和評(píng)估模型、擴(kuò)展至云端構(gòu)建了額外的工具函數(shù)。此外,微軟團(tuán)隊(duì)表示,希望通過該項(xiàng)目回答計(jì)算機(jī)視覺領(lǐng)域的常見問題、指出頻繁出現(xiàn)的缺陷問題,并展示如何利用云進(jìn)行模型訓(xùn)練和部署。
該庫中所有示例以 Jupyter notebooks 和常見工具函數(shù)的形式呈現(xiàn)。所有示例均使用 PyTorch 作為底層深度學(xué)習(xí)庫。
- Jupyter notebooks 地址:https://github.com/microsoft/computervision-recipes/blob/master/scenarios
- 工具函數(shù)地址:https://github.com/microsoft/computervision-recipes/blob/master/utils_cv
目標(biāo)群體
該庫的目標(biāo)群體是具備一定計(jì)算機(jī)視覺知識(shí)背景的數(shù)據(jù)科學(xué)家和機(jī)器學(xué)習(xí)工程師,因?yàn)閹斓膬?nèi)容以 source-only(僅源代碼)的形式呈現(xiàn),支持自定義機(jī)器學(xué)習(xí)建模。這個(gè)庫提供的工具函數(shù)和示例旨在為現(xiàn)實(shí)世界的視覺問題提供解決方案加速器。
示例
該庫支持不同的計(jì)算機(jī)視覺場景,如基于單張圖像運(yùn)行,示例如下:
或基于視頻序列的動(dòng)作識(shí)別等場景,示例如下:
場景
該庫涵蓋常用的計(jì)算機(jī)視覺場景,包含如下類別:
對(duì)于每個(gè)主要場景(base),該項(xiàng)目均提供使用戶高效構(gòu)建自己模型的工具。這需要使用者完成一些任務(wù),如基于自己的數(shù)據(jù)微調(diào)模型的簡單任務(wù),或者難例挖掘甚至模型部署等更復(fù)雜的任務(wù)。
1. 圖像分類任務(wù)
該目錄提供了構(gòu)建圖像分類系統(tǒng)的示例和最佳實(shí)踐,旨在讓用戶能夠在自己的數(shù)據(jù)集上輕松快速地訓(xùn)練高準(zhǔn)確率分類器。
這里提供的示例 notebook 具備預(yù)置的默認(rèn)參數(shù),可以很好地處理多個(gè)數(shù)據(jù)集。該目錄還提供了有關(guān)常見缺陷和最佳實(shí)踐的大量文檔。
此外,該庫還展示了如何使用微軟的云計(jì)算平臺(tái) Azure,加快在大型數(shù)據(jù)集上的訓(xùn)練速度或?qū)⒛P筒渴馂?web 服務(wù)。
2. 圖像相似度
該目錄提供了構(gòu)建圖像相似度系統(tǒng)的示例和最佳實(shí)踐,旨在使用戶能夠基于自己的數(shù)據(jù)集方便快捷地訓(xùn)練高精度模型。
下圖為圖像檢索示例,其中左圖為查詢圖像,右面為與之最相似的 6 幅圖像:
3. 目標(biāo)檢測
該目錄提供了構(gòu)建目標(biāo)檢測系統(tǒng)的示例和最佳實(shí)踐,旨在使用戶能夠基于自己的數(shù)據(jù)集方便快捷地訓(xùn)練高準(zhǔn)確率模型。
該庫使用了 torchvision 的 Faster R-CNN 實(shí)現(xiàn),它被證明能夠很好地處理多種計(jì)算機(jī)視覺問題。
項(xiàng)目作者建議使用者在具備 GPU 的機(jī)器上運(yùn)行示例,雖然 GPU 在技術(shù)層面上并非必需,但是如果不使用 GPU,即使只用幾十個(gè)圖像,訓(xùn)練過程也會(huì)變得非常緩慢。
4. 關(guān)鍵點(diǎn)檢測
該目錄包含構(gòu)建關(guān)鍵點(diǎn)檢測系統(tǒng)的示例和最佳實(shí)踐指導(dǎo)原則,并展示了如何使用預(yù)訓(xùn)練模型進(jìn)行人體姿勢估計(jì)。
該目錄使用了 Mask R-CNN 的擴(kuò)展,可以同時(shí)檢測物體及其關(guān)鍵點(diǎn)。其底層技術(shù)與上述目標(biāo)檢測方法類似,即基于 Torchvision 的 Mask R-CNN。
5. 圖像分割
該目錄提供了構(gòu)建圖像分割系統(tǒng)的示例和最佳實(shí)踐,旨在使用戶能夠基于自己的數(shù)據(jù)集方便快捷地訓(xùn)練高準(zhǔn)確率模型。
這里的實(shí)現(xiàn)使用了 fastai 的 UNet 模型,其中 CNN 主干(如 ResNet)在 ImageNet 數(shù)據(jù)集上經(jīng)過預(yù)訓(xùn)練,因此使用者只需少量標(biāo)注訓(xùn)練樣本就可以對(duì)其進(jìn)行微調(diào)。
6. 動(dòng)作識(shí)別
該目錄包含構(gòu)建基于視頻的動(dòng)作識(shí)別系統(tǒng)所需要的資源,旨在使用戶能夠在自定義數(shù)據(jù)集上輕松快速地訓(xùn)練出高準(zhǔn)確率的快速模型。
動(dòng)作識(shí)別(也叫「活動(dòng)識(shí)別」)包括從一系列幀中對(duì)多種動(dòng)作進(jìn)行分類,例如「閱讀」或「飲酒」:
動(dòng)作識(shí)別是一個(gè)熱門的研究領(lǐng)域,每年都有大量的方法發(fā)表。其中一個(gè)突出的方法是 R(2+1)D 模型,它能夠獲得高準(zhǔn)確率,且比其他方法快得多。(參見論文《Large-scale weakly-supervised pre-training for video action recognition》)
該目錄中的實(shí)現(xiàn)和預(yù)訓(xùn)練權(quán)重均基于這個(gè) GitHub 庫(https://github.com/moabitcoin/ig65m-pytorch),并添加了一些功能,以使自定義模型的訓(xùn)練和評(píng)估更加用戶友好。這里在預(yù)訓(xùn)練時(shí)使用的是 IG-Kinetics 數(shù)據(jù)集。
7. 多目標(biāo)跟蹤
該目錄提供了構(gòu)建和推斷多目標(biāo)跟蹤系統(tǒng)的示例和最佳實(shí)踐,旨在使用戶能夠基于自定義數(shù)據(jù)集輕松訓(xùn)練高準(zhǔn)確率跟蹤模型。
該庫集成了 FairMOT 跟蹤算法,該算法在近期的 MOT 基準(zhǔn)測試中表現(xiàn)出了很強(qiáng)的跟蹤性能,同時(shí)也推理速度也很快。
8. 人群計(jì)數(shù)
該目錄提供了多個(gè)人群計(jì)數(shù)算法的 production-ready 版本,不同算法被統(tǒng)一在一組一致性 API 下。
對(duì)多個(gè)基于專用數(shù)據(jù)集的人群計(jì)數(shù)模型實(shí)現(xiàn)進(jìn)行評(píng)估后,該項(xiàng)目將模型范圍縮小到兩個(gè)選項(xiàng):Multi Column CNN model (MCNN) 和 OpenPose 模型。二者均符合速度要求。
- 對(duì)于高密度人群圖像,MCNN 模型取得了良好的效果;
- 對(duì)于低密度場景,OpenPose 表現(xiàn)良好。
- 而當(dāng)人群密度未知時(shí),該項(xiàng)目采用啟發(fā)式方法。在滿足以下條件時(shí)使用 MCNN 進(jìn)行預(yù)測:OpenPose 預(yù)測大于 20,MCNN 大于 50。反之,則使用 OpenPose 預(yù)測。模型的閾值可以根據(jù)使用者的場景進(jìn)行更改。
此外,該目錄還展示了依賴項(xiàng)、安裝過程、測試及性能。