chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

什么是圖像實例分割?常見的圖像實例分割有哪幾種?

英特爾物聯(lián)網(wǎng) ? 來源:英特爾物聯(lián)網(wǎng) ? 作者:英特爾物聯(lián)網(wǎng) ? 2021-06-17 11:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

實例分割概念

圖像實例分割是在對象檢測的基礎上進一步細化,分離對象的前景與背景,實現(xiàn)像素級別的對象分離。所以圖像實例分割是基于對象檢測的基礎上進一步提升。圖像實例分割在目標檢測、人臉檢測、表情識別、醫(yī)學圖像處理與疾病輔助診斷、視頻監(jiān)控與對象跟蹤、零售場景的貨架空缺識別等場景下均有應用。很多人會把圖像語義分割跟實例分割搞混淆,其實圖像的語義分割(Semantic Segmentation)與圖像的實例分割(Instance Segmentation)是兩個不同的概念,看下圖:

pYYBAGDKv6uAYBy_AAB9o95sMt0452.jpg

圖-1(來自COCO數(shù)據(jù)集論文)

左側是圖像語義分割的結果,幾個不同的類別人、羊、狗、背景分別用不同的顏色表示;右側是圖像實例分割的結果,對每只羊都用不同的顏色表示,而且把每個對象從背景中分離出來。這個就是語義分割跟實例分割的區(qū)別,直白點可以說就是語義分割是對每個類別、實例分割是針對每個對象(多個對象可能屬于同一個類別)。

常見的實例分割網(wǎng)絡

Mask-RCNN實例分割網(wǎng)絡

圖像實例分割是在對象檢測的基礎上再多出個基于ROI的分割分支,基于這樣思想的實例分割Mask-RCNN就是其經(jīng)典代表,它的網(wǎng)絡結構如下:

poYBAGDKv6OAFLpIAAEu3WLlC-Q575.jpg

圖-2(來自Mask-RCNN的論文)

Mask-RCNN可以簡單地認為是Faster-RCNN的基礎上加上一個實例分割分支。

RetinaMask實例分割網(wǎng)絡

RetinaMask可以看成RetinaNet對象檢測網(wǎng)絡跟Mask-RCNN實例分割網(wǎng)絡的兩個優(yōu)勢組合,基于特征金字塔實現(xiàn)了更好的Mask預測,網(wǎng)絡結構圖示如下:

poYBAGDKv5yACaWHAAEuFuxGlNc218.jpg

圖-3(來自RetinaMask論文)

PANet實例分割網(wǎng)絡

PANet主要工作是基于Mask-RCNN網(wǎng)絡上改進所得,作者通過改進Backbone部分提升了特征提取能力,通過自適應的池化操作得到更多融合特征,基于全鏈接融合產(chǎn)生mask,最終取得了比Mask-RCNN更好的實例分割效果,該模型的結構如下:

pYYBAGDKv5WAFU5XAAFrIFAWag0086.jpg

圖-4(來自PANet論文)

其中全鏈接特征融合mask分支如下圖:

poYBAGDKv4uAQoRpAACclvcVP18135.jpg

圖-5(來自PANet論文)

YOLACT實例分割網(wǎng)絡

該實例分割網(wǎng)絡也是基于RetinaNet對象檢測網(wǎng)絡的基礎上,添加一個Mask分支,不過在添加Mask分支的時候它的Mask分支設計跟RetinaMask有所不同,該網(wǎng)絡的結構圖示如下:

pYYBAGDKv4WAEUWxAAF74KAjj7A255.jpg

圖-6(來自YOLACT作者論文)

CenterMask實例分割網(wǎng)絡

該實例網(wǎng)絡是基于FCOS對象檢測框架的基礎上,設計一個Mask分支輸出,該Mask分支被稱為空間注意力引導蒙板(Spatial Attention Guided Mask),該網(wǎng)絡的結構如下:

poYBAGDKv36AKwIOAAEWGfj2k_Q871.jpg

