• [技术干货] 昇腾平台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部署具有重要的产业意义。        
  • [技术干货] hi3516 CV500 使用yolov5的训练、转换、移植到板子上(案例全)
     移植 YOLOv5 到 HiSilicon Hi3516 CV500 板子上涉及以下几个步骤:模型训练、模型转换和模型部署。以下是一个整体的流程示例,帮助你了解如何在 Hi3516 CV500 上使用 YOLOv5。  Step 1: 模型训练 在你的开发环境(通常是高性能服务器或个人电脑)上训练 YOLOv5 模型。你可以使用 PyTorch 框架进行训练。  克隆 YOLOv5 仓库:  git clone https://github.com/ultralytics/yolov5.git cd yolov5 安装依赖:  使用 requirements.txt 安装必要的依赖:  pip install -r requirements.txt 准备数据集:  将你的数据集整理成 COCO 格式,或根据 YOLO 的格式要求进行整理。  开始训练:  使用预训练权重和自定义数据集进行训练,例如:  python train.py --img 640 --batch 16 --epochs 50 --data data/your_dataset.yaml --weights yolov5s.pt 保存模型:  训练完成后,模型会保存在 runs/train/exp/weights/best.pt 中。  Step 2: 模型转换 将 PyTorch 模型转换为适合 Hi3516 CV500 硬件加速器的格式(如 ONNX、TensorFlow Lite 或 MNN)。  转换为 ONNX:  YOLOv5 提供了直接导出到 ONNX 的功能:  sh 复制代码 python export.py --weights runs/train/exp/weights/best.pt --img 640 --batch 1 --device cpu --include onnx 这会生成一个 best.onnx 文件。  转换为 TFLite(可选):  如果你的板子支持 TensorFlow Lite,可以继续转换:  sh 复制代码 python export.py --weights runs/train/exp/weights/best.pt --img 640 --batch 1 --device cpu --include tflite 这会生成一个 best.tflite 文件。  Step 3: 模型优化 针对 Hi3516 CV500 的硬件特性对模型进行优化,这可能需要使用合适的工具链,如 HiSilicon 提供的 SDK。  下载并安装 HiSilicon SDK:  从 HiSilicon 网站或供应商处获取 SDK,并按照文档进行安装和配置。  使用 SDK 工具:  使用 HiSilicon 提供的工具链对模型进行量化和优化。具体命令和步骤需参考 SDK 文档。  Step 4: 部署到 Hi3516 CV500 将优化后的模型及推理代码部署到 Hi3516 CV500 板子上。  交叉编译推理代码:  使用 HiSilicon 提供的交叉编译工具,将你的推理代码编译为 ARM 可执行文件。例如,你可能需要编写一个简单的 C++ 或 Python 推理脚本。  上传模型和推理代码:  使用 SCP 或其他文件传输工具,将模型文件和编译后的可执行文件上传到 Hi3516 CV500 板子上。  sh 复制代码 scp best.onnx root@<hi3516-ip>:/path/to/model/ scp infer_binary root@<hi3516-ip>:/path/to/infer/ 运行推理代码:  SSH 登录到 Hi3516 CV500 板子,并运行推理代码。  ssh root@<hi3516-ip> cd /path/to/infer/ ./infer_binary --model /path/to/model/best.onnx --input /path/to/input/image.jpg --output /path/to/output/result.jpg 示例项目 以下是一些可能有助于你理解完整流程的开源项目:  HiSilicon AI SDK Documentation:  HiSilicon 提供的 SDK 和文档对于进行模型优化和部署非常重要。请访问 HiSilicon 官方网站获取最新的 SDK 和文档。 YOLOv5 GitHub Repository:  Ultralytics YOLOv5 含有详细的教程和 API 文档,可以进行模型训练和转换。 ONNX Runtime:  ONNX Runtime 一个高性能的 ONNX 模型推理引擎,支持多种设备和平台。 通过以上步骤,应该能够成功地在 Hi3516 CV500 板子上实现 YOLOv5 模型的训练、转换和部署。 
  • [问题求助] 【求助 | YOLOv7】Modelarts上用pytorch训练YOLOv7报错CUDNN_STATUS_NOT_INITIALIZED
    问题基本如题使用的具体规格是pytorch1.8-cuda10.2-cudnn7-ubuntu18.04,GPU等情况是:GPU: 1*T4(16GB)|CPU: 8核 32GB,在配置好了相关数据和文件之后,训练开始阶段报错“RuntimeError: cuDNN error: CUDNN_STATUS_NOT_INITIALIZED”。我猜想应该是和cuDNN的安装和版本适配有关,但实在是不清楚具体该怎么在Modelarts上完成配置,各位请不吝赐教QvQ
  • [问题求助] YOLOX好还是YOLOV5好
    想要进行车流量的图像识别,请问哪个更符合要求
  • [优秀实践] 基于Modelart的YOLOv3物体检测实践
    物体检测YOLOv3实践原理:ModelArts是面向AI开发者的一站式开发平台,支持自动学习的功能,还预置了多种已训练好的模型,ModelArts相对而言降低了AI应用的门槛,是一个高灵活、零代码的定制化模型开发工具,平台根据标注数据自动设计模型、自动调参、自动训练、自动压缩和部署模型。本次实验使用自动学习中的物体检测功能,用于识别图片中车的数量和位置。物体检测是计算机视觉中的一个重要的研究领域,在人流检测,行人跟踪,自动驾驶,医学影像等领域有着广泛的应用。不同于简单的图像分类,物体检测旨在对图像中的目标进行精确识别,包括物体的位置和分类,因此能够应用于更多高层视觉处理的场景。例如在自动驾驶领域,需要辨识摄像头拍摄的图像中的车辆、行人、交通指示牌及其位置,以便进一步根据这些数据决定驾驶策略。本期学习案例,我们将聚焦于YOLO算法,YOLO(You Only Look Once)是一种one-stage物体检测算法。1.数据和代码下载运行下面代码,进行数据和代码的下载和解压本案例使用coco数据,共80个类别。2.准备数据2.1文件路径定义2.2读取标注数据2.3数据读取函数,构建数据生成器。每次读取一个批次的数据至内存训练,并做数据增强。3.模型训练本案例使用Keras深度学习框架搭建YOLOv3神经网络。可以进入相应的文件夹路径查看源码实现。3.1构建神经网络可以在./yolo3/model.py文件中查看细节训练回调函数定义3.2开始训练3.3保存模型4.模型测试4.1打开一张测试图片4.2图片预处理4.3构建模型4.4加载模型权重,或将模型路径替换成上一步训练得出的模型路径4.5定义IOU以及score:IOU: 将交并比大于IOU的边界框作为冗余框去除score:将预测分数大于score的边界框筛选出来4.6构建输出[boxes, scores, classes]4.7进行预测成功预测出图片中含有的内容(人物,雨伞)注意事项:本案例使用框架: TensorFlow-1.13.1本案例使用硬件规格: GPU V100
  • [问题求助] Yolov7_for_PyTorch 在Atlas 800 上训练出现RuntimeError: ACL stream synchronize failed, error code:507018
    环境:Atlas800 算力卡910CANN 版本为6.3.RC1 训练容器为:pytorch-modelzoo:23.0.RC1-1.11.0训练代码Yolov7_for_PyTorch下载地址https://gitee.com/ascend/modelzoo-GPL/tree/master/built-in/PyTorch/Official/cv/object_detection/Yolov7_for_PyTorch训练样本coco现象: