日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Mask R-CNN用于目标检测和分割代码实现

發(fā)布時(shí)間:2023/11/28 生活经验 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mask R-CNN用于目标检测和分割代码实现 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Mask R-CNN用于目標(biāo)檢測(cè)和分割代碼實(shí)現(xiàn)

Mask R-CNN for object detection and instance segmentation on Keras and TensorFlow

代碼鏈接:https://github.com/matterport/Mask_RCNN

這是基于Python 3,Keras和TensorFlow 的Mask R-CNN的實(shí)現(xiàn)。該模型為圖像中對(duì)象的每個(gè)實(shí)例生成邊界框和分割masks。基于功能金字塔網(wǎng)絡(luò)Feature Pyramid Network(FPN)和ResNet101主干網(wǎng)。

該存儲(chǔ)庫包括:

基于FPN和ResNet101構(gòu)建的Mask R-CNN的源代碼。
MS COCO的訓(xùn)練代碼
MS COCO的預(yù)訓(xùn)練權(quán)重
Jupyter說明文件電腦可在每個(gè)步驟可視化檢測(cè)管線
用于多GPU訓(xùn)練的Parallel Model類
評(píng)估MS COCO指標(biāo)(AP)
自主數(shù)據(jù)集訓(xùn)練示例

該代碼已記錄并設(shè)計(jì)為易于擴(kuò)展。如果在研究中使用,請(qǐng)考慮引用該存儲(chǔ)庫(下面的bibtex)。如果從事3D視覺工作,可能會(huì)發(fā)現(xiàn)最近發(fā)布的Matterport3D數(shù)據(jù)集也很有用。該數(shù)據(jù)集是由客戶捕獲的3D重構(gòu)空間創(chuàng)建的,這些客戶同意將其公開提供給學(xué)術(shù)用途。可以在此處看到更多示例。

開始啟動(dòng)

demo.ipynb是最簡(jiǎn)單的啟動(dòng)方法。顯示了一個(gè)示例,該示例使用在MS COCO上進(jìn)行預(yù)訓(xùn)練的模型來分割自己的圖像中的對(duì)象。包括在任意圖像上運(yùn)行對(duì)象檢測(cè)和實(shí)例分割的代碼。
train_shapes.ipynb顯示了如何在自己的數(shù)據(jù)集上訓(xùn)練Mask R-CNN。本說明文件介紹了玩具數(shù)據(jù)集(形狀),以演示對(duì)新數(shù)據(jù)集的訓(xùn)練。
(model.py,utils.py,config.py):這些文件包含主要Mask RCNN實(shí)現(xiàn)。
inspect_data.ipynb。該說明文件可視化了準(zhǔn)備訓(xùn)練數(shù)據(jù)的不同預(yù)處理步驟。
inspect_model.ipynb本說明文件深入介紹了檢測(cè)和分割對(duì)象所執(zhí)行的步驟。提供了管道中每個(gè)步驟的可視化。
inspect_weights.ipynb 此說明文件檢查經(jīng)過訓(xùn)練的模型的權(quán)重,并查找異常和奇數(shù)模式。

逐步檢測(cè)

為了幫助調(diào)試和理解模型,共有3個(gè)說明文件(inspect_data.ipynb,inspect_model.ipynb, inspect_weights.ipynb)提供了很多可視化效果,并允許逐步運(yùn)行模型以檢查每個(gè)點(diǎn)的輸出。這里有一些例子:

  1. 錨點(diǎn)排序和過濾

可視化第一階段區(qū)域提議網(wǎng)絡(luò)的每個(gè)步驟,并顯示正錨和負(fù)錨以及錨框的細(xì)化。

  1. 邊界框優(yōu)化

這是最終檢測(cè)框(虛線)的示例,在第二階段對(duì)其進(jìn)行了改進(jìn)(實(shí)線)。

  1. 遮罩生成

