yolov5实战之二维码检测(含数据集及模型) 您所在的位置:网站首页 toto二维码 yolov5实战之二维码检测(含数据集及模型)

yolov5实战之二维码检测(含数据集及模型)

2024-07-08 11:46| 来源: 网络整理| 查看: 265

数据集及模型下载见文末

目录

1.前沿

2.二维码数据

3.训练配置

3.1数据集设置

3.2训练参数的配置

3.3网络结构设置

3.4训练

3.5结果示例

附录:数据集及模型下载

1.前沿

之前总结过yolov5来做皮卡丘的检测,用来熟悉yolov5的使用,不过总归是个demo型的应用,没啥实用价值。后来正好项目上有需要在成像条件不好的情况去检测二维码,传统的二维码检测方式基本上是通过角点检测定位二维码的三个定位点,在成像不好的时候,很容易失败。如果用深度学习去做鲁棒性就强很多,在检测到二维码之后,可以进行调焦或图像增强等手段,辅助后续的二维码识别过程。 环境准备同 yolov5实战之皮卡丘检测

训练好的二维码检测模型见文末

2.二维码数据

首先第一步肯定是需要准备数据了,通过网络我们可以找到不少二维码数据,通过打标后,就可以得到第一批数据了。仅通过网络图片还是不够的,因为找到的二维码图像的背景不一定符合我们的实际使用场景,仅仅用这些数据训练,虽然能检测到二维码,但是误检也会比较严重。所以还需要人造一些数据,我们可以将二维码抠出来,贴到各种各样的背景图上去,用于扩增我们的数据集。

可以在文末去下载我收集的二维码数据,基于它们在自己的数据上贴图生成更多的数据。其中数据的标签和yolov5的格式一致,具体也可以参考皮卡丘那篇,或者官方repo: https://github.com/ultralytics/yolov5/wiki/Train-Custom-Data 数据生成大概的代码:

def synthetise_image(background_image,front_image,scale=0.1,degree=10,borderValue=(114,114,114)): background_image_cp=copy.deepcopy(background_image) bg_h, bg_w = background_image_cp.shape[0:2] qr_h, qr_w = front_image.shape[0:2] roate_image, rotate_label = random_perspective(front_image, np.array([0, 0, 0, qr_w, qr_h]).reshape((-1, 5)), translate=0, scale=scale,degrees=degree, shear=0, border=(qr_w//2,qr_w//2),borderValue=borderValue) crop_rotate = roate_image[rotate_label[0][2]:rotate_label[0][4], rotate_label[0][1]:rotate_label[0][3]] if bg_wbg_w: return None,None mask = (crop_rotate != np.array(list(borderValue))) mask = (mask[:, :, 0] | mask[:, :, 1] | mask[:, :, 2]) mask_inv=(~mask) roi = background_image_cp[random_y:random_y + crop_rotate.shape[0], random_x:random_x + crop_rotate.shape[1]] roi_bg = cv2.bitwise_and(roi, roi, mask=mask_inv.astype(np.uint8)) roi_fg = cv2.bitwise_and(crop_rotate, crop_rotate, mask=mask.astype(np.uint8)) dst = cv2.add(roi_bg, roi_fg) roi[:, :] = dst[:, :] return background_image_cp,[random_x,random_y,crop_rotate.shape[1],crop_rotate.shape[0]] ... background_image=cv2.imread(os.path.join(background_dir,background_lst[index])) background_h,background_w=background_image.shape[0:2] mixup_image,box=synthetise_image(background_image,qr_image,scale=0.2,degree=45) if mixup_image is None or (box[2]


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有