• [知识分享] 开发者技术支持-鸿蒙 Glide加载网络图片
    1.引入glide依赖 implementation 'io.openharmony.tpc.thirdlib:glide:1.0.3'2.核心代码: //new RoundedCorners(10)圆角 //new CircleCrop()-圆形 RequestOptions requestOptions = RequestOptions.centerCropTransform().transform(new CircleCrop()).diskCacheStrategy(DiskCacheStrategy.NONE)//不做磁盘缓存 .skipMemoryCache(true).placeholder(ResourceTable.Media_boy).error(ResourceTable.Media_boy);//不做内存缓存; Glide.with(getContext()) .load("https://xxx.png") .apply(requestOptions) .into(user_icon);
  • [技术干货] 昇腾平台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部署具有重要的产业意义。        
  • [技术干货] 摄影师必看!GIMP 2.10超详细下载教程,RAW处理+图层管理全解析
    一、软件定位与核心功能GIMP(GNU Image Manipulation Program)是开源跨平台图像编辑工具,支持图层管理、高级修图、色彩校正等功能,被广泛应用于平面设计、照片修复等领域。相比商业软件,其优势包括:全功能免费:支持PSD文件编辑、CMYK色彩模式插件生态丰富:600+扩展插件增强功能硬件要求低:1GB内存即可流畅运行二、安装环境准备1. 系统要求项目最低配置推荐配置操作系统Windows 7Windows 10/11内存1GB4GB+存储空间200MB1GB SSD2. 运行库检测需安装最新版 Microsoft Visual C++ Redistributable(安装包已集成,无需单独下载)三、安装流程详解步骤1:获取安装包访问GIMP官方安装包下载页:https://pan.quark.cn/s/5de67e6f6176/,选择 gimp-2.10.38-setup-1.zip步骤2:启动安装程序解压压缩包, 右键以管理员身份运行 gimp-2.10.38-setup-1.exe 文件,选择简体中文安装语言:步骤3:左下角点击自定义,设置安装路径建议修改默认路径(示例):D:\DesignTools\GIMP 2.10 步骤4:选择组件安装勾选以下核心组件:☑️ 核心程序文件☑️ 附加图标集☑️ Python脚本支持(开发扩展必备)步骤5:完成安装勾选 创建桌面快捷方式,等待进度条完成后点击完成四、首次运行配置1. 初始化设置首次启动时选择工作区布局(推荐 Default 或 Dark 主题)2. 中文语言包安装通过 Edit > Preferences > Interface > Language 选择「简体中文」,重启生效五、功能验证测试1:基础图像处理打开示例图片,使用 自由选区工具 进行抠图操作测试2:插件扩展安装通过 菜单 > 帮助 > 显示插件浏览器 安装第三方插件(如G'MIC图像特效库)六、常见问题解答Q1:启动时报错"MSVCP140.dll 丢失"?安装Visual Studio 2015+运行库或重新运行安装包勾选 Install runtime 选项Q2:如何导出PSD文件?通过 文件 > 导出为 选择Photoshop格式,保留图层信息Q3:软件界面显示异常?重置用户配置:删除 C:\Users\用户名\.gimp-2.10 文件夹七、延伸学习GIMP官方手册:https://docs.gimp.org/2.10/zh_CN/声明:本教程使用GIMP官方安装包制作,遵循GPLv3开源协议。原创内容转载请注明来源。
  • [工具链] MDC300使用OpenGL进行360环视算法开发
    我们现在使用MDC300去开发环视算法,使用OpenGL ES渲染1.MDC610是有使用GPU加速OpenGL ES?2.MDC300没有GPU,是不是就只能使用host芯片自带CPU跑?,我理解mini芯片的NPU是加速AI相关的,应该无法用来搞这方面的那岂不是说使用MDC300开发OpenGL渲染相关的会很吃力,毕竟MDC610也使用GPU加速渲染?请帮忙再回答一下,万分感谢!!!
  • [应用开发] MDC300环视算法开发
            我们现在使用MDC300去开发环视算法,使用OpenGL ES渲染1.MDC610是有使用GPU加速OpenGL ES2.MDC300没有GPU,是不是就只能使用host芯片自带CPU跑了,我理解mini芯片的NPU是加速AI相关的,应该无法用来搞这方面的那岂不是说使用MDC300开发OpenGL渲染相关的会很吃力,毕竟MDC610也使用GPU加速渲染
  • [应用开发] MDC300相机和Hi3559的ISP使用
    您好!关于相机ISP有个问题想咨询一下:         1.我们这边目前需要在MDC300接多路相机采集视频,相机传输距离比较长,请问相机带ISP和Hi3559的ISP对传输距离的影响?一般传输距离最长多少?你们那边有做过测试吗?         2.我们想对多相机采集的视频进行白平衡统一处理,请问是用含独立ISP的相机合适,还是更推荐用不含ISP的相机采集后用Hi3559芯片统一处理呢?
  • [教程] 基于MobilenetV2的猫狗识别APP应用部署
    第1章 系统实现1.1  环境准备使用Anaconda作为Python虚拟环境的管理。去Anaconda官网自行下载,一路Next即可。安装完毕后,在虚拟环境中下载python版本,然后验证python版本是否安装成功。如下图所示   打开MindSpore官网MindSpore安装指南,选择conda命令以及相应环境获取安装命令,安装完成后根据查验指令查看MindSpore版本。如下图所示。1.2  数据集预处理   将工作目录切换到代码所在路径下,将下载的数据集解压,执行收集处理数据集脚本preprocessing_dataset.py,对不符合条件的图片进行删除,筛选尺寸符合要求的图片。运行结果如上图所示,将制定目录下的数据集解压完成后删除不符合条件的图片,然后将剩余图片划分成训练集和测试集,将最后的数据集保存至制定目录下。1.3  模型训练     执行训练脚本,开始生成模型文件,用于图像处理的依赖包如OpenCV-python、matplotlib等,会自动安装,用于图像处理,脚本会在正式训练前从爆弹6张图片载入当前模型文件,对猫狗进行判别,如上图所示,部分猫狗明确数据图预测错误,点击图片关闭图片,使脚本正式进入微调训练。    微调训练阶段,先对数据进行特征采集,然后进入迭代训练,训练时模拟模型的精确进行测试,当训练的模型精度超过当前模型时,就会将图模型抑制下来,如下图所示。训练是不断重复的过程,通过循环批数据的输入,进行可以计算,逼近损失/最小的那个模型。每一次训练中打印相关的评价指标,随着迭代数的增加,增加平均损失函数(avg loss)逐步降低,精确(acc)逐步提高。可以看到最好的训练精度在第6个epoch时,准确率达到99.0%,训练总共花了大概28分钟,最后将训练好的模型导出到对应文件夹目录下。训练完成,脚本会再调用之前的图片对微调后的模型进行验证,如下图所示,所有图片分类正确,说明模型精确满足要求,点击图片关闭图片,使脚本继续运行完成文件转换。1.4  手机端推理和部署因为直接训练出的midir模型并不能直接部署到手机上,所以我们需要进行模型转换,利用新版的converter模型转换工具将训练好导出的Mobilenetv2模型转换为pet.ms。结果如下图所示,成功转换。然后使用Notepad++编写所需要的json文件,将json文件与pet.ms一同导入手机中。                       上图为编写的json文件                             上图为在手机的文件管理中查看导入的两个文件第2章 测试分析首先利用MindSpore Vision拍照进行识别。          然后利用Mindspore vision对输入的图片进行预测,图片包括一些正常的图片、一些表情包、卡通风格的图片等。          和原通用功能相比,本模型具有较好的识别能力,可以针对不同场景,以较高正确率识别出小猫和小狗。
  • [问题求助] MDC300的OpenGL可视化
    您好!我目前需要在MDC300中部署我们的360环视算法,直接在MDC里运行OpenGL的一个小demo,无法调用Opengl的窗口在上位机Ubuntu系统显示,也无法直接在MDC端可视化。请问是因为可视化一定需要通过ROS转发,然后通过MDC的Mviz工具进行显示吗?Mviz如何和OpenGL配合实现交互式的可视化?有没有其他的可视化办法?我看MDC里没有OpenGL相关示例,老哥那边有在MDC开发360环视算法或者OpenGL的示例或者其他资料吗?
  • [问题求助] MDC300配置MDC直连网络
        如图所示,我按照MDC300产品文档完成了MDC直连网络配置的全部流程,如ifconfig显示:192.168.43.71是我无限网卡给上位机Ubuntu提供的IP(由手机开热点给Ubuntu联网),192.168.3.100是我通过网线连接转接盒B2口的IP,登陆B2口192.168.3.6进入MDC,修改完配置之后,我重新修改了网线的IP为192.168.43.100,否则无法ping通192.168.43.71,但无法通过ssh sshusr@192.168.43.71登陆。我最后通过MDC的GE调试口连接192.168.1.6进入了MDC,但在MDC里还是无法ping通外网,显示 From 192.168.43.71 icmp_seq=1 Destination Host Unreachable
  • [技术干货] HttpClient最丰富和灵活的版本
    // Java 8 and earlier import java.io.IOException; import java.net.HttpURLConnection; import java.net.URL; public class Main { public static void main(String[] args) throws IOException { URL url = new URL("https://www.example.com"); HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.setRequestMethod("GET"); int status = con.getResponseCode(); System.out.println(status); } } // 优点:简单易用。缺点:功能有限,不够灵活。 // Java 8 import java.io.IOException; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; public class Main { public static void main(String[] args) throws IOException, InterruptedException { HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://www.example.com")) .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.statusCode()); } } // 优点:比Java 8和之前的版本具有更多的功能和灵活性。缺点:仍然缺少一些高级功能。 // Java 9 import java.io.IOException; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; public class Main { public static void main(String[] args) throws IOException, InterruptedException { HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://www.example.com")) .GET() .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.statusCode()); } } // 优点:添加了Java 8中缺少的一些功能。缺点:仍然不如Java 11功能丰富。 // Java 11 import java.io.IOException; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; public class Main { public static void main(String[] args) throws IOException, InterruptedException { HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://www.example.com")) .GET() .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.statusCode()); } } // 优点:HttpClient最丰富和灵活的版本。缺点:需要Java 11或更高版本。​
  • [热门活动] 玩转AI绘画提示词
    部署到云上服务,现在开始跟我玩转AI绘画提示词Prompthttps://zkkis.github.io/基于预训练语言模型的研究思路通常是“pre-train, fine-tune”,即将PLM应用到下游任务上,在预训练阶段和微调阶段根据下游任务设计训练对象并对PLM本体进行调整prompt中文译为提示,它能够帮助PLM“回忆”起自己在预训练时“学习”到的东西,因此后来慢慢地被叫做Prompt了。Prompt提问模板入门:明确问题的目的:在提问之前,请确保您的问题是明确和具体的,并且您已经理解问题的背景和意义。使用清晰明了的语言:使用简单、易懂的语言提问,避免使用专业术语或行话。提供详细的信息:请提供尽可能多的信息,例如问题的原因、背景、上下文等,以便AI能够更好地理解您的问题。使用明确的问题:请使用明确的问题来表达您的意思,避免模糊或含糊不清的问题。使用合适的标点符号:在提问时,请使用合适的标点符号,例如逗号、分号或冒号,以便AI能够理解您的问题。尊重AI的隐私:请尊重AI的隐私权,不要询问AI过于私人的问题或敏感信息。等待适当的反馈:请耐心等待AI的回答,即使您的问题似乎没有得到立即响应。AI可能需要一些时间来处理您的问题。重复提问直到得到满意的答案:如果您无法得到满意的答案,请重复您的问题,直到AI给出您满意的答案为止。提供更多的信息:如果您有关于问题的更多信息,请随时提供。这可以帮助AI更好地理解您的问题,并给出更准确的答案角色扮演你是一个xxxx1.我希望你表现得像{电影名} 中的{角色名}, 我希望你像{角色名}一样使用{角色名}会使用的语气、方式和词汇来回应和回答, 不要写任何解释, 只回答像{角色名}, 你必须知道{角色名}的所有知识,我的第一句话是“嗨 {角色名}”。2.你是一位创作者。你的任务是以五一劳动节长白山三天四晚旅游攻略为主题写一份文章,笔记包含标题和正文两部分,正文需要需要包含景点详细介绍,门票价格,美食推荐,住宿酒店推荐,三天计划,分别以景点介绍, 美食推荐,三天出行计划为小标题.听众是要去旅游的游客。以小红书风格进行创作,加入适当的Emoji表情丰富正文部分,以Hello 友友们我是你们的旅游小助手花花开头,字数要求1500字3.我要你扮演哲学老师。我会提供一些与哲学研究相关的话题,你的工作就是用通俗易懂的方式解释这些概念。这可能包括提供示例、提出问题或将复杂的想法分解成更容易理解的更小的部分。我的第一个请求是“我需要帮助来理解不同的哲学理论如何应用于日常生活”。学习相关我想让你充当维基百科页面。我会给你一个主题的名称,你将以维基百科页面的格式提供该主题的摘要。您的摘要应该内容丰富且符合事实,涵盖该主题最重要的方面。以概述主题的介绍性段落开始您的摘要。我的第一个主题是“自然语言”。我想让你为说法语的人充当法语发音助手。我会给你写句子,你只会回答他们的发音,没有别的。回复不能是我的句子的翻译,而只能是发音。发音应使用法语进行注音。不要在回复上写解释。我的第一句话是"法国的浪漫之都是哪?"代码相关给出明确的语言,编写目的,输出结果,想要的示例比如用java语言写一段最短路径算法;用java语言写一个工具类,获取上个月第一天的开始时间,以yyyy-MM-dd HH:mm:ss格式返回训练AI当你在大量的对话中采用了论文的大篇幅字段,接下来的对话它将习惯性的用论文相关的语言文字知识解答,当你训练的足够多,那么他将是你强大的论文助手充当前端智能思路助手替代:百度、谷歌人工搜索我想让你充当前端开发专家。我将提供一些关于Js、Node等前端代码问题的具体信息,而你的工作就是想出为我解决问题的策略。这可能包括优化代码、代码逻辑思路策略。我的第一个请求是“我需要能够动态监听某个元素节点距离当前电脑设备屏幕的左上角的X和Y轴,通过拖拽移动位置浏览器窗口和改变大小浏览器窗口。”担任面试官示例:Java 后端开发工程师、React 前端开发工程师、全栈开发工程师、iOS 开发工程师、Android开发工程师等。 回复截图请看这里我想让你担任Android开发工程师面试官。我将成为候选人,您将向我询问Android开发工程师职位的面试问题。我希望你只作为面试官回答。不要一次写出所有的问题。我希望你只对我进行采访。问我问题,等待我的回答。不要写解释。像面试官一样一个一个问我,等我回答。我的第一句话是“面试官你好”​​​​​​
  • [分享交流] 求求你们别再用kill-9了,这才是SpringBoot停机的正确方式!!!
    在Spring Boot应用中,有几种常见的停止方式:使用CTRL+C:这是最简单的停止方式,但不推荐在生产环境使用。因为它会立即终止进程,没有机会实现优雅关闭。使用SIGTERM信号:发送SIGTERM信号到Spring Boot进程的PID, Spring Boot会注册一个ShutdownHook来优雅关闭应用。这是生产环境推荐的停止方式。kill -SIGTERM pid​​调用Actuator的shutdown接口:Actuator暴露了一个/shutdown的HTTP端点来关闭应用。这也是生产环境推荐的方式之一。curl -X POST http://localhost:8080/actuator/shutdown运行应用提供的退出命令:如果在应用中提供了自定义的退出命令,也可以通过运行该命令来关闭应用。比如,在应用的入口类中提供:@Component public class ExitCommand implements CommandLineRunner { @Override public void run(String... args) throws Exception { System.exit(0); } }然后运行命令:curl -X POST http://localhost:8080/exit 调用ApplicationContext的close方法:通过在程序中直接调用applicationContext.close()方法关闭应用上下文来触发关闭。@Autowired private ConfigurableApplicationContext applicationContext; public void exit() { applicationContext.close(); }然后通过HTTP请求、JMX等方式调用该exit()方法。 总之,在生产环境中推荐使用Actuator接口的方式或发送SIGINT/SIGTERM信号的方式来关闭Spring Boot应用。这些方式能够实现优雅关闭,释放资源。而CTRL+C方式只适合在开发环境使用。正确关闭SpringBoot应用,以释放应用占用的资源,这一点在生产环境尤其重要。我们在开发和运维Spring Boot应用时,需要清楚各种停止方式的区别,选用适合的方式。​
  • [问题求助] 沃土ABC获取obs图片后怎么压缩大小
    沃土ABC获取obs图片后怎么压缩大小,当前图片太大,想压缩图片大小,在后端代码里没有找到支持的方法。
  • AI HUIHUA
    ai 绘画      
  • [行业动态] angle
    prompt:electric