精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

OpenVIN賦能BLIP實現視覺語言AI邊緣部署

SDNLAB ? 來源: 英特爾物聯網 ? 2023-09-04 10:54 ? 次閱讀

人類通過視覺和語言感知世界。人工智能的一個長期目標是構建智能體,通過視覺和語言輸入來理解世界,并通過自然語言與人類交流。比如,在《幾行代碼加速 Stable Diffusion,使用 OpenVINO 輕松文生圖》中,我們介紹了利用OpenVINO 運行Stable Diffusion模型,快速實現文生圖應用。讓人人可以成為繪畫大師,利用AI隨心作畫。

隨著計算機視覺和自然語言處理領域的快速發展,視覺與語言的融合越來越受到研究人員的重視。在這個背景下,BLIP(Bootstrapping Language-Image Pre-training)作為一種創新的預訓練模型,引起了廣泛關注。該模型在大規模的圖像文本數據集上預訓練深度神經網絡模型,以提高下游視覺語言任務的性能,如圖像文本檢索、圖像字幕和視覺問答。通過聯合訓練圖像和文本數據,為視覺與語言的融合提供了強大的基礎。

BLIP 的預訓練過程涉及兩個關鍵組件:圖像編碼器和文本編碼器。圖像編碼器負責將輸入的圖像轉換為低維向量表示,而文本編碼器則將輸入的文本轉換為另一個低維向量表示。為了實現統一的視覺-語言預訓練,BLIP 采用了一種跨模態約束策略,即在預訓練階段,圖像編碼器和文本編碼器被設計成相互約束的。這樣的約束機制強制模型學習將視覺信息和語言信息進行對齊,從而使得模型在后續任務中能夠更好地處理視覺與語言之間的聯合信息。

除了視覺-語言理解任務,BLIP 還在視覺-語言生成任務中表現出色。在這個任務中,模型需要根據輸入的圖像和文本生成相關的描述或回答問題。BLIP 通過聯合訓練和引入了圖像-文本生成任務,使得模型具備了更強大的圖像描述和問題回答能力。這使得 BLIP 在圖像描述生成和視覺問答等任務上取得了優異的成績。

接下來,我們一起來看看如何在研揚科技(AAEON)的新品 UP Squared Pro 7000 Edge運行利用OpenVINO來優化加速BLIP的推理有哪些重點步驟吧。

作為研揚UP Squared Pro系列的第三代產品,Upsquared Pro 7000 系列 (up-shop.org) 透過高性能計算能力、升級的電路板設計和擴展的顯示接口,提供更大的開發潛力。作為該系列中首款采用Intel Core/Atom/N系列處理器(原 Alder Lake-N)的產品,UP Squared Pro 7000是首款配備板載LPDDR5內存的產品,提高了I/O的運行速度。此外,UP Squared Pro 7000 在圖像處理和顯示功能方面都有顯著提升,支持MIPI CSI照相機,并搭配Intel UHD顯卡,可同時進行三臺4K顯示器。

1.4倍以上CPU性能提升

UP Squared Pro 7000采用Intel Core/Atom/N-系列處理器,CPU性能是上一代的1.4倍。UP Squared Pro 7000擁有多達8個Gracemont內核,支持OpenVINO Toolkit,以及第12代Intel處理器的UHD顯卡,擁有強大的計算能力、優化的推理引擎和圖像處理功能,提供絕佳的智能解決方案。

同步支持3臺4K顯示器

UP Squared Pro 7000配備HDMI 2.0b、DP 1.2埠和透過USB Type-C的DP 1.4a,擁有出色的顯示接口。UP Squared Pro 7000整合了GPU和多重輸出,可以同步支持三個4K顯示器,非常適合用于數字廣告牌等視覺導向型的相關應用。

雙倍的高速系統內存

作為UP Squared Pro系列中第一塊配備板載LPDDR5系統內存的板卡,UP Squared Pro 7000搭載了16GB的系統內存,是上一代的兩倍。此外,快達4800MHz的內存速度讓用戶的帶寬和數據傳輸速度加倍,同時也更加省電。

全面的I/O升級

