切换版块
×
基础软件平台
PyTorch开发
TensorFlow开发
编解码及SDK开发
BANG语言与计算库
开发工具链
MagicMind开发
软件栈百科
云平台集成
硬件产品专区
MLU370系列AI加速卡
MLU270系列AI加速卡
MLU220系列AI加速产品
经验方案交流区
经验案例与实践分享
开发者服务
开发者活动
公告与版务
高校支持
《智能计算系统》
签到
版块
社区
文档
SDK下载
370系列
200系列
开发平台
官网首页
注册
登录
全部版块
基础软件平台
硬件产品专区
经验方案交流区
开发者服务
高校支持
发布新帖
登录/注册
LV.1
含含
148
积分
2
赞
6
帖子
9
回复
0
收藏
TA的动态
TA的帖子
TA的回复
yolov5 cpu资源占用较多
我的回复:#22ltmarks回复如果ARGB的4通道模型会有问题的话,是否意味着基于mlu的前处理以及use_scaler的前处理都无法使用?展开是和量化配置参数有关系,以yolov5举例,量化时如果配置firstconv ,生成的离线模型模型输入会从3通道变成4通道。量化如果配置firstconv 依旧是3通道。网络第一层是conv 可以配置firstconv 在网络内部进行归一化操作。如果不配置firstconv 需要在前处理进行均值方差操作,当前的yolov5代码是在前处理做的mean_std操作。yolov5 6.0之前的版本第一层是Focus,不符合firstconv 的使用规则。关于firstconv 可以参看<<寒武纪 PyTorch 用户手册>>10.1.1 使用量化接口 章节– firstconv:设置是否使用 firstconv。默认值为 False,即不使用。当开启 firstconv 时,需要同时设置 mean 和 std 参数。关于 firstconv 的更多使用信息,参见高阶用法 。
0
yolov5 cpu资源占用较多
我的回复:#20ltmarks回复请问:1、转换模型是不是必须有mlu270这个硬件?(转换模型包含yolov5_detection_output该算子)2、可否提供一个模型输入是ARGB的yolov5模型,感谢~展开1.有使用实体卡调试起来会方便一些,如果不用卡需要 需要将device 配置成-1(ct.set_device(-1)),可以参看下 论坛里的其它帖子,如:转换fasestdet模型报错 - 寒武纪软件开发平台 - 开发者论坛 (cambricon.com)2. 默认的yolov5的前处理是RGB24的,如果使用ARGB的4通道的模型运行会有问题
0
转换fasestdet模型报错
我的回复:#13FrostLee回复按你说的修改,或者把“.data”去掉就能转换成功了,这是为什么?另外,转换完的.cambricon为啥比原来的.pt文件还大?展开1. 关于.data, .data是早期torch的用法,.data和.detach()框架内部的运算是不一样的2. 生成的离线模型会包括运行指令,会比.pt 大一些
0
yolov5 cpu资源占用较多
我的回复:#17upupdayday回复链接:https://pan.baidu.com/s/1pagMVAM83KS9cGuEbayf9w?pwd=5z3i 可以试试这个展开
0
转换fasestdet模型报错
我的回复:#10FrostLee回复我看到社区挺多模型转换错误的帖子,都没有解决方案......建议大佬们合力看看,总不能只用yolo吧。可以尝试修改下代码将.data 更换成.detach:diff --git a/module/shufflenetv2.py b/module/shufflenetv2.pyindex 89d0eb7..80cd875 100644--- a/module/shufflenetv2.py+++ b/module/shufflenetv2.py@@ -54,7 +54,8 @@ class ShuffleV2Block(nn.Module): return torch.cat((self.branch_proj(x_proj), self.branch_main(x)), 1) def channel_shuffle(self, x):- batchsize, num_channels, height, width = x.data.size()+ #batchsize, num_channels, height, width = x.data.size()+ batchsize, num_channels, height, width = x.detach().size() assert (num_channels % 4 == 0) x = x.reshape(batchsize * num_channels // 2, 2, height * width) x = x.permute(1, 0, 2)
0
转换fasestdet模型报错
我的回复:#8FrostLee回复OK,明白你意思,但是估计不行,盒子都是成品,除非拆盒子拆里面的卡。还有其他调试方式吗?有卡调测会方便很多
0
yolov5 cpu资源占用较多
我的回复:#14ltmarks回复[图片]cntoolkit=1.8.1,cncv=0.4.602,采用cncv前处理时候报这个错,不用cncv的话没有问题,请问这是什么原因?另外,mlu220驱动版本是4.6,会不会跟驱动版本有关系?展开cntoolkit 、cncv 、driver 版本需要对齐,如:driver: 4.9.5cntoolkit: 1.7.5cncv :0.4.602
0
【PyTorch YOLOv7】推理的conf数值异常
我的回复:#9雕刻时光回复这个已经是INT16的量化了重新梳理下当前的情况:1.先在MLU的容器 内 将CPU结果和 370或者是GPU 保持一致。MLU容器内的pt是需要unzip的,先保证unzip的模型在运行结果正确。2.unzip 模型结果一致后进行模型量化可以调整下后models/yolo.py的 class Detect(nn.Module): -> def forward(self, x): 中 x 直接return ;参看如下: for i in range(self.nl): x[i] = self.m[i](x[i]) y = x[i].sigmoid() print("Detect forward i:{}".format(i)) z.append(y) return tuple(z)3. 对比下cpu 和 mlu的结果情况4.还有一个需要注意的点,如果MLU 容器结果不对,可以对下网络结构,可能是因为结构对齐导致的问题:models/experimental.py 中默认会进行fuse,可以注释掉,参考如下def attempt_load(weights, map_location=None): # Loads an ensemble of models weights=[a,b,c] or a single model weights=[a] or weights=a model = Ensemble() for w in weights if isinstance(weights, list) else [weights]: attempt_download(w) ckpt = torch.load(w, map_location=map_location) # load #model.append(ckpt['ema' if ckpt.get('ema') else 'model'].float().fuse().eval()) # FP32 model model.append(ckpt['ema' if ckpt.get('ema') else 'model'].float().eval()) # FP32 model
0
转换fasestdet模型报错
我的回复:#6FrostLee回复我觉得不是这样,因为所有的demo都是在docker里面转换,然后copy到MLU220平台上运行的,毕竟边缘盒子存储小,环境都不一定搭得起来,这也是离线推理存在的意义吧。展开不需要在220 edge测部署docker框架,您可以在x86主机端部署开发环境(可以插MLU270/MLU220-M2卡),这样调试起来更方便。去掉ct.set_device(-1),这个网络可以生成220 的离线模型
0
转换fasestdet模型报错
我的回复:#1FrostLee回复模型转换代码如下:def mlu_forward(modelfile): ct.set_core_version("MLU220") ct.set_device(-1) ct.set_input_format(order) ct.set_core_number(4) # set core number device = ct.mlu_device() with torch.no_grad(): model = Detector(1, True) model.eval().float() model = mlu_quantize.quantize_dynamic_mlu(model) model.load_state_dict(torch.load(modelfile)) ct.save_as_cambricon('fastestdet') example_tensor = torch.randn((1, 3, 640, 640), dtype=torch.float).to(device) fusion_model = torch.jit.trace(model.to(device), example_tensor, check_trace=False) fusion_model(example_tensor) ct.save_as_cambricon('') # generate offline model print('fusion success')展开从日志看是因为没有设备导致的,去掉ct.set_device(-1) ,建议基于有MLU200的设备的环境进行模型验证和转换
0
上一页
1
2
3
4
5
6
下一页
Github
开发平台
文档中心
新手必读
官方微信
版权所有 © 2024 寒武纪 Cambricon.com 备案/许可证号:
京ICP备17003415号-1
关闭