eternal-echo / picking Goto Github PK
View Code? Open in Web Editor NEW基于YOLO v5视觉分拣零件系统设计
基于YOLO v5视觉分拣零件系统设计
传送带的速度和图片中像素移动的速度需要建立联系。这样根据坐标能够计算时长。
测试阶段先在程序中使用定时器计算目标的移动多少像素每秒。
然后零件移动多少cm每秒。
使用光流法来估计目标零件的运动方向和速度的具体步骤如下:
暂时不用光流法,直接对连通域进行匹配,将前一帧的每个连通域与当前帧的每一个连通域进行匹配,是否能够找到横坐标基本不变(x坐标值减小不到40),纵坐标变小(向上移动)的匹配的连通域。然后对连通域坐标进行卡尔曼滤波,得到坐标、速度、加速度信息。
通过恒源云训练
select.json
文件中以下是实现步骤:
需要注意以下问题:
该系统是一个自动化生产线,主要用于零件的分拣和输送。系统包含以下部分:
视觉分拣系统:(#2 )
使用相机或摄像头采集传送带上零件的运动视频流,然后对视频流进行处理和分析,通过背景建模、噪声过滤、连通域分析、运动目标检测和目标跟踪等步骤,检测到零件并进行识别和分类,最终控制喷嘴吹送到指定区域。
移动模块:(#1 )
控制喷嘴的移动,根据传输协议将零件吹送到相应的区域。
数据库模块:
将检测到的零件信息存储到数据库中,以备后续统计和分析。
用户界面模块:
提供系统的可视化界面,方便用户进行操作和监控系统状态。
#4
传送带位置标定模块:负责标定传送带的位置,并确定最大零件和最小零件的选框大小。
在设计时,需要考虑传输速率和稳定性,以确保移动模块能够及时接收到视觉分拣系统的指令,并实现精准控制。此外,还需要进行系统测试和调试,以确保整个系统的稳定性和可靠性。
该系统的设计中,需要选用高质量的相机或摄像头来采集传送带上零件的运动视频流。为了提高视频流的质量和减少误检率,系统需要使用混合高斯模型对视频流的背景进行建模,并使用形态学操作来去除噪声和连接连通域。根据相邻帧间连通域的重叠面积、位移方向和大小跟踪目标。
当检测到目标出现,向线程池提交任务。在任务中调用YOLOv5的api进行检测,检测完成后查看零件的实时预估位置,计算出到达指定区域的时间。根据预期时间,延时开启对应喷嘴然后关闭。
移动模块需要通过modbus协议,控制多路开关来开启和关闭电磁阀,从而控制喷嘴吹送零件。
卡尔曼滤波器是一种常用的状态估计方法,可以用来跟踪目标的位置、速度和加速度等状态。以下是使用卡尔曼滤波器来跟踪候选目标的具体步骤:
对二值化的图像进行形态学操作来去除噪声,并将目标连接成连通域。接着,通过连通域分析,筛选出候选目标。使用区域生长算法来进行连通域分析,并根据连通域的大小进行过滤。
目前通过VideoWriter保存掩码尝试后出错。
self.bg_video = cv2.VideoWriter(os.path.join(self.results_dir, 'bg.mp4'), cv2.VideoWriter_fourcc('m', 'p', '4', 'v'), fps, frame_size)
零件检测模块会零件移动模块传递零件的类型和坐标参数,零件传输模块需要根据零件类型和坐标,在某个时间范围内启动对应类型的喷嘴。
可以开启和关闭对应的喷嘴,获取某个喷嘴的状态。目前已通过集成测试,能正确控制多路放大器。
open_valve
open_all_valves
close_valve
close_all_valves
get_valve_status
get_all_valve_status
fork仓库:https://github.com/robmarkcole/yolov5-flask/tree/master
通过url的api解耦,系统中调用api即可
采集视频流
使用相机或者摄像头采集传送带上的物体运动视频流。
#5
采用混合高斯模型对视频流的背景进行建模。此步骤将使我们获得场景中的前景和背景信息。通过比较当前帧与背景模型,将得到一张二值化的图像。
#8
对二值化的图像进行形态学操作来去除噪声,并将目标连接成连通域。接着,通过连通域分析,筛选出候选目标。使用区域生长算法来进行连通域分析,并根据连通域的大小进行过滤。
#11
使用卡尔曼滤波器对目标的状态进行估计和预测,并根据新的测量值进行更新速度和加速度等信息。只有速度和加速度恒定的候选目标才是待检测的目标零件。
#15
当传送带上目标离开视频流的指定区域后,使用yolov5识别跟踪过程中获取的目标。在识别出目标后,将其分类并分拣到相应的区域。
使用背景消除或帧差法实现,适用于这个相机固定的背景。光流法和均值偏移法计算量大。
move中下面的参数和sys重复了,后续需要删除
@dataclass
class Point:
x: float
y: float
@dataclass
class PartInfo:
part_id: int
pos: Point
timestamp: float
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.