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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

取input 输入_tensorRT动态输入(python)

發布時間:2025/3/21 python 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 取input 输入_tensorRT动态输入(python) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于tensorRT動態輸入的例子大多數都是c++版本的,python版本的較少,這里簡單總結下python處理tensorRT動態輸入時,遇到的一些問題及解決方案。

這里的動態輸入是指batch,width,height等不固定大小的輸入。對于目標檢測等問題,如果將圖像壓縮到指定長度和寬度,一般會損失一些性能,一般情況下是壓縮較小的邊到一定數值(例如608,416等),另一條邊按照比例進行壓縮,這就導致了輸入可能是變長的情況。而早期的tensorrt是不支持變長輸入,這一點比較令人費解,因為tensorflow,pytorch等框架是支持變長輸入的,為什么tensorrt支持變長輸入要這么麻煩呢?我想到的一個原因是tensorrt內部做了一些優化策略,而這些優化策略對于變長問題是較難處理的。

一、由onnx模型構建trt引擎

tensorrt6 以后的版本是支持動態輸入的,需要給每個動態輸入綁定一個profile,用于指定最大值,最小值和常規值,如果超出這個范圍會報異常。

profile = builder.create_optimization_profile() profile.set_shape(network.get_input(0).name, (1,3, 32, 32), (1,3, 608, 608), (1,3, 2050, 2050)) config.add_optimization_profile(profile)

另外建立engine時是通過config設置參數的,

config.max_workspace_size=1<<30 #1GB

而不是通過builder,這一點很重要,如果出現顯存溢出的問題需要重新設置

config.max_workspace_size

構建引擎

engine = builder.build_engine(network,config)

二、推理

1、申請空間

因為是動態輸入,所以每次申請的空間大小不一樣,為了不用每次推理時都要重新申請空間,可以申請一次所需的最大空間,后面取數據的時候對齊就可以了。

inputs = [] outputs = [] bindings = [] stream = cuda.Stream() tmp=[1,32,16,8] print('engine.get_binding_format_desc',engine.get_binding_format_desc(0)) for count,binding in enumerate(engine):print('binding:',binding)size = trt.volume(engine.get_binding_shape(binding)) * engine.max_batch_size*(int)(h_/tmp[count])*(int)(w_/tmp[count]) dtype = trt.nptype(engine.get_binding_dtype(binding)) # Allocate host and device buffershost_mem = cuda.pagelocked_empty(size, dtype)device_mem = cuda.mem_alloc(host_mem.nbytes)# Append the device buffer to device bindings.bindings.append(int(device_mem))# Append to the appropriate list.if engine.binding_is_input(binding):inputs.append(HostDeviceMem(host_mem, device_mem))else:outputs.append(HostDeviceMem(host_mem, device_mem))

2、推理

注意推理拿到的數據長度是前面申請空間中數據,輸入確定了,輸出長度也就確定了,取到合適的長度即可。

trt_outputs = common.do_inference_v3(self.context,bindings=self.bindings,inputs=self.inputs,outputs=self.outputs,stream=self.stream,h_=h_,w_=w_)output_shapes = [(1, int(h_/32), int(w_/32), 21),(1, int(h_/16), int(w_/16), 21),(1, int(h_/8), int(w_/8), 21)]print(output_shapes) trt_outputs = [output[:shape[1]*shape[2]*shape[3]].reshape(shape) for output, shape in zip(trt_outputs, output_shapes)]

完整用例請參考

https://github.com/zhaogangthu/keras-yolo3-ocr-tensorrt/tree/master/tensorRT_yolo3?github.com

總結

以上是生活随笔為你收集整理的取input 输入_tensorRT动态输入(python)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 97视频网址 | 中文字幕亚洲综合 | 国产精品久久久久久久久岛 | 一个色综合久久 | 99久久精品国产毛片 | 亚洲免费网站在线观看 | 亚洲精品一区二区在线 | 日本韩国欧美 | 麻豆精品av | 日韩电影在线观看一区二区 | 亚洲一区二区在线免费 | 国产人人草 | 韩国激情呻吟揉捏胸视频 | 久久综合区 | 九九热在线视频观看 | 久久久天堂国产精品女人 | 亚洲爽爆av| jizz成人 | 成人亚洲视频 | 男女爱爱动态图 | 国产在线精品视频 | 黄色片免费网站 | 麻豆影视在线观看 | 女同在线观看 | 日本亚洲色图 | 少妇无码一区二区三区免费 | 久草影视网 | 日韩视频免费在线播放 | 日本韩国欧美一区二区 | 2021亚洲天堂 | 91蝌蚪少妇 | 少妇激情偷人爽爽91嫩草 | 玖玖爱免费视频 | 国产男女无套 | 99人人爽| 日韩三级国产精品 | 国产综合一区二区 | 一级黄色免费片 | 加勒比在线一区 | 欧美热热| 成人片在线看 | 亚洲精品国产精品乱码桃花 | 污网址在线观看 | 欧美一级免费在线观看 | 午夜激情福利 | 日韩精品高清视频 | 美女国产在线 | 91网页版 | 免费成人av在线 | 欧美呦呦 | 日韩av在线网站 | 国产黄视频在线观看 | 亚洲一级Av无码毛片久久精品 | 激情福利社 | 极品色av影院| 亚洲欧美制服丝袜 | 秋霞在线观看秋 | 亚洲综合一区在线观看 | 爆操欧美美女 | 国产一区欧美一区 | 性视频黄色 | 国产人妖网站 | 黄色网av | 国产精品国产三级国产专区53 | 日韩亚洲一区二区 | 五月天婷婷激情网 | www.xxx.国产 | 亚洲av无码一区二区二三区 | 亚洲欧美日韩综合一区二区 | 日本 在线 | aa在线| 特黄视频 | 在线一区二区三区 | 精品无码在线视频 | 青春草在线视频观看 | 男人的天堂亚洲 | 天天射天天操天天干 | 久久久久人妻一区二区三区 | 精品久久久久久久久久久久久久久久 | 97视频在线观看免费高清完整版在线观看 | 他揉捏她两乳不停呻吟动态图 | 午夜久久久久久久久久 | 午夜蜜桃视频 | 国产一区二区在线观看视频 | 日本成人片网站 | 日韩网站在线观看 | 免费国产羞羞网站视频 | 日韩高清影视在线观看 | 一本一道波多野结衣av黑人 | 果冻传媒18禁免费视频 | 男女操操视频 | 亚洲成人av在线播放 | 亚洲欧美日本一区二区三区 | 亚洲一区二区三区不卡视频 | 韩国三级中文字幕hd浴缸戏 | 人人草在线 | 亚洲中文字幕在线一区 | 日本午夜精品理论片a级app发布 | 欧美91看片特黄aaaa |