微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用张量流和更快的RCNN进行对象检测

如何解决使用张量流和更快的RCNN进行对象检测

我是新手,所以如果我有任何错误,请多包涵。我只是为了练习而从头开始制作Faster RCNN。我正在使用本文中提到的预训练的VGG 16。我如何准确地将输入传递给rpn?我为每个图像生成了一些硬编码的锚框。现在我该如何训练他们?另外,如果有人演示了tf.data模块在出现图像的情况下的使用,那将有很大的帮助。

以下是我的模型。RPN: classifier section(前2层是VGG16层)

这是我正在使用的数据集:https://www.kaggle.com/zaraks/pascal-voc-2007

这是我的锚框代码

def filewiseBB():
#Returns a dict containing {filename:[list of bb]}
base_dir='/tmp/VOCtrainval_06-Nov-2007/VOCdevkit/VOC2007/Annotations/'
bbs={}

for j in os.listdir('/tmp/VOCtrainval_06-Nov-2007/VOCdevkit/VOC2007/Annotations/'):
    
        annot_dir=base_dir+j
        
        with open(annot_dir) as fd:
            doc = xmltodict.parse(fd.read())
        bBoxes=[]
        if isinstance(doc['annotation']['object'],list):
            
            for i in doc['annotation']['object']:
                if int(i['difficult'])==0:
                    b=[]
                    b.append(i['name'])
                    b.append(i['bndBox']['xmin'])
                    b.append(i['bndBox']['ymin'])
                    b.append(i['bndBox']['xmax'])
                    b.append(i['bndBox']['ymax'])
                    bBoxes.append(b)
            
        else:
            if int(doc['annotation']['object']['difficult'])==0:
                b=[]
                b.append(doc['annotation']['object']['name'])
                b.append(doc['annotation']['object']['bndBox']['xmin'])
                b.append(doc['annotation']['object']['bndBox']['ymin'])
                b.append(doc['annotation']['object']['bndBox']['xmax'])
                b.append(doc['annotation']['object']['bndBox']['ymax'])
                bBoxes.append(b)
                print(doc['annotation']['filename'])
        bbs.update({j:bBoxes})

          return bbs

def anchorBoxGenerator(imagename):
    '''Returns a list of lists with proposed anchor Boxes which are entirely inside the image. [[x,y,w,h],[...]]'''

    image=cv2.imread('/tmp/VOCtrainval_06-Nov-2007/VOCdevkit/VOC2007/JPEGImages/'+imagename[:-4]+'.jpg')
    height,width,_=image.shape
    
    ancBoxes=[]
    dims_Boxes=[20,40,60,80]
    for i in range(32,32):
        for j in range(32,height,32):
            for k in dims_Boxes:
                for m in dims_Boxes:
                    if(((i-k)>0)and(j-m)>0):
                        ancBoxes.append([i,j,k,m])
    return ancBoxes  

关于如何从这里开始,我没有一个明确的概念。 如果我对rpn或一般文件有误解,请纠正我:) 预先感谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。