写这篇主要是写了代码不想浪费
用的是github上的tf-faster-rcnn(自己搜下)
python3.6.2版本
错误:assert(boxes[:,2]>=boxes[:,0]).all():
boxes是标注的bounding box,检查Xmax是否大于Xmin,只要有一个不符合就报错
======================
问题原因:1.数据集有问题2.数据集改过来以后没删除缓存
2问题看https://blog.csdn.net/10km/article/details/64641322,他用的是github上的py-faster-rcnn如果你用的跟我一样,是github上的tf-faster-rcnn的话,清除Annotations里的cache里的pkl..
也评价下https://blog.csdn.net/xzzppp/article/details/52036794里解决方案
如果报错原因是数据集标注起点为(0,0),不想改数据集的话,对Xmin,Ymin,Xmax,Ymax减一去掉可以,但是fipped操作不知道会不会还会有问题,第一条解决方案就还是别用了。。第三个解决方案,如果数据集已经改成是(1,1)为起点的话,还有这个问题就估计是部分标注Xmin和Xmax反过来了
========================
解决1问题:数据集有问题,
可能数据集没符合PASCAL VOC格式,,pascal voc的标注起始应该是1-based而不是以0开始的
首先坐标起始点都得为1,坐标不能越界
以下是检查数据集的代码:
1.检查是否图片损坏
2.检查坐标七点是否都不为0
3.检查xmax是否大于xmin,会引起
这个代码作用是检查数据集,检查是否有图片损坏(可能引起loss=NAN),检查是否数据集开始坐标(0,0)
#改一下curDir为数据集里图片的地址和path地址
#1check if there are corrputed images in JPEG
#2check if there are '0' cordinate in xml file
#3chechk if xmin coordinates have 0 value,todo:checkif max is greater than width
#111111111111111111111111
import numpy as np
from PIL import Image
import xml.dom.minidom
import os
if __name__ == '__main__':
badFilesList = []
curDir = &#