tensorflow下YOLO v1的代码

【整理自用】

1. 环境:tensorflow-gpu=1.13.1,及其自带的CUDA10.0和cudnn;spyder=4.1.1(不确定)

2.代码来源:https://github.com/hizhangp/yolo_tensorflow.git

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGhpbGlwX3BvbmQ=,size_7,color_FFFFFF,t_70,g_se,x_16

注:需要自己添加数据data文件夹

 97c56e953262432f83a9d7fcddd09a0a.png

(1)weights文件夹中需要另外下载权重文件:YOLO_small.ckpt;

(a)下载链接:​​​​​​LS_learner

YOLO_small.ckpt下载:
链接:https://pan.baidu.com/s/15pxR29zsiEpRnQ4y3sjLag
提取码:pf4j
yolo_weights.h5下载:
链接:https://pan.baidu.com/s/10DiVRyul_n8ZHX2NEm5uBw
提取码:gqjb

(b) 另外当train.py运行结束后(训练完成后),在 yolo_tensorflowdatapascal_vocoutput文件夹中最后一个文件夹中的最末三个文件(是训练好的模型),也需要复制到weights文件中,并增添.ckpt.

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGhpbGlwX3BvbmQ=,size_11,color_FFFFFF,t_70,g_se,x_16bd55a7bcce704850b2389a1905b423eb.png

注意:权重文件.ckpt往往是别人训练好了的,即对种类的个数有了事先的固定,如本代码中用的VOC2007训练集相关的权重文件,则一定要有20个种类,否则会报错。如,在最后的全连接层输出时产生shape上的不匹配。

附上查看.ckpt文件的代码:

from tensorflow.python.tools.inspect_checkpoint import print_tensors_in_checkpoint_filesavedir='H:/temp/detective/yolov1_tensorflow/data/weights/YOLO_small.ckpt'print_tensors_in_checkpoint_file(savedir, False, True) #查看全部内容from tensorflow.python import pywrap_tensorflowpath = 'H:/temp/detective/yolov1_tensorflow/data/weights/YOLO_small.ckpt'reader = pywrap_tensorflow.NewCheckpointReader(path)param_dict = reader.get_variable_to_shape_map() '''for key, val in param_dict.items():    if key=='yolo/fc_36/weights':        val[1] = 1470        print (key, val)#查看某个参数的name和shape'''for key, val in param_dict.items():    print (key, val)#查看全部参数的name和shape

 (2)pascla_voc文件夹中主要是output文件夹(按日期保存每一次训练模型的结果)和VOCdevkit文件夹(训练需要用到的数据)。

a83be6df17814638b21c9b052c8774a8.png​解压到VOCdevkit文件夹,同名子文件夹会自动合并,即训练用的所有图片和检验、及测试用的图片总和。

【通过制作自己的训练集来感受过程:

(a)只考虑目标检测(不考虑分割之类的),只需要Annotations,ImageSets,JPEGImage三个文件夹,及一个文本文件(空的,随便命名为output,暂时不明白原因)。

6530847312aa430084e1938c0dfa67ec.png

JPEGImage:保存.jpg文件,是代码需要的所有图像

Annotations:保存.xml文件,是对应图像中真实框的种类和位置等信息,具体操作见Window+Anaconda下安装labelImg

(a)创建虚拟环境:labelImg(没有任何如tensorflow等深度学习框架)

(b)进入环境后输入:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple PyQt5pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyqt5-toolspip install -i https://pypi.tuna.tsinghua.edu.cn/simple lxmlpip install -i https://pypi.tuna.tsinghua.edu.cn/simple labelImg

(c)输入labelImg打开软件,对 JPEGImage中的图像手动标记出边界框和对应类别,经该软件会自动生成标签文档存入Annotations中。

ImageSets:子文件夹Main,内有4个文本文件,保存着各个环节需要的图片名称,功能就是“划分数据集”

(a)下载:https://github.com/EddyGao/make_VOC2007

(b)进入/make_VOC2007/blob/master,运行make_main_txt.py,注意修改内容中的相关链接,会自动划分数据集并保存到ImageSets/Main中,如下图。

72781824c16e41e58438ef80f4e19a1b.png​      watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGhpbGlwX3BvbmQ=,size_4,color_FFFFFF,t_70,g_se,x_16​   

3.代码部分

(1)一开始运行就出现了不明报错,在代码开头加入了

tf.reset_default_graph()
#tf.reset_default_graph函数用于清除默认图形堆栈并重置全局默认图形。无论重复运行多少次,产生的张量都不变(设置不变)

(1)config.py是参数设置,其中需要注意BATCH_SIZE的值,会直接影响到训练的次数和收敛。考虑电脑配置,略高可能会无法运行,考虑设置为1,主要是验证代码能否成功运行

a2473abceade46c6aa3f3305a5b0584c.png

(2)pascal_voc.py是处理图像和标签,有以下几处注意修改:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGhpbGlwX3BvbmQ=,size_16,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGhpbGlwX3BvbmQ=,size_16,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGhpbGlwX3BvbmQ=,size_16,color_FFFFFF,t_70,g_se,x_16

(3) train.py中注意修改:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcGhpbGlwX3BvbmQ=,size_17,color_FFFFFF,t_70,g_se,x_16

log_str = '{} Epoch: {}, Step: {}, Learning rate: {},Loss: {:5.3f}
Speed: {:.3f}s/iter,Load: {:.3f}s/iter, Remain: {}'.format(                        datetime.datetime.now().strftime('%m-%d %H:%M:%S'),

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
要在TensorFlow中使用YOLO口罩检测,首先需要搭建基础环境。你需要安装Windows 10、CUDA 10.0、Python 3.7.4以及TensorFlow-GPU 1.14.0等相关环境。同时,还需要安装Keras 2.2.4和Numpy 1.16.5等必要的库文件。 接下来,你需要下载Keras-YOLO3代码,这是一个开源的YOLO口罩检测的实现。你可以从GitHub等代码托管平台上获取该代码。 在加载Keras模型后,你可以获取当前会话(session)并从中读取图结构。然后,你可以将该图结构保存为TensorFlow的图结构文件,以便后续的推断操作。具体的代码实现包括加载Keras模型、获取会话、将图结构转换为常量图(constant graph)以及保存图结构文件等步骤。 如果在运行过程中遇到报错,例如"Failed to get convolution algorithm",可能是由于cuDNN未能成功初始化。你可以检查日志文件以查看是否有相关警告信息。 总而言之,使用TensorFlow实现YOLO口罩检测需要搭建基础环境、下载Keras-YOLO3代码,并在加载模型后保存图结构。在运行过程中需要注意处理可能出现的错误。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [人工智能-深度学习-yolov3口罩佩戴识别](https://blog.csdn.net/xyy1028/article/details/119932088)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [人脸口罩检测现开源PyTorch、TensorFlow、MXNet等全部五大主流深度学习框架模型和代码...](https://blog.csdn.net/fengdu78/article/details/104509633)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值