Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tensorflow-yolov3中文交流 #39

Open
YunYang1994 opened this issue Jan 23, 2019 · 530 comments
Open

tensorflow-yolov3中文交流 #39

YunYang1994 opened this issue Jan 23, 2019 · 530 comments
Labels
good first issue Good for newcomers

Comments

@YunYang1994
Copy link
Owner

YunYang1994 commented Jan 23, 2019

hello大家好,我是该仓库的作者。鉴于我复现tensorflow-yolov3踩了太多坑,特此发个贴,帮助大家少走弯路。大家有问题可以在下面留言。

@zouliangyu
Copy link

感觉和原版有出入。yolov3的标注是处理为0-1范围内,网络预测出偏移量再联合anchor计算出预测值box,再返回原图与groudTruth计算loss,这版感觉没有把标注处理为0-1

@YunYang1994
Copy link
Owner Author

@zouliangyu 其实没有差别,因为我写的代码里也是预测偏移量的。原版yolov3里是要你自己预处理成0~1之间的,我这里是不用的。但本质上的损失都是偏移量的损失。

@wangyazhao001
Copy link

还是同一个问题,当运行show_input_image.py和train.py,还是出现这样的问题:

OutOfRangeError: End of sequence
[[{{node cond/IteratorGetNext_1}} = IteratorGetNextoutput_shapes=[[?,416,416,3], , , ], output_types=[DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_FLOAT], _device="/job:localhost/replica:0/task:0/device:CPU:0"]]

During handling of the above exception, another exception occurred。OutOfRangeError Traceback (most recent call last)
in ()
78 if (epoch+1)%1000 == 0: saver.save(sess, save_path="./checkpoint/yolov3.ckpt", global_step=epoch)

应该是读tfrecord的时候出现问题,这该如何解决?

@liuqinglong110
Copy link

@wangyazhao001 我已经完整运行过作者的show_input_image.py和train.py脚本了,都可以运行成功。我没有出现你这种问题。由于作者没有使用一个统一的config文件来管理各种参数,可能在训练自己的数据集时,出现报错。你仔细看看自己的样本集标注格式是否和VOC格式一致,或者,类别参数是否根据自己的训练集修改,还有voc.name等文件,很多细节地方需要注意。

@YunYang1994
Copy link
Owner Author

YunYang1994 commented Jan 23, 2019

@liuqinglong110 @zouliangyu @wangyazhao001 大家可以帮忙先train一下VOC数据集,训练的代码可以参考https://github.com/YunYang1994/tensorflow-yolov3/blob/master/quick_train.py 来写

@YunYang1994
Copy link
Owner Author

@wangyazhao001 你先看看你的dataset.txt是不是严格按照image_path xmin ymin xmax ymax class_id来写的,制作好tfrecords后用show_input_image.py看看对不对。

@sumenpuyuan
Copy link

@wangyazhao001 @YunYang1994 你好!我也出现了wangyazhao001的情况,我自己的数据集是一个类6万多训练集,2000多测试集我做了如下实验
(1)制作子集tfrecord格式,发现训练 训练集会报同样的错误,训练测试集没有问题。难道数量大会出问题?另外我发现不管把tf record 的num thread 设成多少训练集最后都会有个0k的tfrecord文件,可能和这个有关系?
(2)训练作者提供的一类racoon数据集,训练成功
(3)使用作者提供的show_input_image只显示自己的训练集或者测试集合,都没有出错,正常显示

我想问下,两位有什么好的建议吗?

@YunYang1994
Copy link
Owner Author

YunYang1994 commented Jan 24, 2019

@sumenpuyuan 你给的信息太少,不排除数据集存在脏数据。比如我之前遇到过数据集里有图片不完整的情况,后面有时间我会再优化下代码。

@liuqinglong110
Copy link

@wangyazhao001 @YunYang1994 你好!我也出现了wangyazhao001的情况,我自己的数据集是一个类6万多训练集,2000多测试集我做了如下实验
(1)制作子集tfrecord格式,发现训练 训练集会报同样的错误,训练测试集没有问题。难道数量大会出问题?另外我发现不管把tf record 的num thread 设成多少训练集最后都会有个0k的tfrecord文件,可能和这个有关系?
(2)训练作者提供的一类racoon数据集,训练成功
(3)使用作者提供的show_input_image只显示自己的训练集或者测试集合,都没有出错,正常显示