圖-7(來自CenterMask論文)

OpenVINO 支持Mask-RCNN模型

OpenVINO 中支持兩種實例分割模型分別是Mask-RCNN與YOLACT模型,其中Mask-RCNN模型支持來自英特爾官方庫文件、而YOLACT則來自公開的第三方提供。我們這里以官方的Mask-RCNN模型instance-segmentation-security-0050為例說明,該模型基于COCO數(shù)據(jù)集訓練,支持80個類別的實例分割,加上背景為81個類別。

OpenVINO 支持部署Faster-RCNN與Mask-RCNN網(wǎng)絡時候輸入的解析都是基于兩個輸入層,它們分別是:

im_data : NCHW=[1x3x480x480]

im_info: 1x3 三個值分別是H、W、Scale=1.0

輸出有四個,名稱與輸出格式及解釋如下:

name: classes, shape: [100, ] 預測的100個類別可能性,值在[0~1]之間

name: scores: shape: [100, ] 預測的100個Box可能性,值在[0~1]之間

name: boxes, shape: [100, 4] 預測的100個Box坐標,左上角與右下角,基于輸入的480x480

name: raw_masks, shape: [100, 81, 28, 28] Box ROI區(qū)域的實例分割輸出,81表示類別(包含背景),28x28表示ROI大小,注意:此模型輸出大小為14x14

模型實例分割代碼演示

因為模型的加載與推理部分的代碼跟前面系列文章的非常相似,這里就不再給出。代碼演示部分重點在輸出的解析,為了簡化,我用了兩個for循環(huán)設置了輸入與輸出數(shù)據(jù)精度,然后直接通過hardcode的輸出層名稱來獲取推理之后各個輸出層對應的數(shù)據(jù)部分,首先獲取類別,根據(jù)類別ID與Box的索引,直接獲取實例分割mask,然后隨機生成顏色,基于mask實現(xiàn)與原圖BOX ROI的疊加,產(chǎn)生了實例分割之后的效果輸出。解析部分的代碼首先需要獲取推理以后的數(shù)據(jù),獲取數(shù)據(jù)的代碼如下:

float w_rate = static_cast(im_w) / 480.0;

float h_rate = static_cast(im_h) / 480.0;

auto scores = infer_request.GetBlob("scores");

auto boxes = infer_request.GetBlob("boxes");

auto clazzes = infer_request.GetBlob("classes");

auto raw_masks = infer_request.GetBlob("raw_masks");

const float* score_data = static_cast::value_type*>(scores->buffer());

const float* boxes_data = static_cast::value_type*>(boxes->buffer());

const float* clazzes_data = static_cast::value_type*>(clazzes->buffer());

const auto raw_masks_data = static_cast::value_type*>(raw_masks->buffer());

const SizeVector scores_outputDims = scores->getTensorDesc().getDims();

const SizeVector boxes_outputDims = boxes->getTensorDesc().getDims();

const SizeVector mask_outputDims = raw_masks->getTensorDesc().getDims();

const int max_count = scores_outputDims[0];

const int object_size = boxes_outputDims[1];

printf("mask NCHW=[%d, %d, %d, %d] ", mask_outputDims[0], mask_outputDims[1], mask_outputDims[2], mask_outputDims[3]);

int mask_h = mask_outputDims[2];

int mask_w = mask_outputDims[3];

size_t box_stride = mask_h * mask_w * mask_outputDims[1];

然后根據(jù)輸出數(shù)據(jù)格式開始解析Box框與Mask,這部分的代碼如下:

for (int n = 0; n < max_count; n++) {

float confidence = score_data[n];

float xmin = boxes_data[n*object_size] * w_rate;

float ymin = boxes_data[n*object_size + 1] * h_rate;

float xmax = boxes_data[n*object_size + 2] * w_rate;

float ymax = boxes_data[n*object_size + 3] * h_rate;

if (confidence > 0.5) {

cv::Scalar color(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255));

cv::Rect box;

float x1 = std::max(0.0f, xmin), static_cast(im_w));

