国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

Segment Anything量化加速有多強!

英特爾物聯(lián)網 ? 來源:OpenVINO 中文社區(qū) ? 2023-06-11 14:24 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

“分割一切,大家一起失業(yè)!”——近期,這樣一句話在社交媒體上大火!這講的就是 Segment Anything Model(簡稱 “SAM” )。SAM 到底是什么?它具備哪些功能?它真的有這么強大嗎?讓我們一起通過本文了解詳情!

SAM 是一個由 Meta AI 實驗室推出的強大人工智能圖像分割應用,可以自動識別哪些圖像像素屬于一個對象,并且對圖像中各個對象進行自動風格處理,可廣泛用于分析科學圖像、編輯照片等。

SAM 的完整應用由一個圖片編碼器模型(encoder)以及掩碼解碼(mask decoder) + 提示編碼模型(prompt encoder)構成,這兩部分都可以被解析為獨立的靜態(tài)模型。其中大部分的算力負載和推理延時都集中在圖片編碼器任務,因此如果進一步提升圖片編碼器部分的執(zhí)行效率,就成為了 SAM 應用的主要優(yōu)化方向之一。

66ebdbbc-05f2-11ee-962d-dac502259ad0.png

圖:SAM 模型任務pipeline

本次分享將重點演示如何通過 OpenVINO的 NNCF 模型壓縮工具實現對 SAM 編碼器部分的量化壓縮,實現在 CPU 側的性能提升。

01

量化介紹

在正式開始實戰(zhàn)之前,我們不得不提一下量化的概念,量化是指在不改變模型結構的情況下,將模型參數的表達區(qū)間從 FP32 映射到 INT8 或是 INT4 范圍,用更小數值位寬來表示相同的信息,實現對于模型體積的壓縮,降低內存消耗,同時在模型網絡的執(zhí)行過程中,系統(tǒng)會自動調用硬件平臺專門針對低比特數據優(yōu)化的指令集或 kernel 函數,提升性能。

673320bc-05f2-11ee-962d-dac502259ad0.png

圖:SAM不同精度數據的表示位寬

Intel AVX512 VNNI 擴展指令集實現了將原本需要 3 個時鐘周期才能完成的 INT8 矩陣點乘與加法運算壓縮到一個時鐘周期,而在最新的 AMX 指令集更是將多個 VNNI 模塊進行堆疊實現了單周期內成倍的性能提升。

67543ebe-05f2-11ee-962d-dac502259ad0.png

圖:INT8 矩陣點乘與加法運算指令集優(yōu)化

02

NNCF 訓練后量化模式

NNCF 工具的全稱是Neural Network Compression Framework,是 OpenVINO 工具鏈中專門用于模型壓縮加速的方案實現,包含量化,剪枝,二值化等多種模型壓縮算法,調用方式又可以分化為訓練后量化 (PTQ)和訓練時壓縮 (QAT)兩種模式,訓練時壓縮要需要引入原始的訓練腳本和數據集,而訓練后量化則可以直接針對訓練生成模型文件進行壓縮,無需額外的訓練腳本和標注數據集參與,這也是 NNCF 在 OpenVINO 2023.0 正式發(fā)布的新功能特性, 而這個模式也僅僅需要以下步驟便可實現:

1. 準備校驗數據集

這里的校驗數據僅用作量化過程中對數據表示范圍與分布的計算,因此不需要額外的標簽數據,例如在圖像識別任務中,我們僅需要送入 200-300 張左右的圖片文件即可。此外我們還需要定義 DataLoader 對象與 transform_fn 數據轉換函數, DataLoader 用于讀取校驗數據集中的每一個元素,transform_fn 用于將讀取的元素轉化為 OpenVINO 模型推理的直接輸入數據。

 import nncf
calibration_loader = torch.utils.data.DataLoader(...)
def transform_fn(data_item):
  images, _ = data_item
  return images
calibration_dataset = nncf.Dataset(calibration_loader, transform_fn)

向右滑動查看完整代碼

2. 運行模型量化

首先需要導入模型對象,然后通過 nncf.quantize() 接口,將模型對象與校驗數據集綁定開啟量化任務,NNCF 工具可以支持多種模型對象類型,包含openvino.runtime.Model,torch.nn.Module,onnx.ModelProto以及 tensorflow.Module

model = ... #OpenVINO/ONNX/PyTorch/TF object
quantized_model = nncf.quantize(model, calibration_dataset) 

向右滑動查看完整代碼

3.(可選)準確性控制模式

