Datawhale 零基础入门CV赛事-Task1 赛事理解
1 赛题理解
赛题名称:零基础入门CV之街道字符识别
赛题目标:通过这道赛题可以引导大家走入计算机视觉的世界,主要针对竞赛选手上手视觉赛题,提高对数据建模能力。
赛题任务:赛题以计算机视觉中字符识别为背景,要求选手预测街道字符编码,这是一个典型的字符识别问题。
在本次的学习中,查看了教程后,作为一个初学者有些手足无措,配置好环境后开始对每个模块进行熟悉。例如:
定义好读取图像的Dataset:
class SVHNDataset(Dataset):
def __init__(self, img_path, img_label, transform=None):
self.img_path = img_path
self.img_label = img_label
if transform is not None:
self.transform = transform
else:
self.transform = None
def __getitem__(self, index):
img = Image.open(self.img_path[index]).convert('RGB')
if self.transform is not None:
img = self.transform(img)
# 设置最⻓长的字符⻓长度为5个
lbl = np.array(self.img_label[index], dtype=np.int)
lbl = list(lbl) + (5 - len(lbl)) * [10]
return img, torch.from_numpy(np.array(lbl[:5]))
def __len__(self):
return len(self.img_path)
定义好训练数据和验证数据的Dataset
train_path = glob.glob('../input/mchar_train/mchar_train/*.png')
train_path.sort()
train_json = json.load(open('../input/mchar_train.json'))
train_label = [train_json[x]['label'] for x in train_json]
print(len(train_path), len(train_label))
train_loader = torch.utils.data.DataLoader(
SVHNDataset(train_path, train_label,
transforms.Compose([
transforms.Resize((64, 128)),
transforms.RandomCrop((60, 120)),
transforms.ColorJitter(0.3, 0.3, 0.2),
transforms.RandomRotation(10),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
])),
batch_size=40,
shuffle=True,
num_workers=0,
)
val_path = glob.glob('../input/mchar_val/mchar_val/*.png')
val_path.sort()
val_json = json.load(open('../input/mchar_val.json'))
val_label = [val_json[x]['label'] for x in val_json]
print(len(val_path), len(val_label))
val_loader = torch.utils.data.DataLoader(
SVHNDataset(val_path, val_label,
transforms.Compose([
transforms.Resize((60, 120)),
# transforms.ColorJitter(0.3, 0.3, 0.2),
# transforms.RandomRotation(5),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
])),
batch_size=40,
shuffle=False,
num_workers=0,
)
2 遇到的问题及解决
2.1 jupyter notebook 报错 500 : Internal Server Error
问题:在虚拟空间中输入jupyter notebook后,浏览器中无法打开.ipynb文件,出现报错500:Internet Server Error。
解决:在卸载jupter notebook再重装并无法解决,根据参考解决方案,判断为nbconvert和pandoc不兼容造成的,更新或安装nbconvert5.4.1及以后的版本即可,下面附上问题解决参考的链接:
链接: link.
2.2 模块缺失问题
问题:在配置环境后,运行程序发现缺少部分重要组件包
解决:使用对应的语句在该虚拟空间中安装