您的位置:首页 > 其它

Datawhale 零基础入门CV赛事-Task1 赛事理解

2020-06-03 05:31 323 查看

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 模块缺失问题

问题:在配置环境后,运行程序发现缺少部分重要组件包
解决:使用对应的语句在该虚拟空间中安装
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: