tensorflow图像识别-1 labelimg
Tensorflow图像识别-2 试一下识别
Tensorflow图像识别-3 训练,笔记本要退休的感觉
Tensorflow图像识别-4 应用
玩黑苹果,系统搞崩了。又重装了。。因此,我models的路径直接扔到了d盘。
- D:\projects\models\research
- 虚拟环境没弄了,tengsorflow直接装了。
图片及打标数据
原博客使用了现成的浣熊数据,https://github.com/datitran/raccoon_dataset,大概40多mb。
先将原博客的内容做完。
我将其提取到了object_detection目录下,路径如下
D:\projects\models\research\object_detection\raccoon_dataset
文件内容
这里简单的介绍一下.
第一个文件夹中是打标文件,xml格式,包括图片名,路径,打标类别跟位置等信息
第二个文件夹中是打标文件生成的csv,record文件,其中record文件是tensorflow所需要读取的,后面可以了解.
第三个文件夹就是图片.
第四个文件夹中是配置文件,标签文件,冻出来的模型等,实际做的时候看看吧,忘了
后面的零散文件是生成第三个文件夹的一些脚本.
等等,这里原来有readme,忘看了,直接看这个吧
生成tfrecord
开搞,首先用pycharm打开research文件夹
这里的脚本都全了,可以研究研究
- xml_to_csv.py
这个文件先将xml文件读取,保存为csv.
先将data文件备份一个吧,再删除data里的文件
运行脚本,我这提示少了pandas,装一下就好
生成的位置不太对,剪切到data里面吧
代码这改掉也行.
def main():
image_path = os.path.join(os.getcwd(), 'annotations')
xml_df = xml_to_csv(image_path)
+ xml_df.to_csv('data/raccoon_labels.csv', index=None)
print('Successfully converted xml to csv.')
- split labels.ipynb
接下来拆分成训练集和测试集csv.
生成的文件位置还是要改改
train.to_csv('data/train_labels.csv', index=None)
test.to_csv('data/test_labels.csv', index=None)
data里三个csv啦
-
draw boxes.ipynb
这个文件也可以看看,opencv读取图片,再读取csv里面的位置信息,画框
pip install opencv-python
装cv2 -
generate_tfrecord.py+test_generate_tfrecord.py
配置一下,或者命令行输入generate_tfrecord.py开头的代码,自行修改.
配置如下
点开下来框的第一个
--csv_input=data/train_labels.csv
--output_path=data/train.record
--image_dir=images
再将train改成test,生成训练集的record文件
--csv_input=data/test_labels.csv
--output_path=data/test.record
--image_dir=images
record文件包含了xml文件信息和图片信息,差不多就是这样吧
训练开始
train/object-detection.pbtxt文件是类别信息
如果你的样本有多个类别,相应的修改就好.这里就不动了
下个ssd模型
解压到raccoon里
修改traing/ssd_mobilenet_v1_pets.config,就是最后一部分的文件路径
另外开头有个num_class,这个也改一下,具体叫啥忘了
fine_tune_checkpoint: "D:/projects/models/research/object_detection/raccoon_dataset/ssd_mobilenet_v1_coco_2017_11_17/model.ckpt"
from_detection_checkpoint: true
data_augmentation_options {
random_horizontal_flip {
}
}
data_augmentation_options {
ssd_random_crop {
}
}
}
train_input_reader: {
tf_record_input_reader {
input_path: "D:/projects/models/research/object_detection/raccoon_dataset/data/train.record"
}
label_map_path: "D:/projects/models/research/object_detection/raccoon_dataset/training/object-detection.pbtxt"
}
eval_config: {
num_examples: 40
}
eval_input_reader: {
tf_record_input_reader {
input_path: "D:/projects/models/research/object_detection/raccoon_dataset/data/test.record"
}
label_map_path: "D:/projects/models/research/object_detection/raccoon_dataset/training/object-detection.pbtxt"
shuffle: false
num_readers: 1
}
pycharm的设置
D:\projects\models\research\object_detection\legacy\train.py
--logtostderr --pipeline_config_path=raccoon_dataset/training/ssd_mobilenet_v1_pets.config --train_dir=raccoon_dataset/train
开始训练了,就是不太懂为什么会显示两次.
在训练的过程中,可以用验证集来看训练效果
在train同目录下创建eval文件夹
D:\projects\models\research\object_detection\legacy\eval.py
这里要下个cocoapi
安装下,
我发现笔记本有点烫.显卡感觉要炸…
pycharm如下
--logtostderr
--pipeline_config_path=raccoon_dataset/training/ssd_mobilenet_v1_pets.config
--checkpoint_dir=raccoon_dataset/train
--eval_dir=raccoon_dataset/eval