创新实训工作记录二

 工作记录二(线上赛分析延申)

一、线上赛赛题说明

1.数据集描述

本届比赛的训练数据集,共有122387张。数据集地址在这里

  • 标注集在train_label.txt文件中,单行标注示例如下:

train/mg_crop_217514.jpg A.a(1+p)²

(打开训练数据集,你会发现,本次大家挑战的,都是分辨率都是比较低的手写字体的图。线下赛任务,也会让车模识别手写字体哦!)

  • 对应train文件夹中的图片如下:

包含img_path图片路径与标注内容,二者以’\t’间隔。

2.提交要求

本次比赛要求选手使用飞桨PaddlePaddle2.2及以上版本生成端到端深度学习模型。 选手需上传训练模型、预测代码及环境库(可选)的zip形式压缩包,命名为submission,提交到本赛事结果页进行自动评测。

注意以下要求:

  • 预测代码需命名为predict.py
  • 整体压缩包不超过100M
  • 目录结构约定如下
| -- model # 存放模型
| | -- xxx.pbmodel
| | -- xxx.pdiparams
| | … 
| -- env # 存放依赖库,如PaddleDetection、PaddleSeg
| | -- xxx.lib
| |…
| -- predict.py # 预测代码
| -- requirements.txt # 相关依赖
|...

3.评分规则

Accuracy:模型对每张图片里文字内容的识别准确率,错一个字即为错,按照准确率高低进行排名。

4.官方baseline

喜乐多多多:打开项目

5.平台评测配置环境

  • 预测框架:平台默认配置paddle(v2.3)框架;
  • 代码环境:平台仅配置python3.7执行环境;
  • 环境库(可选):选手如需使用超出平台的代码依赖库或框架,即要求定义好 requirements.txt文件,确保predict.py在平台能正常执行。

6.平台自动评测过程科普

AI Studio平台提供统一的预测机器资源(V100)

参赛选手在代码提交页面提交压缩包后,测评系统会进行解压,并将测试图片集test文件夹放在解压后文件主目录中。后台视角下的文件结构将如下所示:

submission
├── model
├── PaddleOCR
├── test
│   ├── mg_crop_87772.jpg
│   ├── mg_crop_87786.jpg
│   ├── mg_crop_87787.jpg
│   ├── ...
│   ├── ...
└── predict.py

此时,系统将运行predict.py,自动预测并将结果保存为result.txt。result.txt的存储路径,需要选手设定好其保存路径位submission/result.txt。后台具体执行命令如下:

python predict.py 
  • predict.py输入:预测脚本应接收模型路径和数据路径,请自行处理predict.py中的数据和模型读取逻辑,保证平台执行 python predict.py 可正确预测。(平台会自动将测试图片test文件夹,放在submission路径下,选手无需提交)

  • predict.py输出:预测结果需保存到result.txt文件,包含图片路径和预测结果,二者以 ‘\t’ 间隔:

test/mg_crop_xxxxxx.jpg	Time flies by.

其中 img_path 必须遵循上述目录结构。

  • ACC值:平台根据predict.py运行得到的预测结果计算ACC值。

二、线上赛基本配置延申

1.数据清洗与增强

数据清洗方面,我的任务包括识别并删除数据集中存在的噪声和错误,确保输入的数据质量。

在数据增强方面,打算通过多种手段扩充训练数据集,以提高OCR模型的泛化能力。具体措施包括但不限于:图像旋转、缩放、平移、色彩调整、加入噪声等。这些技术将帮助模型更好地适应不同的输入图像,提高其识别准确度。

对应数据集:

可以发现手写体居多,后面也有各类印刷体

2.数据清洗方法

1. 去噪(使用高斯模糊)

import cv2
import numpy as np

# 读取图像
image = cv2.imread('path_to_your_image.jpg')

# 高斯模糊去噪
denoised_image = cv2.GaussianBlur(image, (5, 5), 0)

# 保存或显示图像
cv2.imwrite('denoised_image.jpg', denoised_image)
cv2.imshow('Denoised Image', denoised_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

2. 去除图像边框

import cv2
import numpy as np

# 读取图像
image = cv2.imread('path_to_your_image.jpg', cv2.IMREAD_GRAYSCALE)

# 二值化图像
_, binary_image = cv2.threshold(image, 128, 255, cv2.THRESH_BINARY_INV)

# 查找轮廓
contours, _ = cv2.findContours(binary_image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# 计算边界框
x, y, w, h = cv2.boundingRect(contours[0])

# 裁剪图像
cropped_image = image[y:y+h, x:x+w]

# 保存或显示图像
cv2.imwrite('cropped_image.jpg', cropped_image)
cv2.imshow('Cropped Image', cropped_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

3.调整图像大小

import cv2

# 读取图像
image = cv2.imread('path_to_your_image.jpg')

# 调整图像大小
resized_image = cv2.resize(image, (800, 600))  # 调整为800x600

# 保存或显示图像
cv2.imwrite('resized_image.jpg', resized_image)
cv2.imshow('Resized Image', resized_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

4.灰度化处理

import cv2

# 读取图像
image = cv2.imread('path_to_your_image.jpg')

# 转换为灰度图像
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 保存或显示图像
cv2.imwrite('gray_image.jpg', gray_image)
cv2.imshow('Gray Image', gray_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

5. 异常检测与处理(例如:检查并删除低质量图像)

import cv2
import os

# 设置图像文件夹路径
image_folder = 'path_to_your_image_folder'

# 设置质量阈值
quality_threshold = 100  # 根据需求调整

# 遍历文件夹中的所有图像
for filename in os.listdir(image_folder):
    image_path = os.path.join(image_folder, filename)
    image = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
    
    # 计算图像的质量指标(如方差)
    if image is not None:
        variance = cv2.Laplacian(image, cv2.CV_64F).var()
        
        # 删除低质量图像
        if variance < quality_threshold:
            os.remove(image_path)
            print(f'Removed low quality image: {filename}')

print('Data cleaning completed.')

图像清洗过后,我们还需要对原始数据打标签,目前小组内正在分工进行。

推荐一个好用的工具(目前正在研究):

华工奔雷队-标签数据系统: 19届百度创意组打标软件

另外数据清洗完的标注工作目前还在进行~

  • 18
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值