生成的masks示例。然后將縮放并放置在正確位置的圖像上。

  1. 分層激活

通常,檢查不同層的激活以查找故障跡象(全零或隨機(jī)噪聲)通常很有用。

  1. 重量直方圖

另一個(gè)有用的調(diào)試工具是檢查重量直方圖。這些都包含在inspect_weights.ipynb說明文件中。

6.登錄到TensorBoard

TensorBoard是另一個(gè)出色的調(diào)試和可視化工具。該模型配置為記錄損失并在每個(gè)時(shí)期結(jié)束時(shí)節(jié)省權(quán)重。

7.將不同的部分組合成最終結(jié)果

MS COCO訓(xùn)練

正在為MS COCO提供預(yù)訓(xùn)練的權(quán)重,以使其易于啟動(dòng)。可以將這些權(quán)重用作在網(wǎng)絡(luò)上訓(xùn)練自己的變體的起點(diǎn)。訓(xùn)練和評(píng)估代碼在中samples/coco/coco.py。可以在Jupyter說明文件中導(dǎo)入此模塊(有關(guān)示例,請(qǐng)參閱提供的說明文件),也可以直接從命令行運(yùn)行,如下所示:

# Train a new model starting frompre-trained COCO weights

python3 samples/coco/coco.py train
–dataset=/path/to/coco/ --model=coco

# Train a new model starting from ImageNetweights

python3 samples/coco/coco.py train
–dataset=/path/to/coco/ --model=imagenet

# Continue training a model that you hadtrained earlier

python3 samples/coco/coco.py train
–dataset=/path/to/coco/ --model=/path/to/weights.h5

# Continue training the last model you
trained. This will find

# the last trained weights in the model
directory.

python3 samples/coco/coco.py train
–dataset=/path/to/coco/ --model=last

還可以使用以下命令運(yùn)行COCO評(píng)估代碼:

# Run COCO evaluation on the last trained
model

python3 samples/coco/coco.py evaluate
–dataset=/path/to/coco/ --model=last

訓(xùn)練時(shí)間表,學(xué)習(xí)率和其參數(shù)應(yīng)在中設(shè)置samples/coco/coco.py。

訓(xùn)練自己的數(shù)據(jù)集

首先閱讀有關(guān)氣球顏色飛濺示例的博客文章。涵蓋了從注釋圖像到訓(xùn)練再到在示例應(yīng)用程序中使用結(jié)果的過程。

總之,要在自己的數(shù)據(jù)集上訓(xùn)練模型,需要擴(kuò)展兩個(gè)類:

Config 此類包含默認(rèn)配置。對(duì)其進(jìn)行子類化,然后修改需要更改的屬性。

Dataset 此類提供了使用任何數(shù)據(jù)集的一致方式。允許使用新的數(shù)據(jù)集進(jìn)行訓(xùn)練,而無需更改模型的代碼。還支持同時(shí)加載多個(gè)數(shù)據(jù)集,如果要檢測(cè)的對(duì)象在一個(gè)數(shù)據(jù)集中并非全部可用,這將很有用。

見例子samples/shapes/train_shapes.ipynb,samples/coco/coco.py,samples/balloon/balloon.py,和samples/nucleus/nucleus.py。

與官方文件的差異

此實(shí)現(xiàn)大部分遵循Mask RCNN論文,但是在少數(shù)情況下,偏向于代碼簡(jiǎn)單和通用化。這些是知道的一些差異。如果遇到其差異,請(qǐng)告訴。

