Task 1赛题理解

来源Task1

首先是目标

  • 理解赛题背景
    很好理解,就是在一张图中找数字,虽然网站上说找字符,但是从007569.png 对应的label为7和5看出应该是找数字
  • 理解赛题数据
    mchar_train.json 对应mchar_train 文件夹中的图片
    代码中 train_json = json.load(open('C:\mydata\mchar_train.json'))
    读出来的train_json是一个字典,键值为height, label, left, top, width


    json和图片的关系

    label就是表示这张图片中有哪些数字
    需要用矩形来截出图片中的数字
    height width 所需要的矩形的高和宽
    left和top 是矩形的左上角相对于图片左上角的位置


    这个图已经解释的很清楚了
  • 数据下载
    在这个网站里面下载csv文件
    csv文件里面有数据的链接地址 直接用迅雷下就可以了
  • 理解赛题的思路
    题目是要识别图片里面的数字,数字的个数不是固定的,主办方提供的三种思路,1是将所有数字个数看成是定长的,不足的用X来填充, 2是用特定的方法来识别 比如CRNN字符识别模型, 3是先对数字的位置进行识别 然后利用物体检测来进行检测

示例代码分析

代码

parse_json 就是将train_json这个dict中的值 转变成整型的np.array 其shape是5*n, n为图片中数字的个数
plt.subplot(1, arr.shape[1] + 1, 1) 是画1行n + 1的图, 第一列是原图片,剩下的是每个数字的截取图
关于plt.xticks([]) 和 plt.yticks([]) 作用在于把下图周围的数字的消灭掉
不使用plt.xticks

底下的for循环就是根据train_json中的left top height width来截取图片中的每个数字
arr[0, idx]:arr[0, idx] + arr[1, idx]就是top 到 top + height
arr[2, idx]:arr[2, idx] + arr[3, idx]就是left 到 left + width
plt.title就是显示的label

你可能感兴趣的:(Task 1赛题理解)