• [其他问题] ATLAS 200DK 安装pytorch报错
    参照https://gitee.com/ascend/modelzoo-GPL/tree/master/built-in/ACL_Pytorch/Yolov5_for_Pytorch进行环境配置,执行pip3 install -r requirements.txt显示源也换了好几次,但是还是报相同错误,执行sudo python3 -m pip install torch===1.8.1 torchvision===0.9.1 -f https://download.pytorch.org/whl/torch_stable.html -i https://pypi.douban.com/simple依旧报相同错误。还请专家帮忙指点!
  • [技术干货] 【CANN训练营】今晚19:00看新硬件首秀、国赛获奖项目,抽新硬件兑换券!!!
    ​扫码进下方任一微信群,并报名CANN训练营可参与抽奖​参与开发板领取规则①参与抽奖者需进群并报名CANN训练营,仅参与未报名无效②中奖后请及时联系小助手,公布后10个工作日内未提供具体信息视为无效报名链接:cid:link_1 直播链接: https://2b87aad812c94b3392d218f35fa6ca3f.shixizhi.huawei.com/live/viewer.htm?actId=7da1rk37&liveId=1579653306145419265&tenant_id=1493401497873534978 
  • 使用开发板将onnx文件转换成om文件时,显示-bash: atc: command not found
    求助,在MindStudio中尝试使用Model Converter 会点不动next尝试使用atc,不知道为什么找不到命令在板子上转换需要合设吗,我之前按教程完成了mksd制卡,并未完成合设部分,还未尝试dd镜像制卡,不知道有没有这个原因希望各位大佬教教我
  • [技术干货] 11月份昇腾板块已处理问题贴合集,快来看呐。
     大家好,我又来了,这月带来的是昇腾论坛里面已解决的或者已经有答案的问题求助,省去大家一个个翻论坛的烦恼。  1.使用晟腾310做人工智能识别开发,应该买晟腾310什么型号的开发板? https://bbs.huaweicloud.com/forum/thread-0246100423047684059-1-1.html  2.昇腾推理问题 https://bbs.huaweicloud.com/forum/thread-0293100516631394063-1-1.html  3.关于Atlas 200 环境搭建 https://bbs.huaweicloud.com/forum/thread-0228101004643986038-1-1.html  4.A200时间同步问题 https://bbs.huaweicloud.com/forum/thread-0236100923403603030-1-1.html  5.Atlas200升级Rootfs https://bbs.huaweicloud.com/forum/thread-0216100923100337029-1-1.html  6.Atlas 300I Pro推理卡如何设置为X8模式? https://bbs.huaweicloud.com/forum/thread-0225100863923306033-1-1.html  7.目前Ascend310环境可以用MindSpore做模型训练吗? https://bbs.huaweicloud.com/forum/thread-0229100853104200034-1-1.html  8.atlas200的网络不通 https://bbs.huaweicloud.com/forum/thread-0225100681982889015-1-1.html  9.emmc制卡成功,但是不能正常启动 https://bbs.huaweicloud.com/forum/thread-0242100604810323041-1-1.html  10.请问昇腾910的训练服务器和昇腾310的推理服务器,鲲鹏CPU,应该选哪个版本的openEuler系统? https://bbs.huaweicloud.com/forum/thread-0233103456908654040-1-1.html  11.请问Atlas 200 AI加速模块(型号:3000)可以在openHarmony的系统上用吗? https://bbs.huaweicloud.com/forum/thread-02101103512667920048-1-1.html  12.A200是否支持多个模型并行?  https://bbs.huaweicloud.com/forum/thread-0234104678838587002-1-1.html  13.在运行 YOLOV4_coco_detection_picture时出现AttributeError: module 'acl' has no attribute 'rt'错误 https://bbs.huaweicloud.com/forum/thread-0292102674012585034-1-1.html  14.AttributeError: module 'acl' has no attribute 'rt' https://bbs.huaweicloud.com/forum/thread-0292102655651110029-1-1.html  15.Paddle 算法模型如何转换到Atlas200 AI部署  https://bbs.huaweicloud.com/forum/thread-0269102565585492014-1-1.html  16.急需atlas200 AI如何部署PaddlePaddle模型指南 https://bbs.huaweicloud.com/forum/thread-0256102565042994010-1-1.html  17.USB制卡成功网线直连ping不通 https://bbs.huaweicloud.com/forum/thread-0256102564611513009-1-1.html  18.Ascend910 上运行torch resnet50算法问题 https://bbs.huaweicloud.com/forum/thread-0202101099047461050-1-1.html 
  • [硬件整机] 摄像头读取图像格式YUV420转RGB问题
    我的om模型输入图像格式要求是RGB格式,并使用到了resize成指定大小,在使用华为mdc300时,框架提供的HafimageResize接口函数,文档上说明输出图像格式仅支持HAF_IMAGE_YUV420SP_NV12_UINT8。另外提供的Hafimagecvtcolor接口也是输出图像格式仅支持HAF_IMAGE_YUV420SP_NV12_UINT8。请问有解决方法吗,自己想的是:1.经过打印imagetype,摄像头读入的图像格式是RGB_uint8,调用HafimageResize函数,转成自己需要的尺寸大小,但是现在图像格式变为HAF_IMAGE_YUV420SP_NV12_UINT8,所以自己写YUV420转RGB的代码?2.不使用提供的接口,自己写resize的代码3.其他方法
  • [传感器适配] mdc300f适配艾瑞M3图像数据不对。
    1、设备为mdc300f2、版本为:mdc@mdchost:~$ swmc -t 1slotId:100main planeWhole version:MDC300 1.0.106-TVersion status:OKComponent version:Running Module PackageType Versionssd FIRMWARE TDU56IHost OS 1.0.106.2tHost FIRMWARE 1.0.11ISP FIRMWARE 1.15.2CPLD2 FIRMWARE 106MCU FIRMWARE 1.0.106.2Mini0 FIRMWARE 1.76.22.90220Mini1 FIRMWARE 1.76.22.90220Mini2 FIRMWARE 1.76.22.90220Mini3 FIRMWARE 1.76.22.90220Backup Module PackageType VersionHost OS 1.0.106.2Host FIRMWARE 1.0.11ISP FIRMWARE 1.15.2MCU FIRMWARE 1.0.106.2Mini0 FIRMWARE 1.76.22.90220Mini1 FIRMWARE 1.76.22.90220Mini2 FIRMWARE 1.76.22.90220Mini3 FIRMWARE 1.76.22.902203、摄像头配置文件为:{"slotId": "C1","cameraModule": "iray_m3","fps": 50,"res": {"width": 384, "height": 288},"dstNode": "MINI_2","instanceId": 1}4、可视化结果:5、使用MCDtools查看相关信息:其中1和79为红外,2和75为森云可见光。可见光fps设置为30,正常。红外fps设设置的50,这里只有30。如果设置为30,则只有19左右。配置流程按照说明文档操作,B1口的森云摄像头使用正常,iray摄像头也是按流程配置,并且验证过摄像头正常使用。请问这个问题该怎么解决?或者艾瑞M3该如何适配。
  • [互动交流] 有LIS 3108阵列卡驱动吗?
    有LIS 3108阵列卡驱动吗?如何加载到pe,进pe看不到硬盘,
  • [互动交流] 问题咨询
    请问昇腾是否有技能图谱的东西呀,作为新手希望知道昇腾大牛需要掌握的只是体系和架构之类的。类似下图:
  • [知识分享] 如何利用CANN DVPP进行图片的等比例缩放?
    摘要:介绍如何用昇腾AI处理器上的DVPP单元进行,图像的等比例缩放,保证图像不变形。本文分享自华为云社区《CANN DVPP进行图片的等比例缩放》,作者:马城林 。1. 为什么需要进行等比例的缩放,直接暴力缩放成模型需要的宽高岂不是更省事首先没有任何的规定表示我们必须进行等比例的缩放,因为实际上即使图像上的物体因为缩放而变形,物体本身的特征还是存在,神经网络依旧可以提取对应的特征进而预测出物体的位置,通过计算实际的宽高与模型之间的宽高的比例依旧可以将模型预测到的候选框的映射到实际的原图上。这样看来等比例的缩放存在感好低!但是事情真的是这样吗?肯定不是呀,要不我为啥会写这篇博客呢?首先有以下几点考虑:目标检测除了将图像送入模型,实际上物体在图像中的位置也被作为一部分信息参与了模型的训练,经过等比例缩放的图片在坐标转换上明显省事。有些图像经过非等比例压缩后已经与实际场景中的物体差别很大,严重的变形会干扰到模型的准确性。等比例缩放更加符合我们人类的直觉。2. 如何在昇腾AI处理器上进行等比例缩放如果在我们的训练服务器,或者我们自己的个人计算机上,因为计算能力的相对充沛,我们可以借助很多开源图像库例如opencv,pillow等进行图像的等比例缩放。但是一旦道路端侧部署时这些开源图像库的方法往往成为整个推理过程最耗时的部分,因为他们主要通过CPU进行运算,而在诸如200DK这样的环境上,进行这样的变换让本就不充沛的CPU算力雪上加霜。而昇腾AI处理器上拥有专门处理数字图像的硬件单元。所以如何借助这些专用的硬件单元是十分重要的。话不多说开始吧!3. 实战讲解主要从以下几个方面进行讲解步骤分解每一步在昇腾AI处理器上的实现怎么把几步组合起来完成一个完整的动作介绍 AscendCL 为开发者提供的组合API接口,只需要一个函数完成所有动作,想想都刺激<概念注意>昇腾AI处理器在不同的环境上拥有不同运行模式,常见的分为两种,一种是类似于显卡一样插在服务器的PCIE插槽上,提供加速服务,一种是类似于200DK一样的嵌入式环境。工作在服务器的PCIE插槽上的昇腾310内存有两种存在形态,一种就是我们常见的内存,称为host内存。一种类似于显卡的显存,称为device内存,这种状态下需要涉及到内存拷贝的问题。200DK这种环境,不区分host与device,只有一块device内存,所以并不涉及host与device的内存拷贝问题媒体数据处理描述图形的大小,主要有两种表示方法,width,height,表示图像的真实宽高,widthstride,heightstride表示图像在内存中对其到128,16,2后的宽高,内存宽高标识图像在内存中的位置(但是可能有为了填充而产生的无效数据),真实宽高就标识内存中真实有效的数据。JPEG Decode时对JPEG的源图像没有宽高的要求,但是输出的数据,宽会对齐到128,长会对齐到16,对齐后可能会产生一部分的无效数据。VPC 图像缩放,抠图,贴图对输入的源图像宽高对齐到2,对齐后的内存宽高为,宽对齐到16,高对齐到2,输出与输入约束条件相同JPEG Encode 对输入的源图像宽高对齐到2,对齐后的内存宽高为,宽对齐到16或者16的倍数(128时性能更好),高对齐到16。详细的约束对齐规则JPEG DecodeVPCJPEG Encode3.1 步骤分解很多朋友和我一样属于一听就会,一动手就废的类型,在脑海里勾勒出万里江山,实际一上手,我是个傻子。。。。。实际上是我们还没有掌握做事情的诀窍,就是把事情分解成可以很方便用代码描述出的步骤;计算机编程让人感到头皮发麻的一个重要原因就是计算机它只会一步一步来,不会跳步。所以我们脑海里面很简单的步骤在编程实现后也可能代码很长。将常见的JPEG图片解码成YUV格式的图片aclError acldvppJpegDecodeAsync(acldvppChannelDesc *channelDesc, const void *data, uint32_t size, acldvppPicDesc *outputDesc,aclrtStream stream)因为JPEG解码有128x16的对齐要求,所以解码后的数据边缘会出现无效数据,需要进行裁剪aclError acldvppVpcCropAsync(acldvppChannelDesc *channelDesc, acldvppPicDesc *inputDesc, acldvppPicDesc *outputDesc, acldvppRoiConfig *cropArea, aclrtStream stream)进行resize的操作,没有对应的等比例缩放的接口,但是如果我们最后指定的图像大小相对于原图是等比例的,就是等比例缩放aclError acldvppVpcResizeAsync(acldvppChannelDesc *channelDesc, acldvppPicDesc *inputDesc, acldvppPicDesc *outputDesc, acldvppResizeConfig *resizeConfig, aclrtStream stream)进行等比例缩放时需要一个,与模型大小一致的纯色背景图片作为贴图的背景,我们可以申请对应大小的一些区域然后,将对应区域全部赋值为同一个数。aclError aclrtMemset (void *devPtr, size_t maxCount, int32_t value, size_t count)进行贴图aclError acldvppVpcCropAndPasteAsync(acldvppChannelDesc *channelDesc, acldvppPicDesc *inputDesc, acldvppPicDesc *outputDesc, acldvppRoiConfig *cropArea, acldvppRoiConfig *pasteArea, aclrtStream stream)进行模型推理或编码保存3.2 对应的变量怎么声明与初始化DVPP处理的通道的声明与销毁DVPP的一系列操作都是建立在已经声明初始化的通道上,你可以理解为初始化了相关的硬件资源acldvppChannelDesc *channelDesc channelDesc = acldvppCreateChannelDesc(); aclError ret = acldvppCreateChannel(channelDesc); // 销毁与创建的顺序相反 acldvppDestroyChannel(channelDesc); acldvppDestroyChannelDesc(channelDesc);各种图像的操作描述对应的图像的描述信息的创建与销毁acldvppPicDesc *picDesc picDesc = acldvppCreatePicDesc(); acldvppSetPicDescData(picDesc, decodeOutDevBuffer_); // 图像的内存地址 acldvppSetPicDescSize(picDesc, decodeOutBufferSize); // 图像所占的内存大小 acldvppSetPicDescFormat(picDesc, PIXEL_FORMAT_YUV_SEMIPLANAR_420); // 图像的格式 acldvppSetPicDescWidth(picDesc, inputWidth_); // 图像的实际宽 acldvppSetPicDescHeight(picDesc, inputHeight_); // 图像的实际高 acldvppSetPicDescWidthStride(picDesc, decodeOutWidthStride); // 图像在内存中对齐后的宽 acldvppSetPicDescHeightStride(picDesc, decodeOutHeightStride); // 图像在内存中对齐后的高 // 销毁 acldvppDestroyPicDesc(picDesc);申请内存// device侧,200DK等只有device内存的也用此接口,且只用此接口 aclError aclrtMalloc(void **devPtr, size_t size, aclrtMemMallocPolicy policy) aclError aclrtFree(void *devPtr) // host侧 aclError aclrtMallocHost(void **hostPtr, size_t size) aclError aclrtFreeHost(void *hostPtr) // dvpp 内存(在device侧,因为需要内存地址128对齐,所以拥有单独的接口) aclError acldvppMalloc(void **devPtr, size_t size) aclError acldvppFree(void *devPtr)创建抠图,贴图的区域acldvppRoiConfig *acldvppCreateRoiConfig(uint32_t left, uint32_t right, uint32_t top, uint32_t bottom) // 销毁 aclError acldvppDestroyRoiConfig(acldvppRoiConfig *roiConfig)不知道图片的相关信息获取信息的接口// 通过此接口可以方便的获取JPEG图像的宽,高,色彩通道数,编码格式,只需要传入对应的JPEG源数据地址以及大小 aclError acldvppJpegGetImageInfoV2(const void *data, uint32_t size, uint32_t *width, uint32_t *height, int32_t *components, acldvppJpegFormat *format) // 获取JPEG图片解码后的数据大小,因为解码后会对齐到128,所以不能任何时候都简单地依据原图大小计算解码后占用的内存大小。 aclError acldvppJpegPredictDecSize(const void *data, uint32_t dataSize, acldvppPixelFormat outputPixelFormat, uint32_t *decSize) // 获取PNG图像的宽和高 aclError acldvppPngGetImageInfo(const void *data, uint32_t dataSize, uint32_t *width, uint32_t *height, int32_t *components) // 预测PNG图片解码后占用内存空间 aclError acldvppPngPredictDecSize(const void *data, uint32_t dataSize, acldvppPixelFormat outputPixelFormat, uint32_t *decSize) // 获取JPEG图像编码后的占用内存空间 aclError acldvppJpegPredictEncSize(const acldvppPicDesc *inputDesc, const acldvppJpegeConfig *config, uint32_t *size)图像缩放,贴图,抠图相关的接口(当有多个操作动作时建议使用组合接口,虽然看似是多个步骤,实际上硬件内部只是执行一次操作可以大幅度提升处理的效率)// 缩放接口,单一接口,将缩放后的图片作为输出 aclError acldvppVpcResizeAsync(acldvppChannelDesc *channelDesc, acldvppPicDesc *inputDesc, acldvppPicDesc *outputDesc, acldvppResizeConfig *resizeConfig, aclrtStream stream) // 抠图接口,单一接口,从原图中根据ROI区域抠出一部分作为输出 aclError acldvppVpcCropAsync(acldvppChannelDesc *channelDesc, acldvppPicDesc *inputDesc, acldvppPicDesc *outputDesc, acldvppRoiConfig *cropArea, aclrtStream stream) // 组合接口(抠图+缩放),应用场景:JPEG 解码后的图片中可能有无效的数据,直接缩放到模型需要的大小会把无效数据一起输入,可以先把真实图像的数据抠出来然后进行缩放,减少无效的数据干扰。 aclError acldvppVpcCropResizeAsync(acldvppChannelDesc *channelDesc, acldvppPicDesc *inputDesc, acldvppPicDesc *outputDesc, acldvppRoiConfig *cropArea, acldvppResizeConfig *resizeConfig, aclrtStream stream) // 组合接口(抠图+贴图 / 抠图+缩放+贴图)如果抠图与贴图的大小不一致会进行一步缩放操作。 aclError acldvppVpcCropAndPasteAsync(acldvppChannelDesc *channelDesc, acldvppPicDesc *inputDesc, acldvppPicDesc *outputDesc, acldvppRoiConfig *cropArea, acldvppRoiConfig *pasteArea, aclrtStream stream) // 组合接口(抠图+贴图 / 抠图+缩放+贴图)此接口功能与上一个是一致的,但是此接口可以指定不同的缩放算法 aclError acldvppVpcCropResizePasteAsync(acldvppChannelDesc *channelDesc, acldvppPicDesc *inputDesc, acldvppPicDesc *outputDesc, acldvppRoiConfig *cropArea, acldvppRoiConfig *pasteArea, acldvppResizeConfig *resizeConfig, aclrtStream stream)3.3 实战讲解效果展示:1024x688 =》 416x416// 定义一些全局变量 namespace { std::string aclConfig = "../src/acl.json"; const std::string image_path = "../data/dog2.jpg"; const std::string image_save_path = "../out/dog2.jpg"; int32_t deviceId = 0; aclrtContext context; aclrtStream stream; aclrtRunMode runMode_ = ACL_DEVICE; uint32_t model_width = 416; // 模型需要的图像宽 uint32_t model_height = 416; // 模型需要的图像高 uint32_t image_width = 0; // 图像的真实宽 uint32_t image_height = 0; // 图像的真实高 acldvppChannelDesc *dvppChannelDesc = nullptr; }开始进行解码操作// 将图片读入内存,如果运行模式为(ACL_HOST)模式,需要申请host侧内存存放我们的原始图片数据,然后申请相同大小的device内存拷贝过去。如果运行在(ACL_DEVICE)模式,例如200DK这样的场景,直接申请device内存,不需要进行内存的拷贝搬运。 // 经过读取图片的步骤我们应该能获得如下变量 void* JpegImagePtr; // 原始图像在device侧的内存地址(不管运行在那种方式下的昇腾软件栈都是如此) uint32_t JpegImageSize; // 原始图像的大小 // 我们不了解图像的编码以及真实宽高,还有颜色通道数,所以需要执行获取图像信息的接口 // 图像的原始宽高变量我们前面已经定义过, 所以我们现在只需要定义图像的通道数与编码方式还有图像解码后所占用的内存的大小 int32_t components; // 图像的通道数 acldvppJpegFormat format; // 图像的编码方式 uint32_t JpegdOutSize; void* JpegdOutPtr; aclError ret = acldvppJpegGetImageInfoV2(JpegImagePtr, JpegImageSize, &image_width, &height, &components, &format) aclError ret = acldvppJpegPredictDecSize(JpegImagePtr, JpegImageSize, format, &JpegdOutSize) // 申请存放解码后YUV图像的内存 aclError ret = acldvppMalloc(&JpegdOutPtr, JpegdOutSize); // 设置JPEG解码后图像的描述信息(注意JPEG解码后内存宽高对齐到128x16) acldvppPicDesc* JpegdOutputPicDesc = acldvppCreatePicDesc(); acldvppSetPicDescData(out_pic_desc, JpegdOutPtr); acldvppSetPicDescSize(out_pic_desc, JpegdOutSize); acldvppSetPicDescFormat(out_pic_desc, PIXEL_FORMAT_YUV_SEMIPLANAR_420); acldvppSetPicDescWidth(out_pic_desc, image_width); acldvppSetPicDescHeight(out_pic_desc, image_height); acldvppSetPicDescWidthStride(out_pic_desc, ALIGN_UP128(image_width)); acldvppSetPicDescHeightStride(out_pic_desc, ALIGN_UP16(image_height)); // 执行解码接口 ret = acldvppJpegDecodeAsync(dvppChannelDesc, JpegImagePtr, JpegImageSize, JpegdOutputPicDesc, stream); ret = aclrtSynchronizeStream(stream_);开始进行抠图的操作,因为我们这次需要执行抠图+缩放+贴图三个动作所以我们选择组合API进行编程// 首先声明原图抠图的区域 // 抠图的区域左偏移和上偏移都是偶数 // 抠图的区域右偏移和下偏移都是奇数 uint32_t left = 0; uint32_t top = 0; uint32_t right = image_width % 2 == 0 ? image_width-1 : image_width; uint32_t bottom = image_height % 2 == 0 ? image_height-1 : image_height; acldvppRoiConfig* cropArea = cropConfig = acldvppCreateRoiConfig(left, right, top, bottom); // 计算等比例缩放后的新的宽高(等比例缩放后可能不满足16x2的对齐规则,需要手动进行对齐的操作) void LargeSizeAtLeast(uint32_t W, uint32_t H, uint32_t &newInputWidth, uint32_t &newInputHeight) { INFO_LOG("W:%u H:%u nw:%u, nh:%u", W, H, newInputWidth, newInputHeight); float scaleRatio = 0.0; float inputWidth = 0.0; float inputHeight = 0.0; float resizeMax = 0.0; bool maxWidthFlag = false; inputWidth = (float)W; inputHeight = (float)H; resizeMax = (float)(416); maxWidthFlag = (W >= H) ? true : false; if (maxWidthFlag == true) { newInputWidth = resizeMax; scaleRatio = resizeMax / W; // 高度2对齐 newInputHeight = scaleRatio * H; newInputHeight = ALIGN_UP2(newInputHeight); INFO_LOG("scaleRatio: %.3f, modelInputWidth: %u, modelInputHeight: %d, newInputWidth: %d, newInputHeight: %d", scaleRatio, W, H, newInputWidth, newInputHeight); } else { scaleRatio = resizeMax / H; // 如果高度是长边,建议宽度在等比例缩放后再做一次16对齐。因为vpc在输出时宽有16字节对齐约束,当贴图的宽非16对齐时,会导致在贴图的时候, // 芯片会自动进行16字节对齐,导致每次写入数据的时候都会引入部分无效数据,从而导致精度下降。 newInputWidth = scaleRatio * W; newInputWidth = ALIGN_UP16(newInputWidth); newInputHeight = resizeMax; INFO_LOG("scaleRatio: %.3f, modelInputWidth: %u, modelInputHeight: %d, newInputWidth: %d, newInputHeight: %d", scaleRatio, W, H, newInputWidth, newInputHeight); } } // 设置贴图的范围左偏移要求16对齐 acldvppRoiConfig *InitVpcOutConfig(uint32_t width, uint32_t height, uint32_t modelInputWidth, uint32_t modelInputHeight) { uint32_t right = 0; uint32_t bottom = 0; uint32_t left = 0; uint32_t top = 0; uint32_t left_stride; acldvppRoiConfig *cropConfig; uint32_t small = width < height ? width : height; uint32_t padded_size_half; if (small == width) { padded_size_half = (modelInputWidth - width) / 2; // 贴图区域距离左边界的距离 left = padded_size_half; left_stride = ALIGN_UP16(left); right = (left_stride + width) % 2 == 0 ? (left_stride + width - 1) : (left_stride + width); if (left_stride + right > modelInputWidth) { while (true) { left_stride = left_stride - 16; right = (left_stride + width) % 2 == 0 ? (left_stride + width - 1) : (left_stride + width); if (left_stride + right < modelInputWidth) break; } } right = (left_stride + width) % 2 == 0 ? (left_stride + width - 1) : (left_stride + width); bottom = (modelInputHeight % 2 == 0 ? modelInputHeight - 1 : modelInputHeight); top = bottom - height + 1; } else { padded_size_half = (modelInputHeight - height) / 2; right = (modelInputWidth % 2 == 0 ? modelInputWidth - 1 : modelInputWidth); left = right + 1 - width; left_stride = ALIGN_UP16(left); top = (padded_size_half % 2 == 0 ? padded_size_half : padded_size_half + 1); bottom = (height + top - 1) % 2 == 0 ? (height + top - 2) : (height + top - 1); } INFO_LOG("left_stride=%d, right=%d, top=%d, bottom=Ð7557a86-c79e-418c-bc75-fa080612ce7dn", left_stride, right, top, bottom); cropConfig = acldvppCreateRoiConfig(left_stride, right, top, bottom); if (cropConfig == nullptr) { ERROR_LOG("acldvppCreateRoiConfig failed"); return nullptr; } return cropConfig; } // 设置最后完成等比例缩放后的图像的信息 void* output_ptr = nullptr; uint32_t output_size = YUV420SP_SIZE(ALIGN_UP16(model_width), ALIGN_UP2(model_height)); ret = acldvppMalloc(&output_ptr, output_size); // 申请模板内存 if (ret != ACL_SUCCESS) { ERROR_LOG("acl malloc output is failed"); } ret = aclrtMemset(output_ptr, output_size, 128, output_size); if (ret != ACL_SUCCESS) { ERROR_LOG("mem set 128 is failed"); } acldvppPicDesc *output_Desc = acldvppCreatePicDesc(); acldvppSetPicDescData(output_Desc, output_ptr); acldvppSetPicDescSize(output_Desc, output_size); acldvppSetPicDescFormat(output_Desc, PIXEL_FORMAT_YUV_SEMIPLANAR_420); acldvppSetPicDescWidth(output_Desc, model_width); acldvppSetPicDescHeight(output_Desc, model_height); acldvppSetPicDescWidthStride(output_Desc, ALIGN_UP16(model_width)); acldvppSetPicDescHeightStride(output_Desc, ALIGN_UP2(model_height)); // 执行裁剪加贴图的操作 ret = acldvppVpcCropAndPasteAsync(dvppChannelDesc, JpegdOutputPicDesc, output_Desc, cropArea, pasteArea, stream);完成了一系列的操作总结对于DVPP处理来说,单独的接口调用需要全部满足输入和输出的长宽以及对齐的要求但是对于 JPEG+VPC 这样的串联编程来说前一个组件的输出图像描述是后一个组件的输入描述,设定对齐内存是为了有效标定,图像在内存中的位置,如果固执的设定对齐后的值,对于后一个组件来说很有可能得到的输入是有缺失的信息。根据众多对齐要求我们可以看出,对于图像的原始宽高全部2对齐是一个比较好的习惯,而且常用的图像规格都是偶数例如1920x1080,1280x720, 640x640, 416x416,最好不要出现长或者宽为奇数的情况,因为硬件会自动为奇数进行对齐从而产生无效数据。增加了处理的难度。
  • [行业动态] 浅浅分享“创未来,享非凡”——昇腾AI开发者创享日·南京站
    8月6日“创未来,享非凡”——昇腾AI开发者创享日·南京站成功举办。作为华为面向昇腾AI产业全栈开发者推出的系列活动,创享日旨在汇聚区域伙伴、客户、高校及科研院所的开发人员,为开发者提供一个深度探讨与交流的平台,共创昇腾AI产业的未来。华为与南京农业大学等单位签约“AI+智慧育种”科研项目合作备忘录。东南大学耿新教授分享了机器学习的“基因”,昇腾CANN首席科学家杜鹏演示了“机器狗+AI臂”的神奇组合,如何完成智慧巡检。带着对城市数字化建设的思考,小视科技朱俊以“构建智慧城市AI中枢,建设智慧城市之脑”为演讲主题,与现场的技术大咖分享了小视如何利用“城市AI中枢”赋能智慧城市的新思路。数据、算力与算法:城市数字化升级的三个难题当下,数字化浪潮已对全球经济社会发展产生深刻影响。各国相继将数字化作为国家战略的制高点,我国“十四五”规划和2035年远景目标纲要均提出要加快数字化发展。城市是科技、人文、经济高度集中的产物,也是数字化进程的第一站。近年来,我国智慧城市建设如火如荼,各类技术难题已浮出水面。数据方面,城市级数据采集量巨大,拉高数据运维成本;算法方面,样本量不足导致算法精度差,无法实现交付即智能;算力方面,各委办局的人工智能应用碎片化,对算力平台与算力资源的要求甚高。“城市AI中枢”具备强大的AI算法能力,可全面赋能感知设备,实现数据统一管理、算法按需分配、事件主动告警,协助各委办局全天候监测全城动态,让城市治理走向“一网统管”。核心优势“城市AI中枢”凭借自身优势,为城市治理和服务提供高效决策新引擎。在部署方式上,平台支持“云、边、端”各类硬件,可进行多形态部署。在数据采集上,平台可采集城市监控、政府信息、政务APP等多渠道来源的数据,进行分析挖掘应用。此外,平台针对紧急事件进行智能告警,各部门及时闭环处置,实现跨部门协同,打破智慧城市各委办局之间的感知壁垒,让感知能力与感知结果共用共享。算法实力算法是城市AI中枢的核心。小视科技算法团队具备从图像采集、图像标注到训练、模型等的一整套能力。基于昇腾MindSpore框架模型,产出效率提升6倍以上。这为算法的高效生产,快速落地部署、应用服务与持续迭代提供了强有力的支撑。若政府各委办局提出定制化算法需求,小视团队能够实现最快1个月内落地算法应用。同时,城市AI中枢支持140+大容量算法种类;算法识别速度快、精度高,还可按需申请、自由分配;开放性API接口,轻松对接第三方算法。算力调配为更好地调配算力,城市AI中枢可以根据时间、天气、突发事件、算力资源等设置相对应的算法模板。平台不仅能够自动设置运行策略,高效分配算力,也支持自主调配算力资源,保证负载均衡。如此一来,算力资源可节省5倍以上,总接入视频路数可达百万级。稳扎稳打:超10个智慧城市落地经验“城市AI中枢”如同我们的神经系统,物理分散而逻辑统一,悄无声息地汇入城市运行的每个环节。在华北地区某市,小视科技的“城市AI中枢”对接城市大脑数据中台,汇集文旅、城管、治安、民生、社区、环保、交通等多维数据,接入数万路视频数据进行统一分析挖掘,已形成AI智能化城市巡检,支撑景区安全、流动人员管理、危化品监管、治安监测、交通梳理、垃圾分类、疫情防控、防汛防台等多种场景的巡查治理。城市监控从“看得见”走向“看得懂”,海量数据得到有效应用,城市在算法赋能之下全面转型升级。
  • [活动分享] 8.6看直播,3台 NOVA10送给星耀的昇腾AI开发者!
     #活动已结束,结果告知#【8.6看直播,3台 NOVA10送给星耀的昇腾AI开发者!】##活动已结束,结果已公布##房间标题本轮奖品中奖人账号姓名昇腾AI开发者创享日·南京站华为nova10Ascend2850086000440463519昇腾AI开发者创享日·南京站华为nova10Ascend2850086000519786627韩冰昇腾AI开发者创享日·南京站华为nova10Ascend2850086000485856178杨磊 因Ascend2850086000440463519用户未在抽奖结束后填写收货地址,请尽快私信坛主收货地址进行领奖, 领奖截止时间:8月12日18:00,逾期视为放弃!请所有获奖用户尽快按照:账号中心 - 实名认证 - 个人认证 完成实名认证点击“立即报名”参与【注意事项】1. 请务必使用个人账号参与活动(IAM、企业账号等账号参与无效)。2. 所有获奖用户在兑换奖品前,请在昇腾社区完成实名认证,认证路径为账号中心 - 实名认证 - 个人认证。3 活动结束且用户填写完成领奖信息后,30个工作日内发放奖品,发放时间根据实际情况动态调整,如有延期敬请见谅。4. 本活动最终解释权归昇腾社区所有。
  • [活动分享] #活动已结束,结果已公布 #昇腾社区APP众测活动
    有效建议奖励有效建议排名姓名礼品NO. 1秦*增159****1356HUAWEI MateBook D14NO. 2孙*北138****3260华为智选 360智能扫地机2ProNO. 3姜*176****7852NO. 4历*一156****0950NO. 5田*147****3172 万播智能投影仪 T2R MaxNO. 6章*沛155****1002NO. 7姚*根159****5213NO. 8李*涵131****112NO. 9李*191****4787NO. 10李*强137****1950NO. 11曹*婷159****3816机械键盘NO. 12潘*德136****9440NO. 13林*173****1532NO. 14谢*冉156****3862NO. 15刘*欣185****3595NO. 16魏*峰156****2295NO. 17周*龙155****5918NO. 18诸*朋152****0618NO. 19魏*飞173****4361NO. 20张*135****4392推荐活动 姓名  手机 推荐码有效推荐郭*捷173****1532310142130邓*龙191****237361524584苏*飞137****007135505675李*林186****171961607235昇腾社区APP众测活动已经全部结束恭喜以上获奖用户请推荐活动的用户私信坛主告知收获地址,姓名,手机号(与报名时的一致)请在11月25日18:00之前私信版主告知,逾期视为放弃~(奖品以收到的实物为主,图片仅作示例)#第二批幸运用户名单公布#姓名电话奖品田泽147****3172键盘历天一156****0950键盘#第一批幸运用户名单公布#姓名电话李乐涵131****7112魏振飞173****4361杜 138****7493蔺海宁131****6229潘惠德 136****9440李庆林186****1719章琳沛155****1002谢好冉 156****3862张一  135****4392秦增增159****1356恭喜以上所有幸运开发者,标黄部分的开发者未填写收货地址,请在8月24日18:00之前私信版主告知,逾期视为放弃~添加小助手微信,了解更多精彩【注意事项】1.请务必使用个人账号参与活动(IAM、企业账号等账号参与无效)2.所有获奖用户在兑换奖品前,请在昇腾社区完成实名认证,认证路径为账号中心 - 实名认证 - 个人认证3.若遇奖品缺货,将调整为同等价格的其他礼品4.如核查发现通过违规手段刷注册或邀请的无效账号,则不计入有效邀请人数5.本活动最终解释权归昇腾社区所有
  • [热门活动] #活动已结束,获奖名单已公布#机器狗全网征名:送稚晖君推荐限定版开发者大礼包!!!
    #机器狗全网征名:送稚晖君推荐限定版开发者大礼包!!!已结束,获奖名单已公布# 请以上开发者请尽快私信版主进行领奖,回复: 收货信息,领奖截止到8月24日18:00,逾期视为放弃!(注:因活动需要,在华为云论坛两个板块处发送此帖,结果为两个帖子前三名!)各位机智聪明的开发者,你们脑洞大开的时候到了!CANN首次推出“机器狗+AI臂”的神奇组合缺少个响亮的名字快来一“名”惊人吧!还有神秘大奖等你来拿~~只要你匠心独运只要你别出心裁机器狗全网征名:帮懂你的汪“出名”吧!【产品介绍】:基于Atlas硬件平台实现了基于强化学习的机器狗运动控制、仪器仪表读数识别等视觉感知功能;借助昇腾CANN实现了端到端模块动态调度及算法优化,针对识别到的异常现象,通过机械臂来做异常响应。相比于智能小车巡检,本方案解决了小车在复杂地形下无法行走的问题,同时借助机械臂可以第一时间对险情进行处理。【征名要求】:1. 符合产品要求,内涵深刻;2. 没有歧义,容易理解;3. 如同一案名以最先投稿者为准。【参与方式】:先报名,后回帖 点击“立即报名”,完成报名注册,后跳转活动帖—回帖,即为完成活动。【评选方式】: 点赞或回复 投稿者回复的案名,前3名可获得 人气奖 。【奖励展示】:送稚晖君推荐限定版开发者大礼包!【说明】:1,活动解释权最终归昇腾社区所有。快来点我看机器狗的真容吧
  • [直播&活动公告] 昇腾AI创新大赛获奖秘诀:听完这堂直播课!
    昇腾AI创新大赛2022正在火热招募中本次大赛是面向AI开发者打造的顶级赛事设置两大赛道,32道赛题,1000w+奖金池同时为帮助广大开发者更好地理解赛题和赛制充分发挥技术实力大赛联合昇腾AI训练营CANN训练营共同推出了11场赛题解读系列直播这份超全大赛攻略,赶紧码住! 本期直播邀请了华为重量级大咖进行深度解读在这里您将系统的了解各大赛题赛制更有机会参加CANN训练营系列活动,做“硬核”AI开发者 等什么心动不如行动千万奖金,海量资源,等你来角逐!大赛报名及作品提交时间截止应用赛道:9月15日昇思赛道:9月30日扫码报名
  • [云实验室] 基于昇腾AI处理器的目标检测应用(ACL)-连不上弹性公网IP
    实验到这个步骤的时候,连不上弹性公网IPfailed to connect the device