我想问下,两位有什么好的建议吗?

最后的那个0k的tfrecord文件应该删除吧,我自己也产生了这个文件,删除了,训练过程中没有出现问题。

@xliu79
Copy link

xliu79 commented Jan 24, 2019

您好, 我用你的脚本把我的.weigths转为.pb文件后跑了一下发现用nms_demo.py测试图片没有问题,但是用同样的.pb模型文件测试视频时候精度很差,远远不如测试图片效果好,奇怪的是把视频文件按帧每隔一段时间截图,再次测截图发现精度也还好,请问这是什么问题呢。。。。麻烦了o.o

@YunYang1994
Copy link
Owner Author

YunYang1994 commented Jan 24, 2019

@xliu79 你好,检测效果是可以根据阈值来调整的。另外,你也可以在https://github.com/YunYang1994/tensorflow-yolov3/blob/master/core/utils.py 调整读取权重的精度

def load_weights(var_list, weights_file):
    """
    Loads and converts pre-trained weights.
    :param var_list: list of network variables.
    :param weights_file: name of the binary file.
    :return: list of assign ops
    """
    with open(weights_file, "rb") as fp:
        np.fromfile(fp, dtype=np.int32, count=5)
        weights = np.fromfile(fp, dtype=np.float64)

@YunYang1994 YunYang1994 reopened this Jan 24, 2019
@YunYang1994 YunYang1994 added the help wanted Extra attention is needed label Jan 24, 2019
@zouliangyu
Copy link

想问一下作者自己训练多类目标的效果怎么样?

@YunYang1994
Copy link
Owner Author

@zouliangyu 还没有训练多类,可能等到年后会训练下voc数据吧。目前只训练了一个类别的数据,训练集5800多张,测试集1000多张,准确率在91%左右。

@wangyazhao001
Copy link

@sumenpuyuan @YunYang1994 @liuqinglong110 我现在在Linux下跑train.py没问题 可以跑起来了,show_input_image.py还没有测试。我前面是在windows下的jupyter下跑的,有可能是环境不兼容或者移植代码过程中出错,我将继续检查原来的错误,并且及时回复上来!

@wangyazhao001
Copy link

@YunYang1994 如何用训练好的网络来预测新数据(多张新图片),并且输出坐标信息?test.py的作用好像不是预测新数据,是quick_test.py嘛?

@liuqinglong110
Copy link

@zouliangyu 还没有训练多类,可能等到年后会训练下voc数据吧。目前只训练了一个类别的数据,训练集5800多张,测试集1000多张,准确率在91%左右。

你好,我训练了多个类别的训练集。有三类,车、行人、交通灯。目前,训练的loss值可以降低很小。如下所示:
=> EPOCH 33378 [TRAIN]: loss_xy: 0.0219 loss_wh: 0.0216 loss_conf: 0.0055 loss_class: 0.0000
=> EPOCH 33379 [TRAIN]: loss_xy: 0.0155 loss_wh: 0.0128 loss_conf: 0.0464 loss_class: 0.0000
=> EPOCH 33380 [TRAIN]: loss_xy: 0.0150 loss_wh: 0.0127 loss_conf: 0.0056 loss_class: 0.0001
=> EPOCH 33381 [TRAIN]: loss_xy: 0.0191 loss_wh: 0.0143 loss_conf: 0.0195 loss_class: 0.0000
=> EPOCH 33382 [TRAIN]: loss_xy: 0.0226 loss_wh: 0.0175 loss_conf: 0.0017 loss_class: 0.0000
=> EPOCH 33383 [TRAIN]: loss_xy: 0.0168 loss_wh: 0.0154 loss_conf: 0.0053 loss_class: 0.0000

但是,我用实际的视频进行测试时,发现,检测框抖动比较严重,尤其是目标不太完整时。复现的算法和原始的darknet版本还是有些差距。怀疑应该是在训练过程中,没有添加各种数据增强方法导致的。

@liuqinglong110
Copy link

@zouliangyu 还没有训练多类,可能等到年后会训练下voc数据吧。目前只训练了一个类别的数据,训练集5800多张,测试集1000多张,准确率在91%左右。