除了維持UP Squared Pro系列4" x 4"的緊湊外形之外,UP Squared Pro 7000 在電路板設計上更為精實。UP Squared Pro 7000配備了兩個2.5GbE、三個 USB 3.2和一個FPC端口,可外接更多像是MIPI CSI 相機的外圍設備。將這些特色與板載 LPDDR5 及性能強大的CPU相結合,非常適合用于智慧工廠機器人方面的視覺解決方案。

注意:以下步驟中的所有代碼來自OpenVINO Notebooks開源倉庫中的233-blip-visual-language-processing notebook 代碼示例,您可以點擊以下鏈接直達源代碼。https://github.com/openvinotoolkit/openvino_notebooks/tree/main/notebooks/233-blip-visual-language-processing

第一步:安裝相應工具包、加載模型并轉換為OpenVINO IR格式

本次代碼示例需要首先安裝BLIP相應工具包。

1.!pipinstall"transformers>=4.26.0"
然后下載及加載相應的PyTorch模型。在本問中,您將使用可從Hugging Face下載的blip-vqa-base基本模型。同樣的操作也適用于BLIP系列中的其它模型。盡管該模型類是為執行問答而設計的,但其組件也可以用于圖像字幕。要開始使用該模型,需要使用from_pretrained方法實例化BlipForQuestionAnswering類。BlipProcessor是一個助手類,用于準備文本和視覺模態的輸入數據以及生成結果的后處理。 1.importsys2.importtime3.fromPILimportImage4.fromtransformersimportBlipProcessor,BlipForQuestionAnswering5.6.sys.path.append("../utils")7.fromnotebook_utilsimportdownload_file8.9.#Getmodelandprocessor10.processor=BlipProcessor.from_pretrained("Salesforce/blip-vqa-base")11.model=BlipForQuestionAnswering.from_pretrained("Salesforce/blip-vqa-base")
接下來,我們看看如何將原始模型轉換為OpenVINO IR格式的模型,并利用OpenVINO進行相應的優化以及部署推理加速。

第二步:將模型轉換為OpenVINO IR格式

根據我們前面的介紹,BLIP模型包含視覺模型、文本編碼和文本解碼三個模型,因此我們需要分別將這三個模型轉換為OpenVINO IR格式。視覺模型的轉換操作比較常規,具體代碼可以參考我們的notebook,這里重點介紹一下文本編碼和文本解碼模型的轉換部分。

  • 文本編碼器轉換:視覺問答任務使用文本編碼器來構建問題的嵌入表示。它采用經過分詞后的問題的input_ids,并輸出從視覺模型獲得的圖像嵌入和它們的注意力掩碼。根據問題文本的不同,標記化輸入后的標記數量可能不同。因此,為使用標記的模型輸入保留動態形狀,dynamic_axes參數負責在torch.onx.export中保留輸入的動態特定維度。代碼如下:

TEXT_ENCODER_OV=Path("blip_text_encoder.xml")TEXT_ENCODER_ONNX=TEXT_ENCODER_OV.with_suffix(".onnx")text_encoder=model.text_encodertext_encoder.eval()#ifopenvinomodeldoesnotexist,convertittoonnxandthentoIRifnotTEXT_ENCODER_OV.exists():ifnotTEXT_ENCODER_ONNX.exists():#prepareexampleinputsforONNXexportimage_embeds=vision_outputs[0]image_attention_mask=torch.ones(image_embeds.size()[:-1],dtype=torch.long)input_dict={"input_ids":inputs["input_ids"],"attention_mask":inputs["attention_mask"],"encoder_hidden_states":image_embeds,"encoder_attention_mask":image_attention_mask}#specifyvariablelengthaxesdynamic_axes={"input_ids":{1:"seq_len"},"attention_mask":{1:"seq_len"}}#exportPyTorchmodeltoONNXwithtorch.no_grad():torch.onnx.export(text_encoder,input_dict,TEXT_ENCODER_ONNX,input_names=list(input_dict),dynamic_axes=dynamic_axes)#convertONNXmodeltoIRusingmodelconversionPythonAPI,usecompress_to_fp16=TrueforcompressingmodelweightstoFP16precisionov_text_encoder=mo.convert_model(TEXT_ENCODER_ONNX,compress_to_fp16=True)#savemodelondiskfornextusagesserialize(ov_text_encoder,str(TEXT_ENCODER_OV))print(f"Textencodersuccessfulyconvertedandsavedto{TEXT_ENCODER_OV}")else:print(f"Textencoderwillbeloadedfrom{TEXT_ENCODER_OV}")

  • 文本解碼器轉換:文本解碼器負責使用圖像(以及問題,如果需要的話)的表示來生成模型輸出(問題的答案或標題)的分詞token序列。生成方法基于這樣的假設,即單詞序列的概率分布可以分解為下一個單詞條件分布的乘積。換言之,模型預測由先前生成的token引導循環生成下一個token,直到達到停止生成的條件(生成達到最大長度序列或獲得的字符串結束的token)。在預測概率之上選擇下一個token的方式由所選擇的解碼方法來驅動。與文本編碼器類似,文本解碼器可以處理不同長度的輸入序列,并且需要保留動態輸入形狀。這部分特殊的處理可由如下代碼完成:

