目标检测-Tensorflow Faster_RCNN

本文介绍了采用TensorFlow 1.15.0进行模型训练的详细步骤。包括下载模型、anaconda配置、设置运行目录、配置protobuf等,还说明了准备数据集、生成CSV文件、设置训练识别类型、模型训练配置等内容,最后阐述了开始训练、创建结果及运行结果的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

采用 tensorflow 1.15.0

第1步 下载模型

链接:https://pan.baidu.com/s/1Z9lGedq0-9Ow9uzhv-q7ng
提取码:mtu3

这里面的代码我已经做好适配了,可以直接按照下面的教程进行,原来的第二步、第三步不需要做。

第4步:anaconda配置

如果没有下载anaconda先下载然后修改anaconda的源为清华源
每当出现下载不了的情况下就先切换默认源然后修改下面一个可以使用的conda源

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/

清华源经常会挂掉,可以换成上交源

conda config --add channels https://mirrors.sjtug.sjtu.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.sjtug.sjtu.edu.cn/anaconda/pkgs/main/

如果也挂了换成中科大源

conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/

注意每次切换源之前都切要运行下面这句话先切回默认源在运行上面的设置源

conda config --remove-key channels

接下来安装下面这些需要的包,注意tensorflow版本亲测1.15.0可用,必须使用conda安装不要使用pip安装,因为使用conda安装gpu版本的会自动配置号cuda不需要单独安装cuda

conda create -n tensorflow1 pip python=3.6
activate tensorflow1
如果是CPU就输入 conda install tensorflow=1.15.0 如果是GPU 就输入 conda install tensorflow-gpu=1.15.0
conda install -c anaconda protobuf
pip install -i https://pypi.doubanio.com/simple pillow
pip install -i https://pypi.doubanio.com/simple lxml
pip install -i https://pypi.doubanio.com/simple jupyter
pip install -i https://pypi.doubanio.com/simple matplotlib
pip install -i https://pypi.doubanio.com/simple pandas
pip install -i https://pypi.doubanio.com/simple opencv-python
# 视频里面没有下面这句 也要执行 防止后面setup的时候连国外网不好不能自动安装cython
pip install -i https://pypi.doubanio.com/simple cython

第5步:设置运行的目录

(每次activate环境后都需要做这一步!!!)

set PYTHONPATH=C:\tensorflow1\models;C:\tensorflow1\models\research;C:\tensorflow1\models\research\slim

第6步:配置protobuf

然后再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

第7步:执行setup files

然后执行setup文件(再model/research目录下执行):

python setup.py build
python setup.py install

第8步:准备数据集

使用自己的数据集就使用https://github.com/tzutalin/labelImg 进行标注

第9步:生成CSV文件

在object_detection目录下执行

python xml_to_csv.py

生成的CSV是这个样子的:就是每张图片的名字以及标注的框的像素点的位置
在这里插入图片描述
如果是其他数据集可能没有XML文件,这个时候就需要将数据集的标注整理成CSV的文件,比如KITTI数据集可以使用:

python generate_csv.py --input=kitti_image/txt_labels/ --output=kitti_image/csv/annotations.csv

来转换成CSV文件格式,需要注意的是KITTI数据集只有train的数据有标记数据,转换完成之后还需要将CSV分割成对应train和test的部分,否则不能通过下一步。

第10步:设置要训练识别的类型

打开generate_tfrecord.py修改,把要识别的类型修改好,注意这里有一个坑,官方给的else后面是None,必须修改成return 0

def class_text_to_int(row_label):
if row_label == 'class1':
    return 1
elif row_label == 'class2':
    return 2
elif row_label == 'class3':
    return 3
elif row_label == 'class4':
    return 4
elif row_label == 'class5':
    return 5
elif row_label == 'class6':
    return 6
else:
    return 0

然后在training/labelmap.pbtxt也要修改成一致的:

      item {
      id: 1
      name: 'class1'
      }
 
      item {
      id: 2
      name: 'class2'
      }
     
      item {
      id: 3
      name: 'class3'
      }
      
      item {
      id: 4
      name: 'class4'
      }
     
      item {
      id: 5
      name: 'class5'
      }

然后配置好训练的路径,注意下面csv的路径以及训练图片的路径

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

第11步:模型训练的配置

对C:\tensorflow1\models\research\object_detection\training\faster_rcnn_inception_v2_pets.config文件做出如下修改(如果是严格按照之前的步骤来的那么路径类的不需要修改):

第9行: 输入有多少个种类

第110行:是模型的路径以ckpt表示,比如:

C:/tensorflow1/models/research/object_detection/faster_rcnn_inception_v2_coco_2018_01_28/model.ckpt

注意在windows下复制下来的路径斜杠是\,必须换成/
第126行,是train.record的路径

input_path : "C:/tensorflow1/models/research/object_detection/train.record"

第128行是label.pbtxt的路径:

label_map_path: "C:/tensorflow1/models/research/object_detection/training/labelmap.pbtxt"

第132行
有多少张图片在images/test文件夹里面
第140行和142行:

C:/tensorflow1/models/research/object_detection/test.record
C:/tensorflow1/models/research/object_detection/training/labelmap.pbtxt

第12步:开始训练

运行下面这句话就可以开始训练了

python train.py --logtostderr --train_dir=training/ --pipeline_config_path=training/faster_rcnn_inception_v2_pets.config

如果需要查看tensorboard那么再开一个anaconda在object_detection文件夹下面执行(记得先执行的第五步!!!):

tensorboard --logdir=training

查看tensorboard的时候如果打不开的话使用conda list命令查看tensorboard是不是1.15.0,如果不是的话直接运行conda install tensorboard=1.15.0安好之后运行上面那句话就好了

第13步:创建训练结果

 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

其中xxxx是最后要使用的checkpoint

第14步:运行结果

打开Obeject_detection_image.py然后修改NUM_CLASSES为识别的种类数,然后修改测试的图片路径后运行就可以了。

python Object_detection_image.py
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值