另外,上述结果是在我加载了darknet53.conv.74后,进行微调训练的。

@wangyazhao001
Copy link

@liuqinglong110 你测试用的哪个文件呢? 我找不到测试新数据的文件

@liuqinglong110
Copy link

liuqinglong110 commented Jan 24, 2019 via email

@YunYang1994
Copy link
Owner Author

@liuqinglong110 @wangyazhao001 你们训练好了后,可以上一些检测到效果图,以及loss变化情况嘛。另外大家也可以说说训练参数以及所花费的时间。

@wangyazhao001
Copy link

@liuqinglong110 quick_test.py中采用的是pb文件,但train.py中训练出来的并不是pb文件,我该怎么生成呢?

@liuqinglong110
Copy link

@liuqinglong110 quick_test.py中采用的是pb文件,但train.py中训练出来的并不是pb文件,我该怎么生成呢?

作者给提供了convert_weight.py文件呀。

@liuqinglong110
Copy link

liuqinglong110 commented Jan 24, 2019

@liuqinglong110 @wangyazhao001 你们训练好了后,可以上一些检测到效果图,以及loss变化情况嘛。另外大家也可以说说训练参数以及所花费的时间。

我的loss值在前面已经贴上了。我只使用了7000张样本训练,训练了3万次batch,batch_size=32。我在1080显卡上训练,大概训练了6个小时。各个loss值都可以降低到0.01左右。
对于整体完整的目标检测效果还可以,但是有遮挡的时候,检测框抖动严重。我怀疑是没有使用数据增强的原因。之前,我使用darknet版本的yolov3训练效果还是比较理想的,同样的数据。

@YunYang1994
Copy link
Owner Author

@liuqinglong110 可以上图对比下

@YunYang1994
Copy link
Owner Author

YunYang1994 commented Jan 25, 2019

import tensorflow as tf
from core import utils, yolov3
from core.dataset import dataset, Parser
sess = tf.Session()

IMAGE_H, IMAGE_W = 608, 608
BATCH_SIZE       = 8
EPOCHS           = 80000
LR               = 0.001
SHUFFLE_SIZE     = 200
CLASSES          = utils.read_coco_names('./data/vehicle.names')
ANCHORS          = utils.get_anchors('./data/coco_anchors.txt')
NUM_CLASSES      = len(CLASSES)

@cxjaicj
Copy link

cxjaicj commented Aug 30, 2020

@zouliangyu 还没有训练多类,可能等到年后会训练下voc数据吧。目前只训练了一个类别的数据,训练集5800多张,测试集1000多张,准确率在91%左右。

另外,上述结果是在我加载了darknet53.conv.74后,进行微调训练的。

请问VOC数据您训练了吗?

@songruiqi
Copy link

如何自己在代码里指定gpu的id?

@chenti2x
Copy link

负样本和不参与计算的样本没有区分开呀?对于和目标重叠率很大,但是中心不在同一个网格的anchors,这样的prior box是不是既不能作为正样本也不能作为负样本?为什么代码没有区分出不参与计算的样本呢?

@nnzy11
Copy link

nnzy11 commented Oct 23, 2020

这个能在windows下运行吗 求大佬告知,另:在windows下如果能运行,出现了
image这样的错误 有人知道怎么解决吗 谢谢

@NE-MI-EM
Copy link

想请问一下po主和其他好心大佬,我在跑demo的时候,用摄像头发现帧率很低,怎么提高帧率啊?谢谢!

@jcluo1994
Copy link

jcluo1994 commented Nov 4, 2020 via email

@Mercurise
Copy link

Mercurise commented Nov 25, 2020

hello,

@YunYang1994 想问下大家有没有一些可以参考的INT8 模型的mAP,在MS-COCO val2017上关于Yolov3, Yolov3 Tiny的?

我这边FP32的mAP跟大佬给的benchmark 接近,但是Yolov3 TFLite INT8的差距很大 (quantisation 的精度损失很大,不像别的val2014 ("minival") 损失了10% ),V3 Tiny的FP32也是接近,但没找到INT8的参考mAP。多谢各位。

@ai1361720220000
Copy link

你好作者,可以运行train.py,但是GPU的利用率太低了要怎么办呢?

@jingting9
Copy link