1.text_decoder=model.text_decoder2.text_decoder.eval()3.4.TEXT_DECODER_OV=Path("blip_text_decoder.xml")5.TEXT_DECODER_ONNX=TEXT_DECODER_OV.with_suffix(".onnx")6.7.#prepareexampleinputsforONNXexport8.input_ids=torch.tensor([[30522]])#beginofsequencetokenid9.attention_mask=torch.tensor([[1]])#attentionmaskforinput_ids10.encoder_hidden_states=torch.rand((1,10,768))#encoderlasthiddenstatefromtext_encoder11.encoder_attention_mask=torch.ones((1,10),dtype=torch.long)#attentionmaskforencoderhiddenstates12.13.input_dict={"input_ids":input_ids,"attention_mask":attention_mask,"encoder_hidden_states":encoder_hidden_states,"encoder_attention_mask":encoder_attention_mask}14.#specifyvariablelengthaxes15.dynamic_axes={"input_ids":{1:"seq_len"},"attention_mask":{1:"seq_len"},"encoder_hidden_states":{1:"enc_seq_len"},"encoder_attention_mask":{1:"enc_seq_len"}}16.17.#specifyoutputnames,logitsismainoutputofmodel18.output_names=["logits"]19.20.#pastkeyvaluesoutputsareoutputforcachingmodelhiddenstate21.past_key_values_outs=[]22.text_decoder_outs=text_decoder(**input_dict)23.foridx,_inenumerate(text_decoder_outs["past_key_values"]):24.past_key_values_outs.extend([f"out_past_key_value.{idx}.key",f"out_past_key_value.{idx}.value"])
接下來,對于文本解碼器的轉換,還有來自前一步驟的隱藏狀態的額外輸入。與輸出類似,在模型導出為ONNX格式后,它們將被展平。需要使用新的輸入層更新dynamic_axies和input_names。因此,其后面的轉換過程與前面的文本編碼器的轉換過程類似,在本文中不再贅述。

第三步:運行OpenVINO 推理

如前所述,在這里我們將主要展示BLIP進行視覺問答以及圖像字幕的流水線如何搭建、以及如何運行OpenVINO來進行推理的情況。


  • 圖像字幕

視覺模型接受BlipProcessor預處理的圖像作為輸入,并生成圖像嵌入,這些圖像嵌入直接傳遞給文本解碼器以生成字幕標記。生成完成后,分詞tokenizer的輸出序列被提供給BlipProcessor,用于使用tokenizer解碼為文本。wKgZomT1R7GATsKBAAC288s9BRs649.jpg定義OVBLIPModel類:

