前面的文章,我们分享了YOLO系列的文章,包括前段时间刚刚发布的YOLOv7检测算法,虽然YOLOv7对象检测算法是YOLO最新的模型,且可以支持对象分割,人体姿态检测等,但是最新的YOLO系列检测模型也同步进行了更新,那就是刚刚开源的YOLOv8对象检测算法。只能说AI人工智能领域越来越卷了。 人工智能领域也卷了吗YOLO系列又被刷新了,YOLOv7横空出世 模型对比 1 YOLO系列对象检测算法 YOLO(YouOnlyLookOnce)是由JosephRedmon和Ali开发的一种对象检测和图像分割模型。YOLO的第一个版本于2015年发布,由于其高速度和准确性,瞬间得到了广大AI爱好者的喜爱。 YOLO YOLOv2于2016年发布,通过合并批量归一化、锚框和维度群集等技术,大大提高了其对象检测算法的精度与速度。 YOLOv3 YOLOv3于2018年发布,通过使用更高效的骨干网络,添加特征金字塔,并利用焦点损失等技术,进一步提高了速度与精确度。 YOLOv4 2020年,YOLOv4发布,引入了许多创新,例如使用Mosaic数据增强,一个新的无锚检测头,以及新的损失函数等功能。 YOLOv5 2021年,Ultralytics发布了YOLOv5,进一步改进了该模型的性能并添加了新功能,例如支持全景分割和对象跟踪。 YOLOv6 2022年,美团发布了YOLOv6,YOLOv6对Backbone和Neck都进行了重新设计,Head层沿用了YOLOx中的DecoupledHead并稍作修改。对YOLOv5而言,YOLOv6对网络模型结构进行了大量的更改。除了网络结构上的改进,作者还对训练策略进行了改进,应用了Anchorfree无锚范式、SimOTA标签分配策略、SIOU边界框回归损失。 YOLOV7 2022年,WongKinYiu团队发布YOLOv7对象检测算法,EELAN是YOLOv7主干中的计算块。EELAN使用expand、shuffle、mergecardinality来实现在不破坏原有梯度路径的情况下不断增强网络学习能力的能力。 2 YOLOv8对象检测算法 2023年,Ultralytics再次发布YOLO更新模型,YOLOv8模型。UltralyticsYOLOv8是YOLO对象检测和图像分割模型的最新版本。YOLOv8是一种尖端的、最先进的(SOTA)模型。 YOLOv8的一个关键特性是它的可扩展性。它被设计为一个框架,支持所有以前版本的YOLO,可以轻松地在不同版本之间切换并比较它们的性能。 除了可扩展性之外,YOLOv8还包括许多其他创新,使其成广泛应用在对象检测和图像分割任务上。其中包括新的骨干网络,新的无锚网络检测头和新的损失函数功能。YOLOv8也非常高效,可以在各种硬件平台(从CPU到GPU)上运行。 YOLOv8模型的每个类别中有五个模型,用于检测、分割和分类。YOLOv8Nano是最快和最小的,而YOLOv8ExtraLarge(YOLOv8x)是最准确但最慢的。 YOLOv8n YOLOv8s YOLOv8m YOLOv8l YOLOv8x YOLOv8使用了以下预训练模型:在COCO检测数据集上训练的对象检测,图像分辨率为640。在COCO分割数据集上训练的实例分割,图像分辨率为640。在ImageNet数据集上预训练的图像分类模型,图像分辨率为224。 YOLOv8对象检测与对象分割 3 YOLOv8对象检测算法的代码实现 YOLOv8对象检测算法的代码实现过程也很简单,官方提供了API接口以及python第三方包安装的方式进行代码的实现过程。 首先需要安装Python3。7。0与PyTorch1。7,然后跟安装python第三方包类似的操作,来安装ultralytics库,这样,我们就可以使用YOLOv8对象检测算法了。pipinstallultralyticsyolotaskdetectmodepredictmodelyolov8n。ptsourceimagesnameyolov8xdet YOLOv8对象检测 第一行代码是安装ultralytics,第二行代码便可以使用YOLO指令进行对象检测任务,好吧,我承认现在AI人工智能行业越来越卷了,2行代码就搞定了。 对象检测taskdetect执行对象检测任务modepredict执行预测或者训练modelyolov8n。pt使用哪个模型进行预测或者训练sourceimages检测的文件名,或者一个文件夹nameyolov8xdet保存的文件名,或者一个文件夹 检测完成后,会自动保存结果到指定的文件夹中,我们可以使用一个脚本来进行图片的显示。defdisplay(dir):plt。figure(figsize(20,12))imagenamesglob。glob(os。path。join(resultdir,。jpg))fori,imagenameinenumerate(imagenames):imageplt。imread(imagename)plt。subplot(2,2,i1)plt。imshow(image)plt。axis(off)plt。tightlayout()plt。show()display(runsdetectyolov8xdet) 当然,YOLOv8对象检测算法跟YOLOv7类似,同样可以进行对象的分割任务与对象分类任务 对象分割yolotasksegmentmodepredictmodelyolov8xseg。ptsourceimagesnameyolov8xsegyolotaskclassifymodepredictmodelyolov8xcls。ptsourceimagesnameyolov8xclsdisplay(runssegmentyolov8xseg)display(runsclassifyyolov8xcls) fromultralyticsimportYOLOLoadamodelmodelYOLO(yolov8n。yaml)buildanewmodelfromscratchmodelYOLO(yolov8n。pt)loadapretrainedmodel(recommendedfortraining)Usethemodelresultsmodel。train(datacoco128。yaml,epochs3)trainthemodelresultsmodel。val()evaluatemodelperformanceonthevalidationsetresultsmodel。predict(https:ultralytics。comimagesbus。jpg)predictonanimagesuccessmodel。export(formatonnx)exportthemodeltoONNXformat 对象分类 当然,官方提供了python代码来实现YOLOv8对象检测算法模型 第一行代码,我们导入YOLO模型 第5行代码,我们使用yolov8n预训练模型 第8行代码,我们首先在COCO128数据集上面训练YOLOv8对象检测算法模型 第9行代码,我们在验证集上进行模型的评估 第10行代码,我们进行模型的预测 最后,我们可以导出onnx格式的模型 更多参考:https:github。comultralyticsultralytics开源链接 高大上的YOLOV3对象检测算法,使用python也可轻松实现 使用python轻松实现高大上的YOLOV4对象检测算法 基于python的YOLOV5对象检测模型实现 人工智能领域也卷了吗YOLO系列又被刷新了,YOLOv7横空出世 YOLOv7与MediaPipe在人体姿态估计上的对比