如果發(fā)現 NNCF 在默認模式下的導出的模型準確性下降超過預期,我們也可以使用準確性控制模式(accuracy control)完成訓練后量化,此時我們需要加入帶標簽的測試集數據,用來評估模型在量化過程中哪些 layer 對模型準確性損失的影響(敏感度)比較大,并作為排序依據,依次將這些 layer 回退至原始精度,直到模型符合預期準確性表現。通過這個模式,我們可以在保證模型準確性的情況下,盡可能壓縮模型體積,實現性能和準確性之間的平衡。

04

Segment Anything + NNCF 實戰(zhàn)

接下來讓我們具體一步步看下如何使用 NNCF 的 PTQ 模式完成 SAM encoder 的量化。

1. 定義數據加載器

本示例使用 coco128 作為校驗數據集,其中包含 128 張 .jpg 格式的圖片。由于在量化 ONNX 或 IR 靜態(tài)模型的情況下,數據加載器必須是一個 torch 的 DataLoader 類,因此這里我們需要繼承 torch.utils.data.Dataset 并重新構建一個數據集類,其中必須包含__getitem__方法,用于遍歷數據集中的每一個對象,__len__用于獲取數據集的對象數量,最后再通過 torch.utils.data.DataLoader 方法生成數據加載器。

class COCOLoader(data.Dataset):
  def __init__(self, images_path):
    self.images = list(Path(images_path).iterdir())


  def __getitem__(self, index):
    image_path = self.images[index]
    image = cv2.imread(str(image_path))
    image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
    return image
  
  def __len__(self):
    return len(self.images)
  
coco_dataset = COCOLoader(OUT_DIR / 'coco128/images/train2017')
calibration_loader = torch.utils.data.DataLoader(coco_dataset)

向右滑動查看完整代碼

2. 定義數據格式轉化模塊

下一步是定義數據轉化模塊,我們可以調用之前定義 preprocess_image 函數完成數據的預處理,值得注意的是由于 calibration_loader 模塊返回的單個數據對象為 torch tensor 類型,而 OpenVINO 的 Python 接口不支持該類型數據,我們需要先將其強制轉化為 numpy 格式。

def transform_fn(image_data):
  image = image_data.numpy()
  processed_image = preprocess_image(np.squeeze(image))
  return processed_image


calibration_dataset = nncf.Dataset(calibration_loader, transform_fn)

向右滑動查看完整代碼

3. 運行 NNCF 量化

為了確保量化后的模型準確性,這里我們使用原始的 FP32 ONNX 格式模型作為輸入對象,而不是 FP16 的 IR 格式模型,然后再將該對象送入 nncf.quantize 接口執(zhí)行量化,該函數接口中有幾個比較重要的額外參數:

# Load FP32 ONNX model
model = core.read_model(onnx_encoder_path)
quantized_model = nncf.quantize(model,
                calibration_dataset,
                model_type=nncf.parameters.ModelType.TRANSFORMER,
                preset=nncf.common.quantization.structs.QuantizationPreset.MIXED)
ov_encoder_path_int8 = "sam_image_encoder_int8.xml"
serialize(quantized_model, ov_encoder_path_int8)

向右滑動查看完整代碼

model_type:模型類別,用于開啟特殊的量化策略,例如在類 Transformer 模型中,我們需要優(yōu)先保證模型的準確性。

preset量化模式,默認為 PERFORMANCE,使用對卷積的權重和偏置均采用對稱量化算法,有助于提升模型性能,此處為了提升模型準確性,我們采用 MIXED 模式,采用權重對稱量化,偏置非對稱量化的方法,適合模型中包含非 Relu 或者非對稱的激活層。

由于 SAM encoder 模型的網絡結構比較復雜,而量化過程中我們需要多次遍歷模型每一個 layer 的參數,所以量化耗時相對會長一些,請大家耐心等待。這邊建議使用 32G 以上內存的硬件設備,如果遇到內存不夠的情況,可以通過 subset_size=100 參數,適當降低校驗數據數量。

4. 模型準確性比較

接下來我們比較下 INT8 和 FP16 模型的推理結果:

67cee254-05f2-11ee-962d-dac502259ad0.png6813cb08-05f2-11ee-962d-dac502259ad0.png

左右滑動查看 prompt 模式 FP16 – INT8 結果比較

6851442e-05f2-11ee-962d-dac502259ad0.jpg6872bcda-05f2-11ee-962d-dac502259ad0.jpg

左右滑動查看 auto 模式 FP16 – INT8 結果比較

可以看到在 prompt 和 auto 模式下,INT8 模型的準確性相較 FP16 模型,幾乎沒有任何變化。

注:auto 模式下,mask 將使用隨機生成的顏色。