classOVBlipModel:"""ModelclassforinferenceBLIPmodelwithOpenVINO"""def__init__(self,config,decoder_start_token_id:int,vision_model,text_encoder,text_decoder):"""Initializationclassparameters"""self.vision_model=vision_modelself.vision_model_out=vision_model.output(0)self.text_encoder=text_encoderself.text_encoder_out=text_encoder.output(0)self.text_decoder=text_decoderself.config=configself.decoder_start_token_id=decoder_start_token_idself.decoder_input_ids=config.text_config.bos_token_id定義圖像字幕函數如下,defgenerate_caption(self,pixel_values:torch.Tensor,input_ids:torch.Tensor=None,attention_mask:torch.Tensor=None,**generate_kwargs):"""ImageCaptioningpredictionParameters:pixel_values(torch.Tensor):preprocessedimagepixelvaluesinput_ids(torch.Tensor,*optional*,None):pregeneratedcaptiontokenidsaftertokenization,ifprovidedcaptiongenerationcontinueprovidedtextattention_mask(torch.Tensor):attentionmaskforcaptiontokens,usedonlyifinput_idsprovidedRetruns:generationoutput(torch.Tensor):tensorwhichrepresentssequenceofgeneratedcaptiontokenids"""batch_size=pixel_values.shape[0]image_embeds=self.vision_model(pixel_values.detach().numpy())[self.vision_model_out]image_attention_mask=torch.ones(image_embeds.shape[:-1],dtype=torch.long)ifisinstance(input_ids,list):input_ids=torch.LongTensor(input_ids)elifinput_idsisNone:input_ids=(torch.LongTensor([[self.config.text_config.bos_token_id,self.config.text_config.eos_token_id]]).repeat(batch_size,1))input_ids[:,0]=self.config.text_config.bos_token_idattention_mask=attention_mask[:,:-1]ifattention_maskisnotNoneelseNoneoutputs=self.text_decoder.generate(input_ids=input_ids[:,:-1],eos_token_id=self.config.text_config.sep_token_id,pad_token_id=self.config.text_config.pad_token_id,attention_mask=attention_mask,encoder_hidden_states=torch.from_numpy(image_embeds),encoder_attention_mask=image_attention_mask,**generate_kwargs,)returnoutputs
  • 視覺問答

視覺回答的流水線看起來很相似,但有額外的問題處理。在這種情況下,由BlipProcessor標記的圖像嵌入和問題被提供給文本編碼器,然后多模態問題嵌入被傳遞給文本解碼器以執行答案的生成。
在OVBLIPModel類內部同理可定義視覺問答函數如下:defgenerate_answer(self,pixel_values:torch.Tensor,input_ids:torch.Tensor,attention_mask:torch.Tensor,**generate_kwargs):"""VisualQuestionAnsweringpredictionParameters:pixel_values(torch.Tensor):preprocessedimagepixelvaluesinput_ids(torch.Tensor):questiontokenidsaftertokenizationattention_mask(torch.Tensor):attentionmaskforquestiontokensRetruns:generationoutput(torch.Tensor):tensorwhichrepresentssequenceofgeneratedanswertokenids"""image_embed=self.vision_model(pixel_values.detach().numpy())[self.vision_model_out]image_attention_mask=np.ones(image_embed.shape[:-1],dtype=int)ifisinstance(input_ids,list):input_ids=torch.LongTensor(input_ids)question_embeds=self.text_encoder([input_ids.detach().numpy(),attention_mask.detach().numpy(),image_embed,image_attention_mask])[self.text_encoder_out]question_attention_mask=np.ones(question_embeds.shape[:-1],dtype=int)bos_ids=np.full((question_embeds.shape[0],1),fill_value=self.decoder_start_token_id)outputs=self.text_decoder.generate(input_ids=torch.from_numpy(bos_ids),eos_token_id=self.config.text_config.sep_token_id,pad_token_id=self.config.text_config.pad_token_id,encoder_hidden_states=torch.from_numpy(question_embeds),encoder_attention_mask=torch.from_numpy(question_attention_mask),**generate_kwargs,)returnoutputs·初始化OpenVINO運行時并運行推理初始化OpenVINOCore對象,選擇推理設備,并加載、編譯模型#createOpenVINOCoreobjectinstancecore=Core()importipywidgetsaswidgetsdevice=widgets.Dropdown(options=core.available_devices+["AUTO"],value='AUTO',description='Device:',disabled=False,)device#loadmodelsondeviceov_vision_model=core.compile_model(VISION_MODEL_OV,device.value)ov_text_encoder=core.compile_model(TEXT_ENCODER_OV,device.value)ov_text_decoder=core.compile_model(TEXT_DECODER_OV,device.value)ov_text_decoder_with_past=core.compile_model(TEXT_DECODER_WITH_PAST_OV,device.value)
  • 運行圖像字幕推理