float y1 = std::max(0.0f, ymin), static_cast(im_h));

float x2 = std::max(0.0f, xmax), static_cast(im_w));

float y2 = std::max(0.0f, ymax), static_cast(im_h));

box.x = static_cast(x1);

box.y = static_cast(y1);

box.width = static_cast(x2 - x1);

box.height = static_cast(y2 - y1);

int label = static_cast(clazzes_data[n]);

std::cout << "confidence: " << confidence << " class name: " << coco_labels[label] << std::endl;

// 解析mask

float* mask_arr = raw_masks_data + box_stride * n + mask_h * mask_w * label;

cv::Mat mask_mat(mask_h, mask_w, CV_32FC1, mask_arr);

cv::Mat roi_img = src(box);

cv::Mat resized_mask_mat(box.height, box.width, CV_32FC1);

cv::resize(mask_mat, resized_mask_mat, cv::Size(box.width, box.height));

cv::Mat uchar_resized_mask(box.height, box.width, CV_8UC3, color);

roi_img.copyTo(uchar_resized_mask, resized_mask_mat <= 0.5);

cv::addWeighted(uchar_resized_mask, 0.7, roi_img, 0.3, 0.0f, roi_img);

cv::putText(src, coco_labels[label].c_str(), box.tl() + (box.br() - box.tl()) / 2, cv::FONT_HERSHEY_PLAIN, 1.0, cv::Scalar(0, 0, 255), 1, 8);

}

}

其中Mask部分的時候有個技巧的地方,首先獲取類別,然后根據(jù)類別,直接獲取Mask中對應的通道數(shù)據(jù)生成二值Mask圖像,添加上顏色,加權混合到ROI區(qū)域即可得到輸出結果。

責任編輯:lq6

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 圖像
    +關注

    關注

    2

    文章

    1096

    瀏覽量

    42264

原文標題:OpenVINO? 實現(xiàn)圖像實例分割