5. 性能比較

最后我們通過OpenVINO自帶的 benchmark_app 工具比較下性能指標:

[ INFO ] Execution Devices:['CPU']
[ INFO ] Count:      60 iterations
[ INFO ] Duration:     75716.93 ms
[ INFO ] Latency:
[ INFO ]  Median:    14832.33 ms
[ INFO ]  Average:    14780.77 ms
[ INFO ]  Min:      10398.47 ms
[ INFO ]  Max:      16725.65 ms
[ INFO ] Throughput:  0.79 FPS

Benchmark結果(FP16)

[ INFO ] Execution Devices:['CPU']
[ INFO ] Count:      72 iterations
[ INFO ] Duration:     68936.14 ms
[ INFO ] Latency:
[ INFO ]  Median:    11281.87 ms
[ INFO ]  Average:    11162.87 ms
[ INFO ]  Min:      6736.09 ms
[ INFO ]  Max:      12547.48 ms
[ INFO ] Throughput:  1.04 FPS

Benchmark 結果 (INT8)

可以看到在 CPU 端,INT8 模型相較 FP16 提升了大約 30%, 體積從原本的 350MB 壓縮到了 100MB 不到。

05

總結

鑒于 SAM 出色的自動化分割能力,相信未來會有越來越多應用場景會部署這項技術,而在產業(yè)化落地的過程中,開發(fā)者往往最關注的就是性能和準確性之間的平衡,以此獲取成本更優(yōu)的方案。OpenVINO NNCF 工具通過對 Segment Anything encoder 部分的量化壓縮,在幾乎沒有影響模型準確性的情況下,顯著提升模型的運行效率,降低模型占用空間。




審核編輯:劉清

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

    關注

    45

    文章

    3953

    瀏覽量

    142638
  • 人工智能
    +關注

    關注

    1817

    文章

    50098

    瀏覽量

    265372
  • SAM
    SAM
    +關注

    關注

    0

    文章

    118

    瀏覽量

    34396
  • 類加載器
    +關注

    關注

    0

    文章

    6

    瀏覽量

    1030

