为机器人换个好使的脑子(十三)

接下来,我们要开始最艰苦、繁琐的工作了,我们要在照片上标注出目标在哪里。

1.创建数据集目录

Sean/
  |- images/            图片
  |- labels/            标注
  |- structure/         图片和标注的对应文件
把刚才准备好的照片复制到images目录下。
2. 调整图片
我们拍摄的照片一般都有3~4M,而卷积神经网络处理的图片,一般都在300×300像素。
300×300?!这么小,神经网络能认清楚吗?爸爸告诉我,这主要受到两个因素的限制:
1. 考虑GPU的内存大小。我们一般都是把一批(64张)照片放到GPU进行训练,这样,GPU的内存就是: 4 × batch_size × num_feature_maps × height × width。对300×300像素的图片,每批64张,64个feature maps,GPU的内存大约为1.4G。如果是高清照片,4000×4000,GPU内存需要245G,没有GPU能满足这个需求。
        2. 卷积神经网络的感受野。如果使用了大尺寸的图片,卷积网络的深度将大得无法想         象。
为了让训练时间合理,我们需要调整图片尺寸。
# resize.py
from PIL import Image
import os
from os.path import basename

def resizeImages(baseDir):
    basewidth = 600
    for filename in os.listdir(baseDir):
        filenameOnly, file_extension = os.path.splitext(filename)
        if (file_extension in [".jpg", '.png']):
            filepath = baseDir + os.sep + filename
            img = Image.open(filepath)
            wpercent = (basewidth/float(img.size[0]))
            hsize = int((float(img.size[1])*float(wpercent)))
            img = img.resize((basewidth,hsize), Image.ANTIALIAS)
            img.save(filepath)
            print (filenameOnly, "Done")
    print('Done')
baseDir = "/home/Sean/Sean/images"
resizeImages(baseDir)
3. 标注图片
我们使用LabelImage来标注图片(https://github.com/tzutalin/labelImg)。图片在images目录下,标注在labels目录下。天啊,这个居然花了我三天时间…