当前位置: 主页 > 技术方案

归结原理 人工智能-ABC智慧教研平台上线多门人工智能领域的对象检测算法

发布时间:2023-06-18 22:18   浏览次数:次   作者:佚名

目前随着深度学习技术的不断突破,使得各项人工智能技术最终落地并改善人们的生活。作为人工智能领域的分支,计算机视觉在现实生活中最为常见,具有很高的实际应用价值。常见的应用领域有工业生产检测、医疗检测结果判定、人脸识别、视频数据分析、智能驾驶、图片中的文字信息识别以及视 频内容编辑等。ABC智慧教研平台上线了多门人工智能领域的课程,涉及Python开发、机器学习、深度学习、TensorFlow、OpenCV图像处理等多个方向,帮助学生从入门到熟练技能。

联通智能客服 转人工_智能人工气候箱_归结原理 人工智能

随着近几年各项图像处理算法的不断更新迭代,智能监控系统因此得以完善,并且应用领域越来越多。例如在城市交通监控中,智能监控系统可以为交警部门实时统计并分析当前路口的路况信息,辅助交警等工作人员进行交通管理,保障交通安全以及道路畅通。随着近几年智能监控系统领域的不断发展归结原理 人工智能,行人检测和跟踪方向的研究有着较为成熟的硬件支持,而为了满足各个领域对于行人检测和跟踪的需求,开展有关行人检测和跟踪方面的研究显得尤为重要。

ABC平台的教研团队搜集了非常丰富的图像处理案例及对应算法内容,今天给大家带来的是一款名为“YOLO”的对象检测算法介绍:

YOLO将对象检测重新定义为一个回归问题,它将单个卷积神经网络(CNN)应用于整个图像,将图像分成网格,并预测每个网格的类概率和边界框。YOLO非常快,由于检测问题是一个回归问题,所以不需要复杂的管道。

YOLOv8 是 ultralytics 公司在 2023年1月10 号开源的YOLOv5 的下一个重大更新版本,目前支持 图像分类、物体检测和实例分割任务,官方开源地址:

YOLOv8 是一个 SOTA 模型,它建立在以前 YOLO 版本的成功基础上,并引入了新的功能和改进,以进一步提升性能和灵活性。具体创新包括一个新的骨干网络、一个新的 Ancher-Free 检测头和一个新 的损失函数,可以在从CPU 到 GPU的各种硬件平台上运行。

ultralytics 并没有直接将开源库命名为 YOLOv8,而是直接使用ultralytics 这个词,原因是ultralytics 将这个库定位为算法框架,而非某一个特定算法,一个主要特点是可扩展性。其希望这个库不仅仅能够用于 YOLO 系列模型,而是能够支持非 YOLO 模型以及分类分割姿态估计等各类任务。

归结原理 人工智能_智能人工气候箱_联通智能客服 转人工

ultralytics 库的两个主要优点是:①融合众多当前SOTA技术于一体 ②未来将支持其他YOLO系列以及YOLO之外的更多算法

联通智能客服 转人工_智能人工气候箱_归结原理 人工智能

下表为官方在 COCO Val 2017 数据集上测试的 mAP、参数量和FLOPs结果。可以看出YOLOv8 相比 YOLOv5 精度提升非常多,但是 N/S/M 模型相应的参数量和FLOPs 都增加了不少,从上图也可以看出相比 YOLOV5 大部分模型推理速度变慢了。

归结原理 人工智能_联通智能客服 转人工_智能人工气候箱

具体到 YOLOv8 算法,其核心特性和改动可以归结为如下:

1 )提供了一个全新的 SOTA 模型,包括 P5 640 和 P6 1280 分辨率的目标检测网络和基于YOLACT 的实例分割模型。和 YOLOv5一样,基于缩放系数也提供了 N/S/M/L/X 尺度的不同大小模型,用于满足不同场景需求

智能人工气候箱_归结原理 人工智能_联通智能客服 转人工

2 )骨干网络和 Neck 部分可能参考了 YOLOv7 ELAN 设计思想,将 YOLOv5 的 C3 结构换成了梯度 流更丰富的 C2f 结构,并对不同尺度模型调整了不同的通道数,属于对模型结构精心微调,不再是无脑 一套参数应用所有模型,大幅提升了模型性能。不过这个 C2f 模块中存在 Split 等操作对特定硬件部署没有之前那么友好了

3 )Head 部分相比 YOLOv5 改动较大,换成了目前主流的解耦头结构,将分类和检测头分离,同时也从 Anchor-Based 换成了 Anchor-Free