out=ov_model.generate_caption(inputs["pixel_values"],max_length=20)caption=processor.decode(out[0],skip_special_tokens=True)fig=visualize_results(raw_image,caption)
運行效果如下圖所示:
  • 運行視覺問答推理

start=time.perf_counter()out=ov_model.generate_answer(**inputs,max_length=20)end=time.perf_counter()-startanswer=processor.decode(out[0],skip_special_tokens=True)fig=visualize_results(raw_image,answer,question)
小 結 整個的步驟就是這樣!現在就開始跟著我們提供的代碼和步驟,動手試試用Open VINO和BLIP吧。
關于英特爾OpenVINOTM開源工具套件的詳細資料,包括其中我們提供的三百多個經驗證并優化的預訓練模型的詳細資料。除此之外,為了方便大家了解并快速掌握OpenVINOTM的使用,我們還提供了一系列開源的Jupyter notebook demo。運行這些notebook,就能快速了解在不同場景下如何利用OpenVINOTM實現一系列、包括計算機視覺、語音及自然語言處理任務。OpenVINOTM notebooks的資源可以在GitHub這里下載安裝。

# 研揚科技簡介

研揚科技成立于1992年,是工業物聯網和人工智能邊緣解決方案的領先設計商和制造商之一。以不斷創新為核心價值觀,研揚科技為市場帶來可靠、高質量的計算平臺,包括工業主板和系統、強固式平板電腦、嵌入式人工智能系統、uCPE網絡設備以及LoRaWAN/WWAN解決方案。研揚科技還帶來行業領先的經驗和知識,以在全球范圍內提供OEM/ODM服務。此外,研揚科技與諸多城市和政府緊密合作,開發和部署智能城市生態系統,提供個性化平臺和端到端解決方案。研揚科技與頂級芯片設計商緊密合作,提供穩定、可靠的平臺,并被認可為Intel物聯網解決方案聯盟的鈦金級成員。欲了解更多研揚科技的產品線和服務,請訪問www.aaeon.com。

審核編輯:湯梓紅

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

    關注

    60

    文章

    9745

    瀏覽量

    170639
  • 計算機
    +關注

    關注

    19

    文章

    7168

    瀏覽量

    87142
  • AI
    AI
    +關注

    關注

    87

    文章

    28866

    瀏覽量

    266188
  • 自然語言處理

    關注

    1

    文章

    585

    瀏覽量

    13418

原文標題:OpenVINO?賦能BLIP實現視覺語言AI邊緣部署