圖像調(diào)整大小:為了支持每批訓(xùn)練多幅圖像,將所有圖像調(diào)整為相同大小。例如,在MS COCO上為1024x1024px。保留寬高比,因此,如果圖像不是正方形,則將其填充為零。在本文中,進(jìn)行了調(diào)整大小,以使最小的一面為800像素,最大的一面為1000像素。
邊界框:某些數(shù)據(jù)集提供邊界框,而某些數(shù)據(jù)集僅提供masks。為了支持對(duì)多個(gè)數(shù)據(jù)集的訓(xùn)練,選擇忽略數(shù)據(jù)集隨附的邊界框,而是動(dòng)態(tài)生成。選擇封裝masks所有像素的最小框作為邊界框。這簡(jiǎn)化了實(shí)現(xiàn),并且還使圖像增強(qiáng)很容易應(yīng)用,否則圖像增強(qiáng)將很難應(yīng)用于邊界框,例如圖像旋轉(zhuǎn)。

為了驗(yàn)證這種方法,將計(jì)算出的邊界框與COCO數(shù)據(jù)集提供的邊界框進(jìn)行了比較。發(fā)現(xiàn)?2%的邊界框相差1px或更多,?0.05%的邊界相差5px或更多,只有0.01%的相差10px或更多。

學(xué)習(xí)率:本文使用的學(xué)習(xí)率是0.02,但發(fā)現(xiàn)該值太高,通常會(huì)導(dǎo)致權(quán)重爆炸,尤其是在使用小批量時(shí)。這可能與Caffe和TensorFlow計(jì)算梯度之間的差異(批次與GPU之間的總和與均值)之間的差異有關(guān)。或者,也許官方模型使用漸變修剪來避免此問題。確實(shí)使用了梯度裁剪,但不要設(shè)置得太過激。發(fā)現(xiàn),較小的學(xué)習(xí)率無論如何都會(huì)收斂得更快,因此繼續(xù)這樣做。

引文

使用以下bibtex引用此存儲(chǔ)庫:

@misc{matterport_maskrcnn_2017,

title={Mask R-CNN for object detection and instance segmentation on
Keras and TensorFlow},

author={Waleed Abdulla},

year={2017},

publisher={Github},

journal={GitHub repository},

howpublished={\url{https://github.com/matterport/Mask_RCNN}},

}

貢獻(xiàn)

歡迎對(duì)該存儲(chǔ)庫做出貢獻(xiàn)。可以做出貢獻(xiàn)的示例:

速度改進(jìn)。就像在TensorFlow或Cython中重寫一些Python代碼一樣。
訓(xùn)練其數(shù)據(jù)集。
精度提高。
可視化和示例。

也可以加入團(tuán)隊(duì),并幫助建立更多像這樣的項(xiàng)目。

要求

列出了Python 3.4,TensorFlow 1.3,Keras 2.0.8和其常見軟件包requirements.txt。

MS COCO要求:

要對(duì)MS COCO進(jìn)行訓(xùn)練或測(cè)試,還需要:

pycocotools(下面的安裝說明)
MS COCO數(shù)據(jù)集
下載5K minival 和35K 驗(yàn)證減去最小值 子集。更多詳細(xì)信息,請(qǐng)參見原始的Faster R-CNN實(shí)現(xiàn)。

如果使用Docker,則代碼已通過驗(yàn)證可在此Docker容器上工作 。

安裝

copy此存儲(chǔ)庫
安裝依賴

pip3 install -r requirements.txt

從存儲(chǔ)庫根目錄運(yùn)行安裝程序

python3 setup.py安裝

從發(fā)布頁面下載預(yù)訓(xùn)練的COCO權(quán)重(mask_rcnn_coco.h5)。
(可選)pycocotools從這些存儲(chǔ)庫之一中進(jìn)行MS COCO安裝的訓(xùn)練或測(cè)試。是原始pycocotools的分支,具有針對(duì)Python3和Windows的修復(fù)(官方倉庫似乎不再處于活動(dòng)狀態(tài))。

Linux:https://github.com/waleedka/coco
Windows:https://github.com/philferriere/cocoapi。路徑上必須具有Visual C ++ 2015生成工具(有關(guān)更多詳細(xì)信息,請(qǐng)參見repo)

總結(jié)

以上是生活随笔為你收集整理的Mask R-CNN用于目标检测和分割代码实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。