训练数据 windows
https://github.com/EdjeElectronics/TensorFlow-Object-Detection-API-Tutorial-Train-Multiple-Objects-Windows-10
https://www.youtube.com/watch?v=Rgpfk6eYxJA
兴奋的发现我的电脑也支持GPU 哈哈 可以安装 GPU版的了。。。
1、安装TensorFlow-GPU版本
pip install --upgrade --ignore-installed tensorflow-gpu
2、下载models
https://github.com/tensorflow/models/tree/master/research/object_detection
选择模型下载 这里选择Faster-Rcnn-Inception-V2-coco
https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md
这个在电脑运行快 解压 后放入 刚才下载的models中的
models\research\object_detection 下
接着 下载
https://github.com/EdjeElectronics/TensorFlow-Object-Detection-API-Tutorial-Train-Multiple-Objects-Windows-10
同样放入这个文件夹下 最后是这样的
不对 事实证明了 我的笔记本不支持 GPU 因为没有NVIDIA 我曹 我刚才升级了 怎么搞。
更麻烦的事情来了 我的tensorflow 打不开了导入不了了,我曹 一直报错 奶奶的 这怎么搞 哪里不兼容
还是往下走吧
将 object_detection 中的 training 中的删除,inference_graph 中删除 ,images 中的 test_labels.csv train_labels.csv 删除,test,train中的文件也删除吧
3、管理员身份打开anaconda prompt
conda create -n tensorflow1 pip python=3.5
#启动虚拟环境
activate tensorflow1
#安装tensorflow
pip install --ignore-installed --upgrade tensorflow
#如果是GPU
pip install --ignore-installed --upgrade tensorflow-gpu #由于我出错了 我只好 不用GPU了
下面安装
(tensorflow1) C:\> conda install -c anaconda protobuf
(tensorflow1) C:\> pip install pillow
(tensorflow1) C:\> pip install lxml
(tensorflow1) C:\> pip install Cython
(tensorflow1) C:\> pip install jupyter
(tensorflow1) C:\> pip install matplotlib
(tensorflow1) C:\> pip install pandas
(tensorflow1) C:\> pip install opencv-python
添加环境
set PYTHONPATH=D:\work\nerve_network\tensorflow1\models;D:\work\nerve_network\tensorflow1\models\research;D:\work\nerve_network\tensorflow1\models\slim
接着
set PATH=%PATH%;PYTHONPATH
#查看
echo %PATH%
echo %PYTHONPATH%
修改 protobuff 中 .proto后缀 为 _pb2.py
cd D:\work\nerve_network\tensorflow1\models\research
#执行下面语句
protoc --python_out=. .\object_detection\protos\anchor_generator.proto .\object_detection\protos\argmax_matcher.proto .\object_detection\protos\bipartite_matcher.proto .\object_detection\protos\box_coder.proto .\object_detection\protos\box_predictor.proto .\object_detection\protos\eval.proto .\object_detection\protos\faster_rcnn.proto .\object_detection\protos\faster_rcnn_box_coder.proto .\object_detection\protos\grid_anchor_generator.proto .\object_detection\protos\hyperparams.proto .\object_detection\protos\image_resizer.proto .\object_detection\protos\input_reader.proto .\object_detection\protos\losses.proto .\object_detection\protos\matcher.proto .\object_detection\protos\mean_stddev_box_coder.proto .\object_detection\protos\model.proto .\object_detection\protos\optimizer.proto .\object_detection\protos\pipeline.proto .\object_detection\protos\post_processing.proto .\object_detection\protos\preprocessor.proto .\object_detection\protos\region_similarity_calculator.proto .\object_detection\protos\square_box_coder.proto .\object_detection\protos\ssd.proto .\object_detection\protos\ssd_anchor_generator.proto .\object_detection\protos\string_int_label_map.proto .\object_detection\protos\train.proto .\object_detection\protos\keypoint_box_coder.proto .\object_detection\protos\multiscale_anchor_generator.proto .\object_detection\protos\graph_rewriter.proto
下面执行
python setup.py build
python setup.py install
测试
cd object_detection
jupyter notebook object_detection_tutorial.ipynb
一步步运行代码 最后出来图片被识别 需要一段时间等等
4、建立测试数据
图片越多越好, 每张照片200kb之内,像素720*1280以下,
使用resizer.py 修改照片大小
照片准备好了后,将20%放入\object_detection\images\test ,
80%放入\object_detection\images\ train
标注图片生成 xml 文件 每一个标注
python sizeChecker.py --move
#检测 标注是否正确
python xml_to_csv.py
#生成CSV文件
打开 generate_tfrecord.py 修改 31行
# TO-DO replace this with label map
def class_text_to_int(row_label):
if row_label == 'nine':
return 1
elif row_label == 'ten':
return 2
elif row_label == 'jack':
return 3
elif row_label == 'queen':
return 4
elif row_label == 'king':
return 5
elif row_label == 'ace':
return 6
else:
return None
下面生成 TFRecord 文件
python generate_tfrecord.py --csv_input=images\train_labels.csv --image_dir=images\train --output_path=train.record
python generate_tfrecord.py --csv_input=images\test_labels.csv --image_dir=images\test --output_path=test.record
5、创建 label map 设置training
cd data 查看pbtxt格式 将下面数据保存到 training文件中
#新建 labelmap.pbtxt
#添加下面数据
item {
id: 1
name: 'nine'
}
item {
id: 2
name: 'ten'
}
item {
id: 3
name: 'jack'
}
item {
id: 4
name: 'queen'
}
item {
id: 5
name: 'king'
}
item {
id: 6
name: 'ace'
}
最后配置
进入 object_detection\samples\con figs 中 将
faster_rcnn_inception_v2_pets.config 复制到
\object_detection\training 中 接着打开
#注意 / 与 \不同 tensorflow 识别的是forward slash /,
#9行 class 改成你的几类数字
#110行 修改地址
fine_tune_checkpoint : "D:/work/neerve_network/tensorflow1/models/research/object_detection/faster_rcnn_inception_v2_coco_2018_01_28/model.ckpt"
#126行
input_path:"D:/work/neerve_network/tensorflow1/models/research/object_detection/train.record"
#128行
label_map_path: "D:/work/neerve_network/tensorflow1/models/research/object_detection/training/labelmap.pbtxt"
#132行
num_examples 是\images\test 中的test图片数量
#140行
input_path : "D:/work/neerve_network/tensorflow1/models/research/object_detection/test.record"
#142行
label_map_path: "D:/work/neerve_network/tensorflow1/models/research/object_detection/training/labelmap.pbtxt"
6、训练
python train.py --logtostderr --train_dir=training/ --pipeline_config_path=training/faster_rcnn_inception_v2_pets.config
这里又出错了 两个,第一个没有train.py 文件 我找到原文 下面很多评论 在legacy 中,于是复制到了上一层;接着又出现nets找不到,于是又到处找,最后在下面 找到办法,就行复制slim/nets 与employment 到 sitepackages中即可。
Follow these steps to solve your problem:
1)Go to your "C:\tensorflow1\models\research\slim"
2) Copy files that are called 'nets' and 'deployment'.
3) Paste them at your 'site-packages'. To know where "site-packages" is, go back to your CMD and see the error. The error shows a path that looks like this "C:\Users\ .....(you might have something different here)..... \tensorflow1\lib\site-packages\.....(bla bla bla)....". Copy it until '\site-packages' ONLY.
4) Paste the copied path to your File Explorer. This will bring you to the '\site-packages'
5) Paste your 'nets' and 'deployment' files there. DONE.
查看 新建一个prompt 后台
cd research\object_detection
tensorboard --logdir=training
ip:6006 #查看
三个小时过去了
7、生成 inference graph
python export_inference_graph.py --input_type image_tensor --pipeline_config_path training/faster_rcnn_inception_v2_pets.config --trained_checkpoint_prefix training/model.ckpt-XXXX --output_directory inference_graph
#其中 XXX是 training中的highest-numbered.ckpt
这里生成 a frozen_inference_graph.pb 在文件夹\object_detection\inference_graph 中,里面包含着检测分类器 classifier
8、如何使用了
#调查后台
idle
#修改 object_detection_webcam 中的num_class 为种类数