文章出處:【微信號:SDNLAB,微信公眾號:SDNLAB】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    低成本低功耗的嵌入式計算機視覺平臺ADZS-BF707-BLIP2

    ADZS-BF707-BLIP2,Blackfin低功耗成像平臺(BLIP)評估系統是一款低成本,低功耗的嵌入式計算機視覺平臺,適用于大量實時傳感應用。 BLIP利用行業領先的低功耗B
    發表于 03-08 09:24

    EdgeBoard FZ5 邊緣AI計算盒及計算卡

    ,實現模型的訓練、部署、推理等一站式服務,降低AI開發門檻。5 卓越品質與可靠性設計,直面工業場景高效開發寬溫設計,適應-40度到+70度環境溫度;整體式無風扇被動散熱,適應工業場景的惡劣環境;此外
    發表于 08-31 14:12

    【HarmonyOS HiSpark AI Camera】邊緣計算安全監控系統

    邊緣計算安全監控系統計劃:本項目計劃做一個邊緣計算平臺,將用在工業或工廠環境下,檢測溫度、濕度、氣體等參數,同時通過視覺AI檢測工人有沒有佩戴安全帽、手套、是否抽煙、是否有煙霧和火焰
    發表于 09-25 10:11

    MLU220-M.2邊緣端智能加速卡支持相關資料介紹

    ??梢暂p松實現終端設備和邊緣段設備的AI方案。MLU220-M.2加速卡用于離線模型的部署,
    發表于 08-08 17:37

    嵌入式邊緣AI應用開發指南

    保駕護航。下面讓我們來了解如何不借助手動工具或手動編程來選擇模型、隨時隨地訓練模型并將其無縫部署到TI處理器上,從而實現硬件加速推理。圖1: 邊緣AI應用的開發流程第1步:選擇模型
    發表于 11-03 06:53

    英碼科技精彩亮相火爆的IOTE 2023,多面AIoT產業發展!

    算力硬件為基礎,搭載自研的0代碼移植工具鏈,在不觸碰客戶模型文件的前提下,實現算法從GPU到XPU的一鍵移植,最快1天實現算法適配,快、易、省長尾
    發表于 09-25 10:03

    邊緣存儲問題解決分析:AI邊緣趨勢勢不可擋

    AI 能到前端也正成為安防這個產業的發展趨勢,當然,邊緣計算是一方面,監控領域邊緣存儲也是一個極其重要的環節。
    的頭像 發表于 11-27 19:05 ?4543次閱讀

    華為云如何為AI開發者?

    說到底,在AI開發逐漸成為通用技能的今天,就是缺乏一種一致性的方案,從訓練到部署、從云、邊緣到終端,通過時間軸以及空間軸的角度整合框架完成對開發者的
    的頭像 發表于 09-25 15:24 ?5126次閱讀

    AI邊緣計算應用的必然趨勢 AI功能智盒落地應用

    目前,公共安全領域大數據實戰日益重要,迫切需要從海量的數據中獲取有效、可靠、安全的數據,人工智能將扮演越來越重要的角色。 而邊緣計算將為未來的百億終端提供AI能力,形成萬物感知、萬
    的頭像 發表于 11-20 15:11 ?3164次閱讀

    華為許映童:AI,邊緣將走向智能邊緣

    12月11日消息(李明)在“2020邊緣計算產業峰會”上,華為昇騰計算業務總裁許映童表示:AI,邊緣將走向智能
    的頭像 發表于 12-11 13:46 ?2237次閱讀

    賽靈思推出自適應SOM為AI邊緣應用提供更高效解決方案

    隨著以人工智能技術為代表的數字經濟浪潮的來臨,如今,AI 正越來越多地被部署邊緣應用,這些應用要求以低時延、低功耗和小封裝尺寸執行大量數據處理。 要想實現這一綜合要求就必須為整體
    的頭像 發表于 05-17 10:55 ?2021次閱讀

    ai邊緣計算在視覺分析領域的優點?ai邊緣計算可以應用于哪些領域

    低延遲:將AI算法部署邊緣設備上可以實現實時的視覺分析,避免了將所有數據傳輸到云端進行處理的延遲。這對于需要快速響應的應用非常重要,例如智
    的頭像 發表于 05-30 11:40 ?709次閱讀
    <b class='flag-5'>ai</b><b class='flag-5'>邊緣</b>計算在<b class='flag-5'>視覺</b>分析領域的優點?<b class='flag-5'>ai</b><b class='flag-5'>邊緣</b>計算可以應用于哪些領域

    AI邊緣計算是什么意思?邊緣ai是什么?AI邊緣計算應用

    算法部署邊緣設備上實現智能化的計算方式。 什么是邊緣計算? 邊緣計算是一種通過把計算能力盡可能靠近數據來源或消費者的計算模式,提高應用程序
    的頭像 發表于 08-24 15:18 ?1840次閱讀

    OpenVINOBLIP實現視覺語言AI邊緣部署

    人類通過視覺語言感知世界。人工智能的一個長期目標是構建智能體,通過視覺語言輸入來理解世界,并通過自然語言與人類交流。比如,在《幾行代碼加
    的頭像 發表于 09-01 10:26 ?2317次閱讀

    OpenVINO? BLIP 實現視覺語言 AI 邊緣部署

    圖》中,我們介紹了利用OpenVINO運行StableDiffusion模型,快速實現文生圖應用。讓人人可以成為繪畫大師,利用AI隨心作畫。隨著計算機視覺和自然語
    的頭像 發表于 09-04 16:21 ?579次閱讀
    OpenVINO? <b class='flag-5'>賦</b><b class='flag-5'>能</b> <b class='flag-5'>BLIP</b> <b class='flag-5'>實現</b><b class='flag-5'>視覺</b><b class='flag-5'>語言</b> <b class='flag-5'>AI</b> <b class='flag-5'>邊緣</b><b class='flag-5'>部署</b>