通过视频监控与图像识别技术,AI点检系统实现对门店运营的7×24小时自动化监测 AI点检功能是智能巡检系统中的重要组成部分,该技术通过分析视频监控、图像识别或其他传感器数据,实现对门店运营中特定问题或不符合标准行为的自动检测识别 01 零学习成本的操作设计AI点检系统注重用户体验,追求界面友好、操作简便的设计理念。系统采用直观的交互方式,即使是技术基础较弱的用户也能在较短时间内掌握使用方法。 02 AI 助手 Mimo 7x24 小时工作系统完成布控后,AI监测模块即可开始持续工作。实时监控与自动检测 系统对划定区域进行不间断监测,实时捕捉画面动态,包括顾客流动、员工工作状态等。 03 三大核心应用场景AI点检技术在门店管理中主要应用于三个重要领域:运营效率监控 系统可自动检测收银台排队情况、物料保质状态、设备运行状况等运营关键指标。
代码说明: 1,在yolov5的检测基础上,加上关键点回归分支,请先下载yolov5的工程:https://github.com/ultralytics/yolov5 2,detect_one.py是单张图片的测试代码 AI项目体验地址 https://loveai.tech 主要修改代码部分: (1)hyp.scatch.yaml中增加关键点loss的超参数(landmark: 0.5) (2)yolo.py中增加了关键点回归的计算 (3)face_datasets.py为人脸数据的读取方式,准备数据的格式参考yolov5的格式,在后面增加关键点的坐标(归一化) (4) loss.py中增加关键点回归的loss计算 (5) 链接:
FAST,全称Features From Accelerated Segment Test,是一种快速的角点检测算法,本文记录相关内容。 特征点提取 特征点提取到底是提取的是什么? LoG、HoG以及SIFT、SURF等被提出,这些方法大多涉及图像局部邻域的梯度计算和统计,相比较而言,FAST(Features From Accelerated Segment Test)在进行角点检测时 首先对候选点的周围每个 90 度的点:1,9,5,13 进行测试(先测试 1 和 19, 如果它们符合阈值要求再测试 5 和 13)。如果 p 是角点,那么这四个点中至少有 3 个要符合阈值要求。 角点分类器 选取需要检测的场景的多张图像进行FAST角点检测,选取合适的阈值n(n<12),提取多个特征点作为训练数据 对于特征点邻域圆上的16个像素 x \in {1,2,…,16 },按下式将其划分为 对于邻域,定义了三个标志,cv.FAST_FEATURE_DETECTOR_TYPE_5_8,cv.FAST_FEATURE_DETECTOR_TYPE_7_12和cv.FAST_FEATURE_DETECTOR_TYPE
所以就直接用CMU训练的模型在AI challenge的数据集上做了测试。 最后没有使用AI challenge训练集训练的模型在AI challenge上的得分是0.1667,可以看作是一个baseline。 以下是预处理的说明以及加入预处理程序的源代码。 openpose的源代码使用#openpose ##openpose标注出来了,剩下的就是AI challenge的预处理程序。 AI challenge测试要求的关键点顺序是:1右肩,2右肘,3右腕,4左肩,5左肘,6左腕,7右髋,8右膝,9右踝,10左髋,11左膝,12左踝,13头顶,14脖子 openpose源码中subset (x, 512, 1, "conv5_4_CPM_L%d" % branch) 87 x = relu(x) 88 x = conv(x, num_p, 1, "conv5_5_CPM_L
YOLOv5u作为Ultralytics团队推出的重要版本,代表了从传统anchor-based方法向无锚点检测的重大转变。这一转变不仅仅是技术上的升级,更是对整个检测范式的重新思考。 YOLOv5u通过引入无锚点检测机制,彻底解决了这些痛点,为实时目标检测开辟了新的道路。1. 无锚点检测的核心理念无锚点检测的核心思想是直接预测目标的中心点坐标和尺寸,而不依赖于预定义的锚点框。 不同硬件平台适配性YOLOv5u经过精心设计,能够在各种硬件平台上高效运行。无论是传统的CPU环境、高性能GPU,还是专用的AI加速器,YOLOv5u都能发挥出色的性能。 与其他YOLO版本的对比YOLOv5u相比于其他YOLO版本,最显著的优势在于其无锚点检测机制和优化的网络架构。与YOLOv5相比,YOLOv5u在保持相同推理速度的情况下,检测精度有了明显提升。 与YOLOv8相比,YOLOv5u继承了其无锚点检测的优势,同时在模型稳定性和部署便利性方面有所改进。从技术发展的角度来看,YOLOv5u代表了YOLO系列算法向更加智能化和自适应化方向的演进。
,cv2.COLOR_BGR2GRAY)#将彩色图片转换为灰度图片 gray=np.float32(gray) dst=cv2.cornerHarris(gray,2,3,0.04)#Harris 角点检测 *dst.max()]=[0,0,255]#阈值 cv2.imshow('result',img) cv2.waitKey() cv2.destroyAllWindows() 算法:Harris角点检测是属于局部特征检测 (局部)具有鲁棒性 该区域应该包含感兴趣的结构(可辨别性) dst=cv2.cornerHarris(img, blockSize, ksize, k) img表示原始图像 blockSize表示角点检测中的领域大小 ksize表示Sobel求导中使用的窗口大小 k表示Harris 角点检测方程中的自由参数,取值参数为[0,04, 0.06] 文献:Harris, C.
原始图像 im_gray=rgb2gray(im)#将彩色图片转换为灰度图片 blobs_doh=blob_doh(im_gray,max_sigma=30,threshold=0.005)#DoH斑点检测 axes[idx+1].add_patch(col),axes[idx+1].set_axis_off() pylab.tight_layout() pylab.show() 算法:DoH斑点检测是通过计算图像黑塞行列式矩阵中的极大值来检测斑点
Opencv中提供了SimpleBlobDetector的特征点检测方法,正如它的名称,该算法使用最简单的方式来检测斑点类的特征点。 再细化检测参数 params = cv2.SimpleBlobDetector_Params() #斑点检测的可选参数 #params.minThreshold= 10 #亮度最小阈值控制 #params.maxThreshold 1.0 #params.filterByInertia = True# 惯性率控制 #params.minInertiaRatio = 0.2#圆形的惯性率等于1,惯性率越接近1,圆度越高 然后执行斑点检测 : detector = cv2.SimpleBlobDetector_create(params)#创建斑点检测器 keypoints = detector.detect(gauss) #在哪个图上检测斑点 plt.subplot(1,1,1) plt.imshow(cv2.cvtColor(im_with_keypoints, cv2.COLOR_BGR2RGB)) plt.title("OpenCV 斑点检测
其中现有的dlib常见的可获取68个关键点,当然还有5个关键点和81个关键点(包括额头)。 因此编写了一个通用的小函数,如下: 该函数通过设置num_landmarks可以获取不同的关键点个数,如68,5和81,并返回facebbox(人脸框),通过该框的个数可以获取人脸的个数,并将人脸的关键点以 (2) 5个关键点的检测结果 ? (3) 81个关键点的检测结果。 ? 不过从图上可以看出,dlib用于人脸检测,并不能检测出太多的人脸,特别是远处的小人脸,均无法检测。
im_gray=rgb2gray(im)#将彩色图片转换为灰度图片 blobs_log=blob_log(im_gray,max_sigma=30,num_sigma=10,threshold=.1)#LoG斑点检测 axes[idx+1].add_patch(col),axes[idx+1].set_axis_off() pylab.tight_layout() pylab.show() 算法:LoG斑点检测是通过搜索
)#原始图像 im_gray=rgb2gray(im)#将彩色图片转换为灰度图片 dog_blobs=blob_dog(im_gray,max_sigma=30,threshold=0.1)#DoG斑点检测 axes[idx+1].add_patch(col),axes[idx+1].set_axis_off() pylab.tight_layout() pylab.show() 算法:DoG斑点检测类似于
cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) gray = np.float32(gray) dst = cv2.cornerHarris(gray, blockSize=5, ksize=7, k=0.1) #第三个参数ksize决定了角点检测的灵敏度,越小越灵敏,其取值必须是3到31之间的奇数 #第二个参数决定了mark点的大小。
人脸关键点检测是人脸在工业应用中一个比较重要的基础性研究,可以说,大多数的人脸相关业务都是在此基础上进行的二次开发。比如人脸识别,试妆算法,人脸融合等。人脸的关键点检测的好坏,直接影响后续的业务。 目前很多公司都有关于人脸关键点检测的api的业务,比如腾讯云,百度云,face++等。 这里不做过多的介绍,只是讲解一下,利用opencv的包dlib以及调用face++的接口,展示一下人脸关键点检测大致概念。 使用dlib进行人脸关键点检测 dlib封装了一个人脸关键点提取算法,下载好模型后可直接调用。 (68点) 使用face++ APi接口进行人脸关键点检测 face++ 实现了83点以及106点的关键点检测,直接去官网申请账号,进行调用接口就行。 ? (83点) ?
都大且近似相等 为了便于直观理解,绘制成 $\lambda_1-\lambda_2$ 平面如下图: 2.3 cornerHarris() OpenCV 中 Harris 角点检测的函数为 lambda_2) $ 则相应的 $\lambda_1-\lambda_2$ 平面为: 3.1 goodFeaturesToTrack() OpenCV 中 Shi-Tomasi 角点检测函数为 2.5, Scalar(0, 255, 0)); } imshow("Shi-Tomasi corner", src); waitKey(0); } 检测结果: 4 角点检测的实现 亚像素角点检测 亚像素角点的提取函数 cornerSubPix(),常用于相机标定中,定义如下: 5.1 cornerSubpix() void cv::cornerSubPix( 5), Size(-1, -1), criteria); // 5) output subpixel corners for (size_t i = 0; i < corners.size
原理解析 在亚像素级精度的角点检测算法中,一种方法是从亚像素角点到周围像素点的矢量应垂直于图像的灰度梯度这个观察事实得到的,通过最小化误差函数的迭代方法来获得亚像素级精度的坐标值。 distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0-87179830-blog-103356855.235%5Ev27% 5Epc_relevant_3mothn_strategy_and_data_recovery&spm=1001.2101.3001.4242.1&utm_relevant_index=3 文章链接:
专用的异常点检测算法 对于异常点检测而言,其本质是一个分类问题,将所有样本划分为正常样本和异常样本两类,但是不同于监督学习中的分类算法,这里的输入数据是没有标签的,所以是一种无监督学习的策略。 第二步计算每颗决策树中样本点的高度平均值,离根节点越近,高度越小,离根节点越远,高度越大; 第三步判断是否为异常点,根据高度值构建一个打分系统,取值范围0-1,靠近1被认为是异常点; sickit-learn中提供了多种异常点检测算法 ,上述两种异常点检测算法的用法如下 >>> from sklearn.svm import OneClassSVM >>> X = [[0], [0.44], [0.45], [0.46], [1]]
cvtColor(img,cv2.COLOR_BGR2RGB)#转换为RGB格式 plt.imshow(img) plt.axis('off') plt.show()#显示检测结果 算法:Shi-Tomasi角点检测是史建波 (Jianbo Shi)和卡罗·托马西(Carlo Tomasi)在哈里斯角点检测基础上提出的改进角点检测的方法。
从图像分析的角度来定义角点可以有以下两种定义: 角点可以是两个边缘的角点; 角点是邻域内具有两个主方向的特征点; 一提到角点检测,最常用的方法莫过于Harris角点检测,opencv 中也提供了 Harris 角点检测的接口,即cornerHarris(),但是 Harris 角点检测存在很多缺陷(如角点是像素级别的,速度较慢等),opencv 中有另一个功能更为强大的函数— goodFeaturesToTrack (),它不仅支持 Harris 角点检测,也支持 Shi Tomasi 算法的角点检测。 mask 如果指定,它的维度必须和输入图像一致,且在 mask 值为 0 处不进行角点检测。 useHarrisDetector 用于指定角点检测的方法,如果是 true 则使用 Harris 角点检测,false 则使用Shi Tomasi 算法。
关键点个数为16,样本数25K; MSCOCO: 多人人体关键点检测数据集,关键点个数为17,样本数多于30W,目前的相关研究基本上还需要在该数据集上进行验证; AI Challenger: 多人人体关键点检测数据集 自上而下的人体关键点检测算法 自上而下(Top-Down)的人体骨骼关键点检测算法主要包含两个部分,目标检测和单人人体骨骼关键点检测,对于目标检测算法,这里不再进行描述,而对于关键点检测算法,首先需要注意的是关键点局部信息的区分性很弱 自下而上的人体关键点检测算法 自下而上(Bottom-Up)的人体骨骼关键点检测算法主要包含两个部分,关键点检测和关键点聚类,其中关键点检测和单人的关键点检测方法上是差不多的,区别在于这里的关键点检测需要将图片中所有类别的所有关键点全部检测出来 自上而下的关键点检测算法在效果上要明显好于自下而上的关键点检测算法,因为自上而下的检测方法加入了整个人体的一个空间先验。 IEEE, 2014. [5] Fischler M A, Elschlager R A.
异常点检测,有时也叫离群点检测,英文一般叫做Novelty Detection或者Outlier Detection,是比较常见的一类非监督学习算法,这里就对异常点检测算法做一个总结。 1. 异常点检测算法常见类别 异常点检测的目的是找出数据集中和大多数数据不同的数据,常用的异常点检测算法一般分为三类。 第二类是基于聚类的方法来做异常点检测。 第三类是基于专门的异常点检测算法来做。 Isolation Forest算法 image.png 5. 异常点检测算法小结 IForest目前是异常点检测最常用的算法之一,它的优点非常突出,它具有线性时间复杂度。