你好,在dataset.py的第217行‘anchors_xywh[:, 0:2] = np.floor(bbox_xywh_scaled[i, 0:2]).astype(np.int32) + 0.5’,看代码应该是给anchors设置和bbox一样的center再计算iou,这里为什么不直接用bbox_xywh_scaled的中心,而是先向下取整,再转为int32,最后再加上0.5?我猜是和python的浮点数计算有关,但是不确定

@laisimiao
Copy link

你好作者,可以运行train.py,但是GPU的利用率太低了要怎么办呢?

我也是,cpu运行很低,导致gpu利用率也很低

@taojianggit
Copy link

请问如何计算FLOPs

@lulu-Lucas
Copy link

作者你好,我训练好了权重文件pb.也可以对图像和视频进行预测,但是运行evalute.py文件,测试图像一个也识别不出来,需要修改什么吗?
您好,我也遇到了这个问题了,您是怎么解决的呢?

您好我也遇见了这个问题,demo可以正常检测,但是evaluate.py却预测不出框

您好,请问您解决了吗

@99312254
Copy link

这个能在windows下运行吗 求大佬告知,另:在windows下如果能运行,出现了
image这样的错误 有人知道怎么解决吗 谢谢

gpus = tf.config.experimental.list_physical_devices(device_type='GPU')#解决显存不足问题,提示错误信息Could not create cudnn handle: CUDNN_STATUS_ALLOC_FAILED
tf.config.experimental.set_memory_growth(gpus[0], True)

@YunYang1994
Copy link
Owner Author

yunyang您好,非常感谢您的代码仓,现在我已完成训练。但是处于项目的要求,我需要在ckpt文件生成pb时,指定input_data这个输入节点的大小固定,shape为[1, 300, 300, 3]时,我试过在freeze_graph.py中指定大小,但是不能成功。请问您有什么好的建议吗。

shape 的宽高至少得是 13 的倍数,建议设置成 [1, 416, 416, 3] 大小。

@RyanShun-511
Copy link

KeyError: '/home/xzm/github_repository/PersonDetectionTFLite/VOCOutput/VOC/train/VOC2020/JPEGImages/000000470960.jpg does not exist ... '
您好,我根据这个博客教程:https://blog.csdn.net/weixin_43978056/article/details/109542579?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_paycolumn_v3&utm_relevant_index=2
去训练从COCO数据集中提取的person数据集,但是执行:python train.py的时候,报了上面的错误。但是在该目录下,确实是有这个.jpg图片。
执行多次 python train.py ,它提示的的图片KeyError都不一样
请问,怎么解决呢?

@dodogoffy
Copy link

dodogoffy commented Mar 7, 2022 via email

@xrbear
Copy link

xrbear commented Mar 7, 2022 via email

@climbingforest
Copy link

climbingforest commented Mar 7, 2022 via email

@Guanzhao-hub
Copy link

您好,请问如果我们想输出 HDF5 格式的训练后的 weights 应该怎么做呢?

@xrbear
Copy link

xrbear commented Apr 2, 2022 via email

@dodogoffy
Copy link

dodogoffy commented Apr 2, 2022 via email

@climbingforest
Copy link

climbingforest commented Apr 2, 2022 via email

@swagqi
Copy link

swagqi commented May 25, 2022

您好,我在使用tensorflow-yolov3时可以正常训练自己的数据集,但是测试图片时却无法出现框,也无法得到map
之后我降低了iou和score,减小了batch_size还是不行,但是更换权重文件后可以出现map
会是因为数据集太少吗,我的是300多张图片的苹果,香蕉,橘子数据集

@climbingforest
Copy link

climbingforest commented May 25, 2022 via email

@xrbear
Copy link

xrbear commented May 25, 2022 via email

@Guqiuwang
Copy link

原来gitee.io上的blog讲解网站挂了,在哪儿还能看到吗

@climbingforest
Copy link

climbingforest commented Jul 26, 2024 via email

@dodogoffy
Copy link

dodogoffy commented Jul 26, 2024 via email

@nnzy11
Copy link

nnzy11 commented Jul 26, 2024 via email

@xrbear
Copy link

xrbear commented Jul 26, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
good first issue Good for newcomers
Projects
None yet
Development

No branches or pull requests