kendryte / tensorflow-workspace

Tensorflow workspaces for training your custom models of K210
67 stars 25 forks source link
k210 kendryte model-zoo tensorflow

Tensorflow Workspace for K210

Classifier for ImageNet

  1. Download ImageNet dataset, extract it as the instructions to ILSVRC2012_img_train, it has 1000 folders, each folder's name represents its class id.
  2. The model definition file is mobilenetv1/models/mobilenet_v1.py, ATTENTION, K210 does not support the method of SAME PADDING in tensorflow, so we need to add padding around the image manually before a stride=2 conv (in this situation, the padding method of conv layer with stride=2 should be set to VALID
  3. Modify mobilenetv1/run_mobilenet_v1.sh and start your training.
  4. Using freeze_graph.py to freeze your model from ckpt to pb, just run python mobilenetv1/freeze_graph.py model.mobilenet_v1 ckpt_fold pb_file
  5. Test on ImageNet, you need a val dataset of ImageNet, then run python mobilenetv1/validation_imagenet.py pb_file val_set_fold
  6. Estimate one image, run python mobilenetv1/predict_one_pic.py pb_file pic

ImageNet 分类器示例

  1. 下载ImageNet数据集,按照说明解压缩训练数据集到文件夹ILSVRC2012_img_train,内含1000个子文件夹,每个子文件夹的命名为其分类代号(类似n02484975),每个子文件夹内为该分类的训练数据
  2. mobilenet v1定义文件:mobilenetv1/models/mobilenet_v1.py,需要注意由于K210不支持tensorflow的SAME padding,所以在stride=2时先固定padding一圈0,然后再进行stride=2的卷积(padding=VALID)
  3. 训练脚本 mobilenetv1/run_mobilenet_v1.sh,根据需要修改其中的参数,然后运行
  4. freeze_graph.py将训练ckpt转成pb文件,命令格式如下:
    python mobilenetv1/freeze_graph.py model.mobilenet_v1 ckpt_fold pb_file
  5. 测试在ImageNet验证集上的性能,下载验证集,将文件按类别解压好(与训练集类似),运行 python mobilenetv1/validation_imagenet.py pb_file(or ckpt folder) val_set_fold
  6. 预测单张图片,python mobilenetv1/predict_one_pic.py pb_file(or ckpt folder) pic