原文標題:分割一切?Segment Anything量化加速有多強!

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    是德科技以虛擬制造技術加速汽車產業(yè)創(chuàng)新落地

    在汽車產業(yè)加速向電動化、輕量化和智能化轉型的背景下,制造復雜度和研發(fā)周期正面臨前所未有的挑戰(zhàn)。如何在保證質量與安全的前提下,縮短開發(fā)周期、降低試制成本,已成為整車廠與零部件企業(yè)的共同課題。
    的頭像 發(fā)表于 01-27 14:04 ?416次閱讀

    醫(yī)療設備里的 “穩(wěn)” 選手:Trinamic 精準控制有多強

    Trinamic精準控制有多強醫(yī)療設備里的“穩(wěn)”選手在各類醫(yī)療設備的運行邏輯里,“精準”與“穩(wěn)定”是核心剛需。小到藥液輸送、光學定位,大到樣本傳輸、器械驅動,都離不開可靠的運動控制技術
    的頭像 發(fā)表于 01-21 14:45 ?185次閱讀
    醫(yī)療設備里的 “穩(wěn)” 選手:Trinamic 精準控制<b class='flag-5'>有多強</b>?

    國產MXD加速度計有多強?

    測量模塊
    利科夫慣性導航
    發(fā)布于 :2026年01月14日 13:24:29

    小巧身軀,精準感知:走進MEMS加速度計的輕量化高性能時代

    在現代工業(yè)和科技應用中,MEMS加速度計因其獨特的微型化、集成化和高性能特點,正逐步取代傳統(tǒng)加速度計,成為振動監(jiān)測、姿態(tài)感知、運動控制等領域的核心元件。它不僅實現了傳感器尺寸與功耗的大幅降低,更在成本可控的前提下,提供了穩(wěn)定可靠的動態(tài)測量能力,適用于從消費電子到工業(yè)系統(tǒng)的
    的頭像 發(fā)表于 01-13 17:44 ?381次閱讀
    小巧身軀,精準感知:走進MEMS<b class='flag-5'>加速</b>度計的輕<b class='flag-5'>量化</b>高性能時代

    解鎖觸摸的量化密碼:PPS TactileGlove觸覺手套 深度問答

    什么是 PPS TactileGlove 觸覺手套?核心功能(壓力量化 / 握力測量)解析 TactileGlove 是 PPS 公司推出的電容式觸覺傳感手套,核心價值是將無形的 “觸摸交互
    的頭像 發(fā)表于 12-01 15:17 ?488次閱讀
    解鎖觸摸的<b class='flag-5'>量化</b>密碼:PPS TactileGlove觸覺手套 深度問答

    漢威科技薄膜鉑電阻溫度傳感器到底有多強

    測量溫度簡單嗎?簡單卻也不簡單,為了測得準,人類已經努力了上千年!薄膜鉑電阻溫度傳感器到底有多強?為何是高端溫度傳感器的代表?
    的頭像 發(fā)表于 11-28 11:51 ?786次閱讀

    音圈執(zhí)行器有多強?自動化產線用了都說產能漲了?

    音圈執(zhí)行器有多強?自動化產線用了都說產能漲了? “換了音圈執(zhí)行器后,我們產線的日產能直接多了 200 件!” 最近跟一位新能源電池廠的廠長聊天,他這話讓我格外好奇 —— 到底是什么樣的傳動部件,能給
    的頭像 發(fā)表于 10-24 11:23 ?312次閱讀

    CICC2033神經網絡部署相關操作

    在完成神經網絡量化后,需要將神經網絡部署到硬件加速器上。首先需要將所有權重數據以及輸入數據導入到存儲器內。 在仿真環(huán)境下,可將其存于一個文件,并在 Verilog 代碼中通過 readmemh 函數
    發(fā)表于 10-20 08:00

    長城汽車榮獲2025汽車輕量化大會六項大獎

    近日,從2025(第十八屆)汽車輕量化大會傳來消息,長城汽車憑借“新一代超強高性能車身”及系列創(chuàng)新技術,一舉榮獲 6 項大獎,成為同期車身會議和輕量化設計大賽的“大滿貫”獲獎廠商。
    的頭像 發(fā)表于 09-25 14:27 ?702次閱讀

    攻克鋰電池研發(fā)痛點-電解液浸潤量化表征

    分析儀針對鋰電池研發(fā)中的電解液浸潤痛點,通過精準稱重、寬域溫控、多材料適配等核心功能,實現了對浸潤速率、保液性能的量化表征,可有效支撐材料選型、工藝優(yōu)化和寬溫域電池設計。其提供的可靠數據能幫助研發(fā)人員深入理解材料 - 電解液相互作用機制,加速高性能鋰電池的研發(fā)進程。
    發(fā)表于 07-14 14:01

    量化5G網關和5gredcap網關有什么區(qū)別

    量化5G網關與5G RedCap網關本質上是同一類技術的不同表述 ,5G RedCap網關是輕量化5G網關的核心實現形式,而輕量化5G網關是RedCap技術應用的場景化概念。以下從技術定義、核心
    的頭像 發(fā)表于 06-30 09:19 ?1214次閱讀

    使用 NPU 插件對量化的 Llama 3.1 8b 模型進行推理時出現“從 __Int64 轉換為無符號 int 的錯誤”,怎么解決?

    安裝了 OpenVINO? GenAI 2024.4。 使用以下命令量化 Llama 3.1 8B 模型: optimum-cli export openvino -m meta-llama
    發(fā)表于 06-25 07:20

    瑞芯微模型量化文件構建

    模型是一張圖片輸入時,量化文件如上圖所示。但是我現在想量化deepprivacy人臉匿名模型,他的輸入是四個輸入。該模型訓練時數據集只標注了人臉框和關鍵點,該模型的預處理是放到模型外的,不在模型
    發(fā)表于 06-13 09:07

    基于雙向塊浮點量化的大語言模型高效加速器設計

    本文提出雙向塊浮點(BBFP)量化格式及基于其的LLMs加速器BBAL,通過雙向移位與重疊位設計顯著降低量化誤差,提升非線性計算效率,實現精度、吞吐量和能效的顯著優(yōu)化,相關成果被國際頂級會議 DAC 2025 接收。
    的頭像 發(fā)表于 05-14 13:40 ?2370次閱讀
    基于雙向塊浮點<b class='flag-5'>量化</b>的大語言模型高效<b class='flag-5'>加速</b>器設計

    加速中小企業(yè)數字化轉型!華為云 Flexus 數字人有多強?

    在當今數字化進程加速的時代,各行業(yè)都在積極探索轉型升級之路,加之消費者對于智能化、個性化服務的需求日益增長,促使企業(yè)不斷尋求創(chuàng)新手段以提升競爭力。數字人技術作為前沿科技領域的重要成果,逐漸受到廣大
    的頭像 發(fā)表于 03-10 11:08 ?3562次閱讀
    <b class='flag-5'>加速</b>中小企業(yè)數字化轉型!華為云 Flexus 數字人<b class='flag-5'>有多強</b>?