当前位置: 首页 > wzjs >正文

找人开发软件去什么网站php网站开发自学

找人开发软件去什么网站,php网站开发自学,西安网络推广公司大全,公司微信网站建设方案模板下载概述 本文旨在基于检测到的物品位置信息,分析、计数并提取相关目标。通过对检测结果的坐标数据进行分析,将确定货架的数量以及货架上的物品数量。为此,这里将使用 SKU110K 数据集来训练目标检测模型。该数据集包含商店货架上物品的边界框标注…

概述

本文旨在基于检测到的物品位置信息,分析、计数并提取相关目标。通过对检测结果的坐标数据进行分析,将确定货架的数量以及货架上的物品数量。为此,这里将使用 SKU110K 数据集来训练目标检测模型。该数据集包含商店货架上物品的边界框标注,仅包含一个名为“物品”的类别。
封面图

SKU110K数据集

在 SKU-110K 是专注于密集场景下的目标检测问题。此类场景中的图像包含大量外观相似甚至相同的物体,且物体位置紧密相邻。这些场景通常是人造的,例如零售货架展示、交通和城市景观图像。

数据集 SKU-110K 中的一张典型图像,展示了密集排列的物体

算法实现

创建环境与导入相关库,使用预训练模型进行预测,并将结果赋值给一个变量。

conda create -n yolov8 python=3.8
activate ylolv8
conda install pytorch==2.0.0 torchvision==0.15.0 torchaudio==2.0.0 pytorch-cuda=11.7 -c pytorch -c nvidia
pip install ultralytics

测试环境:

import numpy as np
from ultralytics import YOLOmodel = YOLO('best.pt')
result = model.predict(source='test_88.jpg',conf=0.45,save=True
)

模型训练

关于模型训练,可以看之前关于YOLOv8如果训练自定义数据

提取边界框坐标并排序

提取边界框的 xyxy 格式坐标,并将其转换为 NumPy 数组。这些数据分别代表边界框的 xmin、ymin、xmax 和 ymax 坐标。以下是前 25 个输出:

arrxy = result[0].boxes.xyxy
coordinates = np.array(arrxy)
coordinates[:25]
array([[       2082,        1426,        2318,        1635],[       2356,        1106,        2678,        1321],[       1927,        2442,        2284,        2799],[        647,         961,         865,        1149],[       2101,        1644,        2323,        1841],[       1565,        2472,        1913,        2822],[       2334,        1420,        2567,        1640],[       1094,         957,        1301,        1138],[        967,        3186,        1243,        3369],[        873,         956,        1087,        1148],[        739,        3466,         993,        3662],[       1318,         968,        1512,        1138],[       1528,        2948,        1782,        3159],[       2109,        1914,        2497,        2128],[       1329,        2482,        1559,        2662],[       1264,        2947,        1522,        3156],[        466,        3655,         738,        3847],[       2139,        2135,        2527,        2330],[       1526,        1129,        1764,        1330],[        468,        3469,         731,        3646],[        691,        2976,         963,        3181],[       2233,         384,        2458,         582],[       1256,        3161,        1509,        3370],[        426,           0,         913,         154],[        975,        2964,        1252,        3179]], dtype=float32)

由于图像的 (0,0) 坐标代表图像的左上角,因此需要相应地对它们进行排序。为此,计算 x 和 y 坐标的中点,并根据 y 坐标进行排序。

arrxy = result[0].boxes.xyxy
coordinates = np.array(arrxy)x_coords = (coordinates[:, 0] + coordinates[:, 2]) / 2
y_coords = (coordinates[:, 1] + coordinates[:, 3]) / 2midpoints = np.column_stack((x_coords, y_coords))rounded_n_sorted_arr = np.round(midpoints[midpoints[:, 1].argsort()]).astype(int)print(rounded_n_sorted_arr[:25])
[[2762   63][2463   66][1998   68][ 670   77][ 241   80][1547  370][ 978  378][1370  399][2088  416][2102  476][ 916  478][2346  483][ 363  504][2774  514][1842  527][1392  542][2559  544][1178  552][1599  554][ 652  579][ 916  662][3009  677][2778  678][2122  684][2364  688]]

使用 OpenCV 可视化数据

使用 OpenCV 分析物品之间的坐标关系,并通过将物品中心的坐标用深蓝色圆圈标出,直观地理解这些关系。从排序后的坐标可以看出,y 轴的显著增加表明物品已经跳到了货架上。

物品检测

例如,y 轴从 80 增加到 370,变化非常大,因此可以断定这是一个货架。

计数物品和货架

从分析中可以看出,如果 y 轴的增加超过某个值,就可以认为是一个货架。在编写代码时,有机会在不同图像上进行测试,可以说如果图像捕捉到了所有货架并且是平行拍摄的,那么 y 轴的跳跃值超过 130 就可以认为是一个货架。

count = 1
objects = 0
group_sizes = []for i in range(1, len(rounded_n_sorted_arr)):if rounded_n_sorted_arr[i][1] - rounded_n_sorted_arr[i - 1][1] > 130:group_sizes.append(objects + 1)count += 1objects = 0else:objects += 1group_sizes.append(objects + 1)for i, size in enumerate(group_sizes):print(f"第 {i + 1} 层货架上有 {size} 件商品")

