一直想写这个系列很久了。由于工作上遇到的一些事情,让我觉得做算法,最重要的是要方便实验,尽快的出结果,与其做一个大而全的框架,不如做一个简洁通用的模板,毕竟,算法阶段最重要的是结果。我的工作也是给一个模型出去。
这个系列以CS230为参考,这里感谢无限的网络资源~
https://cs230-stanford.github.io/
图像出身,以图像相关为例
流程
1. imgs文件夹存放所有的图片,annos文件夹存放所有的标注
2. 生成images,labels的txt文件 利用tf.data.Dataset.from_tensor_slices()读取数据
3. shuffle 数据
4. 读取图片和标签,处理成自己要的格式
5. 数据增强,利用多线程加速预处理等
6. 批量化数据
7. Prefetch 1 个batch,为了满足num/batch不为整数的情况
实现细节
第一部分:从xml文件里解析目标检测的标注(可根据自己需要定制)
import tensorflow as tf
import xml.etree.ElementTree as ET
import numpy as np
# Must do before Session()
def _parse_label(label):
"""Obtain label_list from label(for both training and validation)
Example for
- Decode label from xml file (for object detection)
"""
label_value = []
tree = ET.parse(label)
root = tree.getroot()
for member in root.findall('object'):
value = [root.find('filename').text,
int(root.find('size')[0].text),
int(root.find('size')[1].text),
member.find('name').text,
int(member.find('bndbox')[0].text