• [技术干货] 给大模型装上手眼:侠客工坊如何用真实手机构建了企业级数字员工
     摘要: 在移动办公和全渠道营销时代,企业面临大量跨应用、无 API 接口的繁杂移动端业务流程。传统的移动端自动化(如简单录制回放的 RPA)难以应对复杂多变的 UI 弹窗和动态交互。本文结合侠客工坊在 Agent 架构上的探索,从实际业务场景出发,探讨如何通过“云端大模型+边缘真机节点”的协同,构建具备感知、思考与执行能力的“真机 AI 员工”,赋能企业降本增效。随着大语言模型(LLM)从通用对话走向产业落地,AI 的能力正在从“内容生成”向“任务执行”演进。在企业数字化转型中,我们发现一个巨大的断层:一方面是云端强大的算力和模型,另一方面是移动端孤立的、极度依赖人力的碎片化业务链路(例如跨 App 的线索录入、私域运营跟进、多平台内容分发)。为了弥合这一断层,侠客工坊提出了一种基于“真机 AI 员工”的解决方案。它的核心理念是将真实的智能手机作为边缘物理节点,由云端的 LLM 担任“大脑”,将自然语言指令转化为移动端的精准操作。以下我们将从三大典型业务场景入手,拆解其背后的关键技术实现。  场景一:非标业务流程的自动编排与流转业务痛点: 某销售团队需要定期在多个移动端 CRM 和即时通讯软件之间同步客户状态。这些软件通常没有开放的 API 接口。如果使用传统的固定脚本,一旦 App 版本更新或出现“评价弹窗”,整个流程就会中断,维护成本极高。技术解法:大模型意图解析与动态 DAG 规划 真机 AI 员工不再依赖“写死的流程”,而是基于目标驱动(Goal-Oriented)。指令接收与理解: 业务人员下发自然语言指令(如“将今天微信里询问过 SaaS 报价的客户同步到飞书表格”)。系统在云端调用 LLM 进行意图识别。动态任务拆解(Function Calling): 模型将宏大目标拆解为执行图。与传统固定脚本不同,这是一个动态生成的有向无环图(DAG)。自修复与异常处理(Self-Correction): 当 AI 员工在执行“打开联系人”步骤时,如果遇到意外弹窗,云端大脑会根据回传的屏幕实时上下文,动态生成一个“点击关闭按钮”的临时子任务,然后再回归主线任务。这种基于 Agent 的自愈能力,是新一代自动化的核心技术壁垒。场景二:跨应用的视觉语义提取与沉淀业务痛点: 在进行全网内容分发(如短视频矩阵运营)或竞品数据调研时,需要从海量的移动端页面中提取关键信息。由于前端页面结构复杂(甚至采用 Flutter 等自绘引擎),传统的基于 DOM 树或 XML 的元素提取方式往往抓取不到有效数据。技术解法:多模态感知与 UI 语义化解析 AI 员工必须拥有一双能“看懂”屏幕的眼睛,实现所见即所得。从结构解析到视觉识别: 摒弃对底层应用代码结构的强依赖。系统引入视觉大模型(VLM)和轻量级的端侧目标检测算法。屏幕元素的语义映射: 当应用界面传回云端后,算法会识别屏幕上的文字(OCR)、图标边界(Bounding Box),并将其映射为具有业务语义的结构化数据(例如将某个特定的红包图标识别为“促销入口”),而不是单纯的“坐标 x,y”。上下文记忆: AI 员工在浏览过程中,会将提取到的关键信息存储在云端的向量数据库中,形成该任务的短期记忆,方便在后续跨 App 录入时进行调用和比对。场景三:海量移动节点的云边协同与安全执行业务痛点: 当企业需要部署数十乃至数百个“数字员工”来并发处理全渠道营销任务时,如何保障操作的稳定、低延迟,并且符合企业级安全与审计规范?技术解法:无侵入式高并发调度架构 这是一个典型的云边协同计算场景,需要解决指令的高效下发与状态的实时同步。高密度设备矩阵编排: 云端部署集中式的调度中枢,通过轻量级的 RPC 协议与边缘的实体手机节点保持长连接。每个真机节点被抽象为一个计算资源,系统根据任务的优先级和设备的空闲状态进行动态负载均衡。极低延迟的推流与监管: 为了方便业务人员随时接管或审计 AI 员工的工作,底层采用基于硬件编码的视频流实时传输技术。能够在极低带宽消耗下,将真机画面以毫秒级延迟推送到 Web 端控制台。无侵入的仿生执行引擎: 在指令转化为物理操作的最后一步,系统采用底层的标准事件模拟技术。这种无侵入式的设计,不仅避免了对操作系统核心文件的修改,保障了企业资产的合规与安全,同时通过对滑动轨迹、点击频率的仿生学优化,极大提升了业务执行的稳定性和应用的兼容性。总结“真机 AI 员工”代表了移动端业务自动化的一个重要演进方向:从基于规则的执行,走向基于理解的协同。通过结合云端大模型的认知能力与边缘设备的物理执行力,企业可以低成本、高灵活度地打通那些过去被称为“数据孤岛”的移动端业务场景。未来,随着端云协同架构的进一步成熟,这类数字员工将成为企业 SaaS 生态中不可或缺的超级生产力节点。
  • [技术干货] 昇腾平台YOLO训练和推理技术洞察
    1      YOLO介绍YOLO(You Only Look Once)是一种流行的实时目标检测算法,以其高速和高精度著称。与传统的目标检测方法(如R-CNN系列)不同,YOLO将目标检测任务视为单一的回归问题,直接从图像像素中预测边界框和类别概率,实现了“端到端”的检测。         YOLO将输入图像划分为 S×S 的网格(例如7×7),每个网格负责预测多个边界框(Bounding Box)及其置信度(Confidence Score)和类别概率。边界框:包含框的中心坐标、宽高。置信度:反映框内是否存在目标以及预测的准确性。类别概率:使用Softmax预测框内物体的类别。         传统方法(如滑动窗口)需要多次扫描图像,而YOLO仅需“看一次”(You Only Look Once),通过卷积神经网络一次性输出所有检测结果,因此速度极快。         在昇腾(Ascend)平台上运行YOLO(You Only Look Once)目标检测算法具有重要的技术意义和商业价值,尤其在AI加速计算领域。昇腾是华为推出的高性能AI处理器(如Ascend 910/310),结合昇腾AI软件栈(CANN、MindSpore等),能够显著提升YOLO的推理和训练效率。以下是其核心意义:1. 高性能加速,满足实时性需求;2. 边缘到云的灵活部署;3. 软硬件协同优化。 2      系统环境安装         昇腾平台运行YOLO需要安装这些工具:1.     Ascend-cann-toolkit_8.0.RC3_linux-aarch64,2.     Ascend-cann-kernels-910b_8.0.RC3_linux-aarch64,3.     mindspore=2.5.0,4.     python=3.9, python3.9的环境的安装命令如下,python的版本号为3.10或者3.11会报错:conda create -n yolo20250705python3d9d8 python=3.9conda activate yolo20250705python3d9d8 下载CANN8.0相关工具的网址:https://www.hiascend.com/developer/download/community/result?module=cann&cann=8.0.RC3.beta1;将下载得到的工具包传至服务器,然后安装;使用CANN=8.1或者8.2运行YOLO有可能会报错;安装CANN的命令如下:/tmp/Ascend-cann-toolkit_8.0.RC3_linux-aarch64.run --install/tmp/Ascend-cann-kernels-910b_8.0.RC3_linux-aarch64.run --devel  下载MindSpore的网址:cid:link_0;安装MindSpore的命令如下:pip install https://ms-release.obs.cn-north-4.myhuaweicloud.com/2.5.0/MindSpore/unified/aarch64/mindspore-2.5.0-cp39-cp39-linux_aarch64.whl --trusted-host ms-release.obs.cn-north-4.myhuaweicloud.com -i https://pypi.tuna.tsinghua.edu.cn/simple 代码目录:/apply/yolo20250811/ 进入代码目录:cd /apply/yolo20250811安装环境包资源:pip install -r requirements.txt系统需要安装mesa-libGL工具包,不安装有时会报错:sudo yum install mesa-libGLpython环境需要安装这些工具包,不安装有时会报错;albumentations的版本号>=2.0会报错:pip install sympypip install tepip install albumentations==1.4.24 3      昇腾平台的YOLO的训练与推理训练命令;没有“--ms_mode 1”会报错:python train.py --epochs 600 --config ./configs/yolov11/yolov11-n.yaml --data_dir  ./cache/data/coco --keep_checkpoint_max 1 --auto_accumulate True --per_batch_size 25 --weight ./cache/pretrain_ckpt/yolov11n.ckpt --ms_mode 1 推理命令:python ./demo/predict.py --config ./configs/yolov11/yolov11-n.yaml --weight ./cache/pretrain_ckpt/yolov11n.ckpt --image_path ./cache/data/coco/images/val2017/000000550691.jpg yolo训练日志: (yolo20250705python3d9d8) [root@bms-jp ascendyolo_run_for_v811_20250417a1]# python train.py --epochs 600 --config ./configs/yolov11/yolov11-n.yaml --data_dir  ./cache/data/coco --keep_checkpoint_max 1 --auto_accumulate True --per_batch_size 25 --weight ./cache/pretrain_ckpt/yolov11n.ckpt --ms_mode 1/root/miniconda3/envs/yolo20250705python3d9d8/lib/python3.9/site-packages/numpy/core/getlimits.py:549: UserWarning: The value of the smallest subnormal for <class 'numpy.float64'> type is zero.  setattr(self, word, getattr(machar, word).flat[0])/root/miniconda3/envs/yolo20250705python3d9d8/lib/python3.9/site-packages/numpy/core/getlimits.py:89: UserWarning: The value of the smallest subnormal for <class 'numpy.float64'> type is zero.  return self._float_to_str(self.smallest_subnormal)/root/miniconda3/envs/yolo20250705python3d9d8/lib/python3.9/site-packages/numpy/core/getlimits.py:549: UserWarning: The value of the smallest subnormal for <class 'numpy.float32'> type is zero.  setattr(self, word, getattr(machar, word).flat[0])/root/miniconda3/envs/yolo20250705python3d9d8/lib/python3.9/site-packages/numpy/core/getlimits.py:89: UserWarning: The value of the smallest subnormal for <class 'numpy.float32'> type is zero.  return self._float_to_str(self.smallest_subnormal)2025-07-05 22:45:27,447 [INFO] parse_args:2025-07-05 22:45:27,447 [INFO] task                                    detect2025-07-05 22:45:27,447 [INFO] device_target                           Ascend2025-07-05 22:45:27,447 [INFO] save_dir                                ./runs/2025.07.05-22.45.272025-07-05 22:45:27,447 [INFO] log_level                               INFO2025-07-05 22:45:27,447 [INFO] is_parallel                             False2025-07-05 22:45:27,447 [INFO] ms_mode                                 12025-07-05 22:45:27,447 [INFO] max_call_depth                          20002025-07-05 22:45:27,447 [INFO] ms_amp_level                            O22025-07-05 22:45:27,447 [INFO] keep_loss_fp32                          True2025-07-05 22:45:27,447 [INFO] anchor_base                             False2025-07-05 22:45:27,447 [INFO] ms_loss_scaler                          dynamic2025-07-05 22:45:27,447 [INFO] ms_loss_scaler_value                    65536.02025-07-05 22:45:27,447 [INFO] ms_jit                                  True2025-07-05 22:45:27,447 [INFO] ms_enable_graph_kernel                  False2025-07-05 22:45:27,447 [INFO] ms_datasink                             False2025-07-05 22:45:27,447 [INFO] overflow_still_update                   False2025-07-05 22:45:27,447 [INFO] clip_grad                               True2025-07-05 22:45:27,447 [INFO] clip_grad_value                         10.02025-07-05 22:45:27,447 [INFO] ema                                     True2025-07-05 22:45:27,447 [INFO] weight                                  ./cache/pretrain_ckpt/yolov11n.ckpt2025-07-05 22:45:27,447 [INFO] ema_weight                              2025-07-05 22:45:27,447 [INFO] freeze                                  []2025-07-05 22:45:27,447 [INFO] epochs                                  6002025-07-05 22:45:27,447 [INFO] per_batch_size                          252025-07-05 22:45:27,447 [INFO] img_size                                6402025-07-05 22:45:27,447 [INFO] nbs                                     642025-07-05 22:45:27,447 [INFO] accumulate                              3.02025-07-05 22:45:27,447 [INFO] auto_accumulate                         True2025-07-05 22:45:27,447 [INFO] log_interval                            1002025-07-05 22:45:27,447 [INFO] single_cls                              False2025-07-05 22:45:27,447 [INFO] sync_bn                                 False2025-07-05 22:45:27,447 [INFO] keep_checkpoint_max                     12025-07-05 22:45:27,447 [INFO] run_eval                                False2025-07-05 22:45:27,447 [INFO] conf_thres                              0.0012025-07-05 22:45:27,447 [INFO] iou_thres                               0.72025-07-05 22:45:27,447 [INFO] conf_free                               True2025-07-05 22:45:27,447 [INFO] rect                                    False2025-07-05 22:45:27,447 [INFO] nms_time_limit                          20.02025-07-05 22:45:27,447 [INFO] recompute                               False2025-07-05 22:45:27,447 [INFO] recompute_layers                        02025-07-05 22:45:27,447 [INFO] seed                                    22025-07-05 22:45:27,447 [INFO] summary                                 True2025-07-05 22:45:27,447 [INFO] profiler                                False2025-07-05 22:45:27,447 [INFO] profiler_step_num                       12025-07-05 22:45:27,447 [INFO] opencv_threads_num                      02025-07-05 22:45:27,447 [INFO] strict_load                             True2025-07-05 22:45:27,447 [INFO] enable_modelarts                        False2025-07-05 22:45:27,447 [INFO] data_url                                2025-07-05 22:45:27,447 [INFO] ckpt_url                                2025-07-05 22:45:27,447 [INFO] multi_data_url                          2025-07-05 22:45:27,447 [INFO] pretrain_url                            2025-07-05 22:45:27,447 [INFO] train_url                               2025-07-05 22:45:27,447 [INFO] data_dir                                ./cache/data/coco2025-07-05 22:45:27,447 [INFO] ckpt_dir                                /cache/pretrain_ckpt/2025-07-05 22:45:27,447 [INFO] data.dataset_name                       coco2025-07-05 22:45:27,447 [INFO] data.train_set                          /apply/yolo20250811/cache/data/coco/train2017.txt2025-07-05 22:45:27,447 [INFO] data.val_set                            /apply/yolo20250811/cache/data/coco/val2017.txt2025-07-05 22:45:27,447 [INFO] data.test_set                           /apply/yolo20250811/cache/data/coco/test-dev2017.txt2025-07-05 22:45:27,447 [INFO] data.nc                                 802025-07-05 22:45:27,447 [INFO] data.names                              ['person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light', 'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow', 'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee', 'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard', 'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple', 'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch', 'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone', 'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear', 'hair drier', 'toothbrush']2025-07-05 22:45:27,447 [INFO] train_transforms.stage_epochs           [590, 10]2025-07-05 22:45:27,447 [INFO] train_transforms.trans_list             [[{'func_name': 'mosaic', 'prob': 1.0}, {'func_name': 'copy_paste', 'prob': 0.1, 'sorted': True}, {'func_name': 'resample_segments'}, {'func_name': 'random_perspective', 'prob': 1.0, 'degrees': 0.0, 'translate': 0.1, 'scale': 0.5, 'shear': 0.0}, {'func_name': 'albumentations'}, {'func_name': 'hsv_augment', 'prob': 1.0, 'hgain': 0.015, 'sgain': 0.7, 'vgain': 0.4}, {'func_name': 'fliplr', 'prob': 0.5}, {'func_name': 'label_norm', 'xyxy2xywh_': True}, {'func_name': 'label_pad', 'padding_size': 160, 'padding_value': -1}, {'func_name': 'image_norm', 'scale': 255.0}, {'func_name': 'image_transpose', 'bgr2rgb': True, 'hwc2chw': True}], [{'func_name': 'letterbox', 'scaleup': True}, {'func_name': 'resample_segments'}, {'func_name': 'random_perspective', 'prob': 1.0, 'degrees': 0.0, 'translate': 0.1, 'scale': 0.5, 'shear': 0.0}, {'func_name': 'albumentations'}, {'func_name': 'hsv_augment', 'prob': 1.0, 'hgain': 0.015, 'sgain': 0.7, 'vgain': 0.4}, {'func_name': 'fliplr', 'prob': 0.5}, {'func_name': 'label_norm', 'xyxy2xywh_': True}, {'func_name': 'label_pad', 'padding_size': 160, 'padding_value': -1}, {'func_name': 'image_norm', 'scale': 255.0}, {'func_name': 'image_transpose', 'bgr2rgb': True, 'hwc2chw': True}]]2025-07-05 22:45:27,447 [INFO] data.test_transforms                    [{'func_name': 'letterbox', 'scaleup': False, 'only_image': True}, {'func_name': 'image_norm', 'scale': 255.0}, {'func_name': 'image_transpose', 'bgr2rgb': True, 'hwc2chw': True}]。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。[INFO] albumentations load success[WARNING] ME(50295:281473090502688,MainProcess):2025-07-05-22:46:03.231.109 [mindspore/run_check/_check_version.py:305] The version 7.6 used for compiling the custom operator does not match Ascend AI software package version 7.5 in the current environment......2025-07-05 22:47:15,474 [WARNING] Epoch 1/600, Step 1/2, accumulate: 3.0, this step grad overflow, drop. Loss scale adjust to 32768.02025-07-05 22:47:15,809 [WARNING] Epoch 1/600, Step 2/2, accumulate: 3.0, this step grad overflow, drop. Loss scale adjust to 16384.02025-07-05 22:47:16,184 [INFO] Epoch 1/600, Step 2/2, imgsize (640, 640), loss: 3.5250, lbox: 1.0629, lcls: 1.3194, dfl: 1.1426, cur_lr: 1.9966999388998374e-052025-07-05 22:47:17,505 [INFO] Epoch 1/600, Step 2/2, step time: 49088.29 ms2025-07-05 22:47:18,444 [INFO] Saving model to ./runs/2025.07.05-22.45.27/weights/yolov11-n-1_2.ckpt2025-07-05 22:47:18,444 [INFO] Epoch 1/600, epoch time: 1.65 min.2025-07-05 22:47:18,710 [WARNING] Epoch 2/600, Step 1/2, accumulate: 3.0, this step grad overflow, drop. Loss scale adjust to 8192.02025-07-05 22:47:19,024 [INFO] Epoch 2/600, Step 2/2, imgsize (640, 640), loss: 3.6963, lbox: 1.0847, lcls: 1.4422, dfl: 1.1694, cur_lr: 3.986799856647849e-052025-07-05 22:47:19,037 [INFO] Epoch 2/600, Step 2/2, step time: 296.27 ms2025-07-05 22:47:19,945 [INFO] Saving model to ./runs/2025.07.05-22.45.27/weights/yolov11-n-2_2.ckpt2025-07-05 22:47:19,946 [INFO] Epoch 2/600, epoch time: 0.03 min.2025-07-05 22:47:20,223 [WARNING] Epoch 3/600, Step 1/2, accumulate: 3.0, this step grad overflow, drop. Loss scale adjust to 4096.0   yolo推理日志: (yolo20250705python3d9d8) [root@bms-jp ascendyolo_run_for_v811_20250417a1]# python ./demo/predict.py --config ./configs/yolov11/yolov11-n.yaml --weight ./cache/pretrain_ckpt/yolov11n.ckpt --image_path ./cache/data/coco/images/val2017/000000550691.jpg                                                                                                                                              /root/miniconda3/envs/yolo20250705python3d9d8/lib/python3.9/site-packages/numpy/core/getlimits.py:549: UserWarning: The value of the smallest subnormal for  type is zero.     setattr(self, word, getattr(machar, word).flat[0])                                                                                                                                                /root/miniconda3/envs/yolo20250705python3d9d8/lib/python3.9/site-packages/numpy/core/getlimits.py:89: UserWarning: The value of the smallest subnormal for  type is zero.      return self._float_to_str(self.smallest_subnormal)                                                                                                                                                /root/miniconda3/envs/yolo20250705python3d9d8/lib/python3.9/site-packages/numpy/core/getlimits.py:549: UserWarning: The value of the smallest subnormal for  type is zero.     setattr(self, word, getattr(machar, word).flat[0])                                                                                                                                                /root/miniconda3/envs/yolo20250705python3d9d8/lib/python3.9/site-packages/numpy/core/getlimits.py:89: UserWarning: The value of the smallest subnormal for  type is zero.      return self._float_to_str(self.smallest_subnormal)                                                                                                                                                2025-07-05 22:50:19,157 [WARNING] Parse Model, args: nearest, keep str type                                                                                                                         2025-07-05 22:50:19,204 [WARNING] Parse Model, args: nearest, keep str type                                                                                                                         2025-07-05 22:50:19,584 [INFO] number of network params, total: 2.639747M, trainable: 2.624064M                                                                                                     [WARNING] ME(66771:281473260486688,MainProcess):2025-07-05-22:50:26.245.7 [mindspore/train/serialization.py:1956] For 'load_param_into_net', remove parameter prefix name: ema., continue to load.  2025-07-05 22:50:26,023 [INFO] Load checkpoint from [./cache/pretrain_ckpt/yolov11n.ckpt] success.                                                                                                  .Warning: tiling offset out of range, index: 32                                                                                                                                                     .Warning: tiling offset out of range, index: 32                                                                                                                                                     .Warning: tiling offset out of range, index: 32                                                                                                                                                     Warning: tiling offset out of range, index: 32                                                                                                                                                      Warning: tiling offset out of range, index: 32                                                                                                                                                      Warning: tiling offset out of range, index: 32                                                                                                                                                      ..2025-07-05 22:51:27,507 [INFO] Predict result is: {'category_id': [6, 3, 3, 6, 6], 'bbox': [[194.125, 54.75, 243.875, 354.25], [115.25, 286.5, 82.25, 68.0], [442.0, 283.0, 24.0, 20.0], [3.25, 215.25, 160.75, 64.0], [3.875, 215.5, 159.875, 96.5]], 'score': [0.93115, 0.90283, 0.70898, 0.58154, 0.45508]}                                                                                        2025-07-05 22:51:27,507 [INFO] Speed: 61360.0/11.5/61371.5 ms inference/NMS/total per 640x640 image at batch-size 1;                                                                                2025-07-05 22:51:27,507 [INFO] Detect a image success.                                                                                                                                              2025-07-05 22:51:27,516 [INFO] Infer completed.     4      总结         在昇腾(Ascend)平台上成功运行YOLO模型的训练和推理,通过CANN软件栈和MindSpore框架的深度适配,实现了高效的算子优化及硬件加速(如昇腾910B/310)。关键技术包括动态分片、混合精度训练和DVPP硬件预处理,显著提升了目标检测的推理性能。昇腾NPU在CV任务中的具有强大的竞争力。昇腾显卡在边缘计算、智能安防等场景的AI部署具有重要的产业意义。        
  • [问题求助] 流程开发使用vxml在添加流程时路径能否使用主机名
     【问题来源】    公司开发环境    【问题简要】    流程开发使用vmxl,在添加流程时,流程路径IP能否换成服务器的主机名。【问题类别】    CTI【AICC解决方案版本】    AICC版本:AICC 22.200    UAP版本:UAP9600 V100R005C00SPC113    CTI版本:ICD V300R008C25spc012【期望解决时间】    尽快【问题现象描述】    流程开发使用vxml,在添加流程时,流程路径配置为http://99.85.165.70/WLB.IVR/VDN/37117333_CallFlow.vxml,请问能否将99.85.165.70这个IP地址修改为服务器的主机名,例如:/etc/hosts配置如下,路径能否修改成http://ivr/WLB.IVR/VDN/37117333_CallFlow.vxml​was配置示例:​
  • [热门活动] 【数字人专题直播有奖提问】DTSE Tech Talk 技术直播 NO.31:看直播提问题赢华为云定制长袖卫衣、华为云定制Polo衫等好礼!
    中奖结果公示感谢各位小伙伴参与本次活动,本次活动获奖名单如下:请各位获奖的伙伴在6月9日之前点击此处填写收货地址,如逾期未填写视为弃奖。再次感谢各位小伙伴参与本次活动,欢迎关注华为云DTSE Tech Talk 技术直播更多活动~直播简介【直播主题】突破传统,AI在加速“孵化”你的数字人【直播时间】2023年6月8日 16:30-18:00【直播专家】季鹏磊 华为云媒体DTSE技术布道师【直播简介】虚拟数字人一直是业界的热点研究问题,广泛应用在营销、直播、AR、VR等场景中。而传统的数字人制作流程非常依赖于美术人员,制作周期长、成本高、生产效率低。本次分享主要介绍华为云数字内容生产线MetaStudio中的数字人制作管线背后的一些关键技术,利用计算机视觉和图形学等技术,来提升数字人模型制作和动画制作的效率,具体包括高精度三维人脸重建、个性化人脸自动绑定、实时面部表情捕捉等技术,最后介绍一下基于隐式表示的数字人建模和驱动相关前沿技术和应用前景。直播链接:cid:link_2活动介绍【互动方式】直播前您可以在本帖留下您疑惑的问题,专家会在直播时为您解答。直播后您可以继续在本帖留言,与专家互动交流。我们会在全部活动结束后对参与互动的用户进行评选。【活动时间】即日起—2023年6月8日【奖励说明】评奖规则:活动1:直播期间在直播间提出与直播内容相关的问题,对专家评选为优质问题的开发者进行奖励。奖品:华为云定制长袖卫衣活动2:在本帖提出与直播内容相关的问题,由专家在所有互动贴中选出最优问题贴的开发者进行奖励。奖品:华为云定制Polo衫更多直播活动直播互动有礼:官网直播间发口令“华为云 DTSE”抽华为云定制棒球帽、填写问卷抽华为云定制双肩包等好礼。分享问卷有礼 :邀请5位朋友以上完成问卷即可获得华为云定制飞盘。戳我填问卷》》老观众专属福利:连续报名并观看DTT直播3期以上抽送华为云DTT定制T恤。【注意事项】1、所有参与活动的问题,如发现为复用他人内容,则取消获奖资格。2、为保证您顺利领取活动奖品,请您在活动公示奖项后2个工作日内私信提前填写奖品收货信息,如您没有填写,视为自动放弃奖励。3、活动奖项公示时间截止2023年6月9日,如未反馈邮寄信息视为弃奖。本次活动奖品将于奖项公示后30个工作日内统一发出,请您耐心等待。4、活动期间同类子活动每个ID(同一姓名/电话/收货地址)只能获奖一次,若重复则中奖资格顺延至下一位合格开发者,仅一次顺延。5、如活动奖品出现没有库存的情况,华为云工作人员将会替换等价值的奖品,获奖者不同意此规则视为放弃奖品。6、其他事宜请参考【华为云社区常规活动规则】。
  • [应用开发] 在MDC300昇腾Ascend310上,推理时间远超预期
    当前用的Ascend310,官方YOLOV5S推理时间约380毫秒,SIGMOD函数已被替换,性能上没有明显提升,文档中说的算力为60TOPS,这个时间严重超时,理论上时间应该在3.5毫秒左右,实际上相差了两个数量级,还没有8核CPU推理的速度快,希望提供明确的解决方案
  • [常见FAQ] 不同帧工作台的数量会变吗?还是从初始化开始就固定数量了?
    不同帧工作台的数量会变吗?还是从初始化开始就固定数量了?
  • [技术干货] ZYNQ7035 PL Cameralink回环例程
    本文主要介绍说明XQ6657Z35-EVM评估板Cameralink回环例程的功能、使用步骤以及各个例程的运行效果。(基于TI KeyStone架构C6000系列TMS320C6657双核C66x 定点/浮点DSP以及Xilinx Zynq-7000系列SoC处理器XC7Z035-2FFG676I设计的异构多核评估板,由核心板与评估底板组成。评估板CameraLink功能支持2路Base输入、或者2路Base输出、或者1路Full 输入或输出)ZYNQ7035 PL Cameralink回环例程1.1.1 例程位置ZYNQ例程保存在资料盘中的Demo\ZYNQ\PL\base_cameralink_loop\prj文件夹下。1.1.2 功能简介Cameralink回环例程将J3、J4当作两个独立的Base Cameralink接口使用,一个接收,另一个发送。Cameralink接收端,利用Xilinx ISERDESE2原语进行串/并转换,将LVDS串行数据转换成28bit的cameralink并行数据。解串后的并行数据通过ila进行在线分析和查看,并实时检测并行数据是否有误码。Cameralink发送端,利用Xilinx OSERDESE2原语进行并/串转换,将本地28bit cameralink并行数据串行化为LVDS数据发送出去。1.1.3 Cameralink接口时序说明1.1.3.1 Cameralink三种配置模式Base模式:只需一根Cameralink线缆;4对差分数据、1对差分时钟;Medium模式:需要两根Cameralink线缆;8对差分数据、2对差分时钟;Full模式:需要两根Cameralink线缆;12对差分数据、3对差分时钟。各种模式下,统一都包含一组控制口和一组串口。控制口有4根信号,用于图像采集端对相机的IO控制;串口用于图像采集端对相机参数的配置。1.1.3.2 单路差分数据与时钟之间时序关系单路Cameralink差分数据与随路的差分像素时钟之间的时序关系如下图所示:一个时钟周期内传输7bits串行数据,首先传输串行数据的最高位,最后传输串行数据的最低位。7bits数据起始于像素时钟高电平的中间位置,即数据的最高位在Clock高电平的中间时刻开始传输。Clock高电平时间比Clock低电平时间多一个bit位。1.1.3.3 通道传输数据与图像数据映射关系1路差分数据通道上,一个Clock像素时钟周期传输7bits串行数据,那么4路差分数据通道总共就是4*7bits=28bits,我们称这28bits数据为并行数据,为了方便描述,这28bits数据记为TX/RX27~0。Cameralink Base模式下,这28bits数据与图像行/场同步/数据有效标记、图像数据的映射关系如下图所示:TX/RX24映射为行同步标记LVAL,TX/RX25映射为场同步标记FVAL,TX/RX26映射为图像数据有效标记DVAL,TX/RX23未使用,其余位对应图像数据。1.1.3.4 28位并行数据与4路差分数据传输通道之间的映射关系上述28位并行数据是如何通过4路差分数据传输通道进行传输的呢?28位并行数据映射到4路差分数据传输通道各个时刻点的位置关系如下图所示:1.1.4 管脚约束ZYNQ PL工程管脚约束如下图所示:1.1.5 例程使用1.1.5.1 连接Cameralink线缆使用Cameralink线缆将J3、J4两个接口连接在一起:1.1.5.2 加载运行ZYNQ程序1.1.5.2.1 打开Vivado工程打开Vivado示例工程:工程打开后界面如下图所示:1.1.5.2.2 下载ZYNQ PL程序下载bit流文件base_cameralink_loop.bit,并且配套base_cameralink_loop.ltx调试文件,如下图下载界面所示:1.1.5.3 运行结果说明ZYNQ PL端提供的ILA调试窗口,可以实时抓取采集Cameralink并行信号以及错误检测信号的时序波形。hw_ila_1调试界面抓取Cameralink并行发送数据,是一个28bits的累加数:hw_ila_2调试界面抓取Cameralink并行接收数据、接收误码统计以及接收误码实时标识信号,如下图所示:cameralink_rx_err_num显示有数值,则说明Cameralink接收过程中存在误码。可能在开始通信初始化期间存在误码现象,导致cameralink_rx_err_num误码统计累加。待程序下载完毕后,如果Cameralink通信正常的话,cameralink_rx_err_num误码统计应该不会再累加。如果cameralink_rx_err_num误码统计继续不断累加,则通过触发camera_rx_error信号可以捕捉到误码具体发生时刻。1.1.5.4  退出实验Vivado调试界面Hardware Manager窗口,右键单击localhost(1),在弹出的菜单中点击Close Server,断开ZYNQ JTAG仿真器与板卡的连接:最后,关闭板卡电源,结束。
  • [互动交流] 请问TE20有个接口是获取主流视频源的,这是获取视频流的接口吗
    请问TE20有个接口是获取主流视频源的,这是获取视频流的接口吗经过测试返回的数据是空,技术客服说是TE20不支持获取视频流。那这个接口的意义是什么
  • [硬件整机] 摄像头读取图像格式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.其他方法
  • [问题求助] psman调用cms接口返回参数不合法
    问题来源】【必填】贵州省农村信用社AICC项目【问题简要】使用PSMAN调用cms接口https://11.19.104.25:18400/rest/cmsapp/v1/openapi/hisindex/vdn返回“参数不合法”【问题类别】【必填】cms问题【AICC解决方案版本】【必填】【AICC可选择版本:AICC 8.15.0】【UAP可选择版本:UAP9600 V100R005C00SPC018等】【CTI可选择版本:ICD V300R008C23SPC001】【问题现象描述】【必填】使用PSMAN调用cms接口https://11.19.104.25:18400/rest/cmsapp/v1/openapi/hisindex/vdn返回“参数不合法”如下图所示
  • [问题求助] 利用小熊开发板HM-Micro链接摄像头,做一些视觉监测的任务
    有没有哪位大佬知道,如何利用板子和摄像头(USB)搭建一下视觉检测系统,完成一些视觉的东西,比如拍照,人脸识别,图像识别等等
  • [问题求助] 安装DV网管时报错
    【问题来源】    星网    【问题简要】 安装DV一体机组网时报错【问题类别】    DV【AICC解决方案版本】DigitalView_8.121.090【期望解决时间】   尽快【问题现象描述】【必填】 安装DV一体机组网时报错,提示“错误码:InstallMgr000004----描述信息:安装管理面数据库失败----可能影响:管理面安装失败----修复建议:请参考错误码InstallMgr000004修复建议”。在文档中并未找到该故障码。 【日志或错误截图】
  • [参赛经验分享] 2022“域见杯”医检人工智能开发者大赛三等奖方案分享——limzero++团队
    模型选择Swin-Transformer    线上分数57+,主要受限于尺度EfficientNet-b0  线上分数59+ConvNeXt-tiny 表现最优,作为我们的最终选择以上三个系列模型,在绝大多数视觉任务上的表现都十分优秀。对于本次竞赛,输入分辨率很大程度影响模型的精度,但是线上环境限制了推理时间,经过大量实验ConvNeXt 表现最优。对于线上/线下不一致的思考该比赛的线下验证和线上测试的GAP较大(20~30个点),因此怀疑两个原因:线上测试集添加了对抗样本线上测试集的整体分布和线下数据差异较大线上测试集里面大部分都是hard sample
  • [参赛经验分享] 2022“域见杯”医检人工智能开发者大赛,总决赛第七名(E305团队经验分享)
    非常感谢!!!金域医学联合华为举办这场《2022“域见杯”医检人工智能开发者大赛》疯狂比赛的那段时光,现在还历历在目,“疯狂”,“废寝忘食”,“彻夜难眠”,用这几个词形容一点都不为过通过比赛即可以在自己的专业方向和高水平的团队巅峰对决,弥补自己再专业方向不足之处,又可以获得一份荣誉和现金奖励作为一个即将毕业的研究生,这是求职很好的敲门砖,为能进更好的企业做铺垫接下来是经验分享,有兴趣的童鞋,可以看看,谢谢捧场!!!竞赛题目:本赛题任务是对DCCL宫颈深部细胞学病变(Deep Cervical Cytological Lesions)图像数据库中的7种细胞分为4个类别(NILM、ASC-US&LSIL、ASC-H&HSIL、SCC&AdC,见“数据说明”部分)进行分类。赛题数据: 数据集包含 8619 张宫颈细胞学图片,图片中总共包含7种细胞,其基本信息如下图所示。同时数据包含多种分辨率:2118*1270、4000*2400等。  当前图像分类模型的研究多针对特征明显的单一尺度数据,此次比赛的数据属于弱特征多尺度数据解题思路: 探索性数据分析:整体方案:传统宫颈深部细胞学病变分类方法多基于手工提取特征进行分类模型构建,本次比赛的数据属于弱特征多尺度数据,手工提取特征困难。本方法采用了基于ConvNeXt和多种数据增强的基本思路,其在免除大规模特征工程的同时具有准确率高、鲁棒性强的特点研究难点(结合具体数据集)1.训练数据特征较弱(抗干扰);2.AB数据集尺度不同(适应性);3.模型预测准确有效(准确性)。数据预处理网络设计与训练​​​​​​​数据预处理推理优化​​​​​​​总结​​​​​​​数据预处理数据预处
  • [参赛经验分享] 2022“域见杯”医检人工智能开发者大赛,E305团队经验分享
    基于ConvNeXt的宫颈深部细胞学病变分类方法,以下是我们的经验分享