4 )Loss 计算方面采用了TaskAlignedAssigner 正样本分配策略,并引入了 Distribution Focal Loss

5 )训练的数据增强部分引入了 YOLOX 中的最后 10 epoch 关闭 Mosiac 增强的操作,可以有效地提升精度

从上面可以看出,YOLOv8 主要参考了最近提出的诸如 YOLOX、YOLOv6、YOLOv7 和 PPYOLOE 等算法的相关设计,偏向工程实践,主推的还是 ultralytics 这个框架本身。

智能人工气候箱_联通智能客服 转人工_归结原理 人工智能

归结原理 人工智能_智能人工气候箱_联通智能客服 转人工

模型结构设计

基于YOLOv8的行人检测系统是一款实时、高精度的行人检测工具,适用于智能交通、无人驾驶、视频监控等领域。本系统结合了YOLOv8算法的优势,为用户提供便捷、高效的行人检测服务。

配置要求:

操作系统:Windows 10、 Linux或macOS

内存:8GB及以上

显卡:NVIDIA GeForce GTX 1060 或更高级别

联通智能客服 转人工_智能人工气候箱_归结原理 人工智能

硬盘空间:10GB及以上

如何安装:

在一个 Python>=3.7 环境中,使用 PyTorch>=1.7归结原理 人工智能,通过 pip 安装 ultralytics 软件包以及所有依赖项。

pip install ultralytics

如何准备数据集训练模型:

在COCO数据集上预训练的YOLOv8检测 ,分割和姿态模型可以在这里找到,以及在ImageNet数据 集上预训练的YOLOv8分类模型。所有的检测,分割和姿态模型都支持追踪模式。

联通智能客服 转人工_智能人工气候箱_归结原理 人工智能

联通智能客服 转人工_归结原理 人工智能_智能人工气候箱

​如何使用模型:YOLOv8 可以在命令行界面(CLI)中直接使用,只需输入 yolo 命令:

yolo predict model=yolov8n.pt source='https://ultralytics.com/images/bus.jpg

YOLOv8 也可以在 Python 环境中直接使用,并接受与上述 CLI 示例中相同的参数 :

from ultralytics import YOLO
# 加载模型
model = YOLO("yolov8n.yaml")  # 从头开始构建新模型
model = YOLO("yolov8n.pt")  # 加载预训练模型(建议用于训练)
# 使用模型
model.train(data="coco128.yaml", epochs=3)  # 训练模型
metrics = model.val()  # 在验证集上评估模型性能
results = model("https://ultralytics.com/images/bus.jpg")  # 对图像进行预测 success = model.export(format="onnx")  # 将模型导出为 ONNX 格式

部分源代码:

plots = not evolve  # create plots
cuda = device.type != 'cpu'
init_seeds(1 + RANK)
with torch_distributed_zero_first(LOCAL_RANK):
data_dict = data_dict or check_dataset(data)  # check if None train_path, val_path = data_dict['train'], data_dict['val']
nc = 1 if single_cls else int(data_dict['nc'])  # number of classes
names = ['item'] if single_cls and len(data_dict['names']) != 1 else data_dict['names']  # class names
assert len(names) == nc, f'{len(names)} names found for nc={nc} dataset in {data}'  # check
is_coco = isinstance(val_path, str) and
val_path.endswith('coco/val2017.txt')  # COCO dataset
# Model
check_suffix(weights, '.pt')  # check weights
pretrained = weights.endswith('.pt')
if pretrained:
with torch_distributed_zero_first(LOCAL_RANK):
weights = attempt_download(weights)  # download if not found locally ckpt = torch.load(weights, map_location='cpu')  # load checkpoint to CPU
to avoid CUDA memory leak
model = Model(cfg or ckpt['model'].yaml, ch=3, nc=nc,
anchors=hyp.get('anchors')).to(device)  # create
exclude = ['anchor'] if (cfg or hyp.get('anchors')) and not resume else []  # exclude keys
csd = ckpt['model'].float().state_dict()  # checkpoint state_dict as FP32
csd = intersect_dicts(csd, model.state_dict(), exclude=exclude)  # intersect
model.load_state_dict(csd, strict=False)  # load
LOGGER.info(f'Transferred {len(csd)}/{len(model.state_dict())} items from {weights}')  # report
else:
model = Model(cfg, ch=3, nc=nc, anchors=hyp.get('anchors')).to(device)
# create

效果展示:

基于YOLOv8的行人检测系统