线上赛训练准备

命题分析

这一次的智慧交通组的任务由以往的检测分割换成了OCR任务。OCR任务分为两种文字检测和文字识别,检测需要定位文本位置(类似目标检测),而识别就是识别出图像中的文字,我们这次的比赛任务就是文字识别。

提交:上传训练模型、预测代码及环境库(可选)的zip形式压缩包

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

环境安装

解压命令,只需要运行一次!运行过后记得再次注释掉,避免重复解压。

不要重复运行解压PaddleOCR.zip的命令!

每次启动环境的时候都需要重新运行一次下面的pip的命令(只需要运行%cd!pip这几条),因为重新启动环境的时候,需要重新下载一次环境所需要的依赖包。

至此环境安装成功!


%cd /home/aistudio
# 解压命令只需要运行一次
# !unzip /home/aistudio/PaddleOCR.zip -d /home/aistudio
%cd /home/aistudio/PaddleOCR
!pip install -r requirements.txt

解压数据集

我们首先需要解压数据,最好是aistudio中数据最好放在data目录下,因为data目录下空间很大,放在其他地方会导致项目加载变慢。

这里我使用了两个数据集,除了本次比赛的数据集之外还使用了另一个比赛的数据集,目的是融合扩充数据集。

# 解压数据集
# !unzip /home/aistudio/data/data258841/DataForCompetitor.zip -d /home/aistudio/work/
# !unzip /home/aistudio/data/data87746/训练数据集.zip -d /home/aistudio/work/

划分训练集和验证集

import os
import shutil
from sklearn.model_selection import train_test_split
from tqdm import tqdm

# 数据集根目录路径
dataset_path = "/home/aistudio/work/DataForCompetitor"

# 加载标签文件
with open(os.path.join(dataset_path, 'train_label.txt'), 'r', encoding='utf-8') as f:
    lines = f.readlines()

# 获取图像文件名及其对应的标签信息
data = [line.strip().split('\t') for line in lines]

# 获取图像文件路径
image_dir = os.path.join(dataset_path, 'train')
image_files = [item[0] for item in data]

# 获取标签信息
labels = [item[1] for item in data]

# 划分数据集
train_files, val_files, train_labels, val_labels = train_test_split(image_files, labels, test_size=0.1, random_state=42)

# 创建新的目录用于存放训练集和验证集
train_dir = os.path.join(dataset_path, 'train_dataset')
val_dir = os.path.join(dataset_path, 'val_dataset')
os.makedirs(train_dir, exist_ok=True)
os.makedirs(val_dir, exist_ok=True)

# 复制图像文件到新的目录,并显示进度条
print("复制训练集图像文件...")
for src, label in tqdm(zip(train_files, train_labels), total=len(train_files)):
    filename = os.path.basename(src.split("/")[1])
    # print(f"[DEBUG] {filename}")
    dest_file = os.path.join(train_dir, filename)
    shutil.copy(os.path.join(dataset_path, src), dest_file)

print("复制验证集图像文件...")
for src, label in tqdm(zip(val_files, val_labels), total=len(val_files)):
    filename = os.path.basename(src.split("/")[1])
    dest_file = os.path.join(val_dir, filename)
    shutil.copy(os.path.join(dataset_path, src), dest_file)

# 保存新的标签文件
with open(os.path.join(dataset_path, 'train_dataset_labels.txt'), 'w', encoding='utf-8') as f:
    for filename, label in zip(train_files, train_labels):
        f.write(f"{os.path.basename(filename)}\t{label}\n")

with open(os.path.join(dataset_path, 'val_dataset_labels.txt'), 'w', encoding='utf-8') as f:
    for filename, label in zip(val_files, val_labels):
        f.write(f"{os.path.basename(filename)}\t{label}\n")

print("数据集划分完成!")

克隆项目仓库

克隆对应的项目仓库

# !git clone https://github.com/PaddlePaddle/PaddleOCR

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值