文章出處:【微信號:英特爾物聯(lián)網(wǎng),微信公眾號:英特爾物聯(lián)網(wǎng)】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    CW32單片機支持哪幾種開發(fā)環(huán)境,比較常用的MDK支持嗎?

    CW32單片機支持哪幾種開發(fā)環(huán)境,比較常用的MDK支持嗎。 若使用MDK開發(fā),是否也需要下載芯片包,導入到MDK中?xxx32的庫可以用嗎。
    發(fā)表于 01-26 06:14

    請問單片機開發(fā)的程序設計語言主要有哪幾種?

    單片機開發(fā)的程序設計語言主要有哪幾種?
    發(fā)表于 01-14 08:29

    SAM(通用圖像分割基礎模型)丨基于BM1684X模型部署指南

    前言SAM是Meta提出的一個分割一切的提示型模型,其在1100萬張圖像上訓練了超過10億個掩碼,實現(xiàn)了強大的零樣本泛化,突破了分割界限。本例程對SAM官方開源倉庫的模型和算法進行移植,使之能
    的頭像 發(fā)表于 01-12 16:17 ?171次閱讀
    SAM(通用<b class='flag-5'>圖像</b><b class='flag-5'>分割</b>基礎模型)丨基于BM1684X模型部署指南

    手機板 layout 走線跨分割問題

    初學習layout時,都在說信號線不可跨分割,但是在工作中為了成本不能跨分割似乎也非絕對。 在后續(xù)工作中,跨分割的基礎都是相鄰層一面完整的GND參考,跨
    發(fā)表于 09-16 14:56

    PCB焊盤工藝哪幾種?

    PCB焊盤工藝對元器件焊接可靠性等很關鍵,不同工藝適用于不同場景,常見分類及說明如下:
    的頭像 發(fā)表于 09-10 16:45 ?850次閱讀
    PCB焊盤工藝<b class='flag-5'>有</b><b class='flag-5'>哪幾種</b>?

    迅為RK3576開發(fā)板攝像頭實時推理測試-ppseg?圖像分割

    迅為RK3576開發(fā)板攝像頭實時推理測試-ppseg 圖像分割
    的頭像 發(fā)表于 07-11 14:31 ?794次閱讀
    迅為RK3576開發(fā)板攝像頭實時推理測試-ppseg?<b class='flag-5'>圖像</b><b class='flag-5'>分割</b>

    如何將32個步進伺服驅動器塞進小型板材分割機中?

    板材分割機是工業(yè)制造中常見的裝備。機器的內部空間狹小,如何將多達32個步進伺服驅動器安裝在其中顯得非常困難。本文將通過基于EtherCAT總線的插板式步進伺服驅動器剖析其破解之法!傳統(tǒng)銑刀式板材分割
    的頭像 發(fā)表于 07-08 11:37 ?450次閱讀
    如何將32個步進伺服驅動器塞進小型板材<b class='flag-5'>分割</b>機中?

    【正點原子STM32MP257開發(fā)板試用】基于 DeepLab 模型的圖像分割

    【正點原子STM32MP257開發(fā)板試用】圖像分割 本文介紹了正點原子 STM32MP257 開發(fā)板基于 DeepLab 模型實現(xiàn)圖像分割的項目設計。 DeepLab 模型 DeepL
    發(fā)表于 06-21 21:11

    松下NV一G30錄像機常見故障檢修實例

    電子發(fā)燒友網(wǎng)站提供《松下NV一G30錄像機常見故障檢修實例.pdf》資料免費下載
    發(fā)表于 05-17 17:20 ?0次下載

    如何修改yolov8分割程序中的kmodel?

    ;#039;''實驗平臺:01Studio CanMV K230說明:實現(xiàn)攝像頭圖像采集顯示-裂縫分割-寬度計算'''
    發(fā)表于 04-25 08:22

    RV1126 yolov8訓練部署教程

    YOLOv8 是 ultralytics 公司在 2023 年 1月 10 號開源的基于YOLOV5進行更新的 下一個重大更新版本,目前支持圖像分類、物體檢測和實例分割任務,鑒于Yolov5的良好表現(xiàn),Yolov8在還沒有開源時
    的頭像 發(fā)表于 04-16 14:53 ?1364次閱讀
    RV1126 yolov8訓練部署教程

    labview調用yolo目標檢測、分割、分類、obb

    labview調用yolo目標檢測、分割、分類、obb、pose深度學習,支持CPU和GPU推理,32/64位labview均可使用。 (yolov5~yolov12)
    發(fā)表于 03-31 16:28

    DLPDLCR230NPEVM在運行實例程序時會顯示不太正確的圖像,怎么解決?

    在運行230evm時,有時會發(fā)生這種情況,只會發(fā)出藍光,還有在運行實例程序時會顯示不太正確的圖像。最近剛買了五個230evm,其他幾個都正常,只有一個有這種情況。請問這是投影儀硬件問題嘛。
    發(fā)表于 02-21 09:18

    分布式存儲哪幾種類型?

    分布式存儲哪幾種類型?分布式存儲系統(tǒng)是一種將數(shù)據(jù)分散存儲在多臺獨立節(jié)點上的技術,根據(jù)數(shù)據(jù)模型可分為鍵值存儲、列式存儲、文檔存儲和圖形存儲等類型;按數(shù)據(jù)存儲單位可分為基于文件、塊和對象的存儲;按
    的頭像 發(fā)表于 02-20 11:00 ?1392次閱讀

    FPGA上的圖像處理算法集成與優(yōu)化

    本文詳細介紹了多種圖像處理技術,包括RG/GB單通道提取、亮度和對比度調整、圖像反轉、均值濾波、高斯濾波、圖像銳化、中值濾波、閾值分割、邊緣檢測(Sobel算子)、
    的頭像 發(fā)表于 02-14 13:46 ?1333次閱讀
    FPGA上的<b class='flag-5'>圖像</b>處理算法集成與優(yōu)化