如何解决使用张量流和更快的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 举报,一经查实,本站将立刻删除。