生产作业流程AI监测系统基于YOLOv5和Transformer架构深度学习算法,生产作业流程AI监测系统通过集成AI大模型,识别员工在生产线上的各种动作,包括拿取、运动轨迹、插装位置、动作顺序等,从而实现对漏放、漏拿、漏打等错误的检测,达到防错目的。此外,动作防错系统还可以对员工的操作习惯进行统计分析,帮助企业针对性地进行培训和改进,提高员工的操作技能和规范程度。

在YOLO系列算法中,针对不同的数据集,都需要设定特定长宽的锚点框。在网络训练阶段,模型在初始锚点框的基础上输出对应的预测框,计算其与GT框之间的差距,并执行反向更新操作,从而更新整个网络的参数,因此设定初始锚点框也是比较关键的一环。在YOLOv3和YOLOv4检测算法中,训练不同的数据集时,都是通过单独的程序运行来获得初始锚点框。YOLOv5中将此功能嵌入到代码中,每次训练时,根据数据集的名称自适应的计算出最佳的锚点框,用户可以根据自己的需求将功能关闭或者打开,具体的指令为parser.add_argument(‘–noautoanchor’, action=‘store_ true’, help=‘disable autoanchor check’),如果需要打开,只需要在训练代码时增加–noautoanch or选项即可。


随着工业4.0时代的到来,制造业正经历着前所未有的技术革新。其中,工业制造过程中的异常行为检测与预防成为了各大企业关注的焦点。这些异常行为不仅可能导致设备故障、产品质量下降,更会对企业的生产效率、经济效益乃至竞争力产生严重影响。在这样的背景下,AI视觉检测技术的出现和应用,为工业制造过程的异常行为管理提供了全新的解决方案。

# 根据配置的.yaml文件搭建模型
class Model(nn.Module):
    def __init__(self, cfg='yolov5s.yaml', ch=3, nc=None):  # model, input channels, number of classes
        super(Model, self).__init__()
        if isinstance(cfg, dict):
            self.yaml = cfg  # model dict
        else:  # is *.yaml
            import yaml  # for torch hub
            self.yaml_file = Path(cfg).name
            with open(cfg) as f:
                self.yaml = yaml.load(f, Loader=yaml.SafeLoader)  # model dict

        # Define model
        ch = self.yaml['ch'] = self.yaml.get('ch', ch)  # input channels
        if nc and nc != self.yaml['nc']:
            logger.info('Overriding model.yaml nc=%g with nc=%g' % (self.yaml['nc'], nc))
            self.yaml['nc'] = nc  # override yaml value
        self.model, self.save = parse_model(deepcopy(self.yaml), ch=[ch])  # model, savelist
        self.names = [str(i) for i in range(self.yaml['nc'])]  # default names
        # print([x.shape for x in self.forward(torch.zeros(1, ch, 64, 64))])

        # Build strides, anchors
        m = self.model[-1]  # Detect()
        if isinstance(m, Detect):
            s = 256  # 2x min stride
            m.stride = torch.tensor([s / x.shape[-2] for x in self.forward(torch.zeros(1, ch, s, s))])  # forward
            m.anchors /= m.stride.view(-1, 1, 1)
            check_anchor_order(m)
            self.stride = m.stride
            self._initialize_biases()  # only run once
            # print('Strides: %s' % m.stride.tolist())

        # Init weights, biases
        initialize_weights(self)
        self.info()
        logger.info('')

    def forward(self, x, augment=False, profile=False):
        if augment:
            img_size = x.shape[-2:]  # height, width
            s = [1, 0.83, 0.67]  # scales
            f = [None, 3, None]  # flips (2-ud, 3-lr)
            y = []  # outputs
            for si, fi in zip(s, f):
                xi = scale_img(x.flip(fi) if fi else x, si, gs=int(self.stride.max()))
                yi = self.forward_once(xi)[0]  # forward
                # cv2.imwrite(f'img_{si}.jpg', 255 * xi[0].cpu().numpy().transpose((1, 2, 0))[:, :, ::-1])  # save
                yi[..., :4] /= si  # de-scale
                if fi == 2:
                    yi[..., 1] = img_size[0] - yi[..., 1]  # de-flip ud
                elif fi == 3:
                    yi[..., 0] = img_size[1] - yi[..., 0]  # de-flip lr
                y.append(yi)
            return torch.cat(y, 1), None  # augmented inference, train
        else:
            return self.forward_once(x, profile)  # single-scale inference, train


生产作业流程AI监测系统把“人—物—场”三元组拆成12类原子动作:拿取、传递、扫描、预插、定位、压装、拧紧、复位、等待、转身、换手、检查。每个原子动作被编码为128维向量,可直接与MES中的标准工时字段对齐。生产作业流程AI监测系统通过监测产线工作人员的工作动作并分解统计每个工作步骤的时间,记录下员工在每个环节中的操作时间和等待时间,对这些数据的分析,帮助企业找出生产线上的瓶颈环节和不合理操作,为生产线优化提供数据支持,最终达到提高动作效率的目的。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