转换为参数化程序

将所有代码整合在一起。使用 argparse 库,可以通过以下代码提供输入文件路径。作为输出,将打印出每个货架上有多少件商品的数据。

from typing import List
import numpy as np
from ultralytics import YOLO
import argparseparser = argparse.ArgumentParser()
parser.add_argument('--image_path', type=str, required=True, help='图像路径')
args = parser.parse_args()image_path = args.image_pathclass ShelfDetector:def __init__(self, model_path: str, confidence: float = 0.45):self.model = YOLO(model_path)self.confidence = confidencedef detect_shelves(self, image_path: str) -> List[int]:result = self.model.predict(source=image_path, conf=self.confidence, save=False)arrxy = result[0].boxes.xyxycoordinates = np.array(arrxy)x_coords = (coordinates[:, 0] + coordinates[:, 2]) / 2y_coords = (coordinates[:, 1] + coordinates[:, 3]) / 2midpoints = np.column_stack((x_coords, y_coords))sorted_midpoints = midpoints[midpoints[:, 1].argsort()]rounded_n_sorted_arr = np.round(sorted_midpoints).astype(int)group_sizes = []objects = 0for i in range(1, len(rounded_n_sorted_arr)):if rounded_n_sorted_arr[i][1] - rounded_n_sorted_arr[i - 1][1] > 130:group_sizes.append(objects + 1)objects = 0else:objects += 1group_sizes.append(objects + 1)return group_sizesdetector = ShelfDetector('best.pt')
result = detector.detect_shelves(image_path)
for i, size in enumerate(result):print(f"第 {i + 1} 层货架上有 {size} 件商品")

在我们的 CMD 提示符中,输出将如下所示。通过这种方式,我们可以提供不同图像的路径来运行代码。

CMD 输出


文章转载自:

http://u8DgOF2Q.nrwkf.cn
http://NdL1EK2S.nrwkf.cn
http://D8wdc33e.nrwkf.cn
http://LGP4Fbpj.nrwkf.cn
http://0lyGQoOU.nrwkf.cn
http://d9JdnJDl.nrwkf.cn
http://WOJ4ZGth.nrwkf.cn
http://8cEGXNQq.nrwkf.cn
http://SWpxs1fW.nrwkf.cn
http://pKsEQSlJ.nrwkf.cn
http://GHGt8udH.nrwkf.cn
http://rJYGyu69.nrwkf.cn
http://WOmrhvp5.nrwkf.cn
http://lceKQKhV.nrwkf.cn
http://pOZX4JW6.nrwkf.cn
http://9XoDy2UL.nrwkf.cn
http://9c2OaJgb.nrwkf.cn
http://kBchjh0x.nrwkf.cn
http://d6NKfSf0.nrwkf.cn
http://hu0vuc3c.nrwkf.cn
http://aZUyHiQR.nrwkf.cn
http://wTG1EWhA.nrwkf.cn
http://XwzwMlP9.nrwkf.cn
http://e5aJv6GD.nrwkf.cn
http://Oq8xuyLK.nrwkf.cn
http://2g4C1NNb.nrwkf.cn
http://P93GhERq.nrwkf.cn
http://GOdd6QYA.nrwkf.cn
http://GvQHfHAy.nrwkf.cn
http://zbvmZgp8.nrwkf.cn
http://www.dtcms.com/wzjs/767073.html

相关文章:

  • 济南网站建设选聚搜网络一x昆明网站建设推广服务
  • 山西建设机械网站首页软件工程项目开发流程
  • 龙岩网站制作教程兼职网站建设
  • 什么是营销网站网站建设华网天下公司
  • 全新正版营销网站网站主题包括
  • 泉州建设银行网站平湖手机网站设计
  • 网站建设有哪些工作需需要筹备网店铺装修设计
  • 东莞教育团购网站建设网站会员体系
  • 企业建站系统营销吧tt团队dw做网站字体 别人 电脑
  • 备案 网站名称 重复wordpress入门主题
  • 网站服务器爆满怎么挤进去学网页设计哪个培训学校好
  • 淄博优化网站排名江门免费网站建站模板
  • 怎样弄网站的导航栏app公司开发价格
  • 长春火车站位置线上视频剪辑培训班
  • 网站优化设计公司wordpress 排除置顶
  • 用html制作简单的购物网站无货源电商软件app
  • 建筑网325英文外链seo兼职在哪里找
  • 网站备案多少钱国外主流网站开发技术
  • 如何申请建设网站首页四川省住房城乡建设厅网站
  • 校园服装网站建设演示文稿博优云软件官方网站
  • 室内设计培训机构排行windows优化大师官方下载
  • 珠海策划网站建设平台wordpress英文美食主题
  • 长沙网站建设宜兴做网站哪个好
  • 广州网站优化推广公司深圳好看的网站建设哪家公司好
  • 艺术品网站模板突泉建设局三务公开网站
  • 南漳网站定制网站建设客户开发方法
  • 重庆营销型网站设计备案期间怎么做网站
  • 网站建设与推广实训小结简单的房源展示网站开发
  • 公司网站更换域名流程最简单网站设计的代码
  • 开江网站建设网站排版怎么做