Toybrick

标题: 求分享mobilenet-ssd的priorbox.txt的生成代码 [打印本页]

作者: Devin    时间: 2020-1-16 15:22
标题: 求分享mobilenet-ssd的priorbox.txt的生成代码
这个了解了下,一个是tf的,一个是https://github.com/Pinnh/NPU_CaffeSSD的,可我没用过tf,用NPU_CaffeSSD时,发现生成的数值有的不在o—1之间,小于0,而且后面都是0.1, 0.2,,请问这个正常吗?大家都怎么生成priorbox.txt文件的呢。谢谢!

作者: troy    时间: 2020-2-1 20:15
这个文件一般都是模型自带的,跟模型相匹配,不是自己生成的。
作者: leok    时间: 2020-2-21 08:58
1.推理的时候,找到对应模型concat节点,用该节点作为输出,可以拿到min_x, miny_, max_x, max_y,可以按保存center_x, center_y, w, h
2.建议研究下模型算法
作者: Devin    时间: 2020-2-24 14:48
leok 发表于 2020-2-21 08:58
1.推理的时候,找到对应模型concat节点,用该节点作为输出,可以拿到min_x, miny_, max_x, max_y,可以按保 ...

谢谢!我参考了https://github.com/Pinnh/NPU_CaffeSSD获取了center_x, center_y, w, h并保存下来,结果跟官方给的mobilenet ssd的demo中priorbox文件数据基本一样(why?),我是直接用的标准 mobilenet ssd训练自己数据的,只把类别数设置为2,其他只是改了超参。目前保存下来的数据看上去没毛病了,也都在0-1之间,后面的0.1和0.2也没有了(后面理解了是偏移量),但推理时提示:valid count too much!报错。。我想问题还是出在这个priorbox.txt文件上。。。
作者: ylc123    时间: 2020-6-2 14:32
本帖最后由 ylc123 于 2020-6-3 14:58 编辑
Devin 发表于 2020-2-24 14:48
谢谢!我参考了https://github.com/Pinnh/NPU_CaffeSSD获取了center_x, center_y, w, h并保存下来,结果 ...
       自己已使用这个github作者提供的方法在rknn官方vgg ssd和自己裁剪后的mobilenet ssd上运行成功。
        我这边使用了https://github.com/Pinnh/NPU_CaffeSSD的方法,
(1)提取了vgg ssd(官方的caffe模型需要自己下载,使用了rknn中的去掉detectionout的prototxt)的pribox.txt,然后和官方对比结果是一致的;
(2)使用rknn的测试代码运行后,保存的result.jpg结果也是一致的。
(3)如果测试自己的模型,要留意rknn官方给的测试脚本中的归一化是否和自己的一致,否则不会输出结果。
         不过,这个github的代码有以下几个问题需要注意,
(1)只适用于检测一个目标的,如果你检测的不是一个目标,需要修改npu_ssd_det.py中的
        a)   conf        = [[x/(x+y),y/(x+y)] for x,y in np.exp(conf)]
        b)   score      = conf[1]    github作者是检测一个目标,所以是[1],如果你是多个目标,这里就得注意一下了
        c)   outlen     =  这个值一般为你的pribox个数*4
        d)   classnum =  这个是你的检测目标个数+1
        这几个地方的代码。
(2)rknn官方的pribox.txt是一个数据一行的,如果要完全按照这个格式,你需要修改这个github代码中pribox.py中的第二个保存txt的代码为如下代码

  1.    pb=np.reshape(pb,(len(pb),1))
  2.     with open("./priorbox_mobilenetssd.txt",'w') as f:
  3.          f.write("")
  4.     with open("./priorbox_mobilenetssd.txt",'a') as f:
  5.          for line in pb:
  6.              f.write("".join(map(str,line))+"\n")
复制代码




作者: loi666    时间: 2020-6-4 16:23
ylc123 发表于 2020-6-2 14:32
自己已使用这个github作者提供的方法在rknn官方vgg ssd和自己裁剪后的mobilenet ssd上运行成功。
  ...

就是我也用的这个仓库的代码,根据他的实例,然后生成的priorbox为什么有负数存在呀,求解答呀
作者: ylc123    时间: 2020-6-8 11:52
loi666 发表于 2020-6-4 16:23
就是我也用的这个仓库的代码,根据他的实例,然后生成的priorbox为什么有负数存在呀,求解答呀 ...

官方的里面也有啊
你有测试效果吗
作者: loi666    时间: 2020-6-11 10:34
ylc123 发表于 2020-6-8 11:52
官方的里面也有啊
你有测试效果吗

我后来看了一下好像是官方给的是中心点的坐标加w,h而用这个仓库提取出来的是他的左上角和右下角的坐标,但是,生成的坐标值好像和原始的官方给的数据没多大差别,难道是固定的default box?不是模型最后拟合的那个实际框吗?
作者: loi666    时间: 2020-6-11 10:39
本帖最后由 loi666 于 2020-6-11 10:40 编辑

仓库提取的图
作者: loi666    时间: 2020-6-11 10:41
这个0.1,0.2是variance值




欢迎光临 Toybrick (https://t.rock-chips.com/) Powered by Discuz! X3.3