anchors的设置必须与检查对象的目标大小和比例一致。 不只是默认值。
请注意,如果:模型的输入大小发生变化,目标大小也会发生变化。
因此首先分析anchor ratio和anchor scale的分布,在数据分布分析的基础上进行相应的设定即可。
以下是分析代码:
importjsonimportcv2importosimportnumpyasnpimportargparseimportrandomfrommatplotlibimportpyplotasplt _ gray=65218、227、210 0 ) _white=) 255、255、255 ) def draw(x ) x,name ) : fig,) ax0,ax1 )=PLT.subpllaw越窄ax0.hist(x,x ) alpha=0.75 ) ##pdf概率分布图1万个数给定区间内的数是多少个ax0.set_title(name ) # cdf ) ax1.hist(x ) x,50,normed=1,hist tte 是否facecolor='pink ",例如, 需要统计小于5的数字的概率ax1.set_title(name'_CDF ' ) fig.subplots _ adjust (hspace=0.4 ) PLT.savefig ) name'.png '。 img_w ) :short=min(img_w,img_h ) large=max ) ) mg ) w max _ size/large (return scale _ factordeflordeflord ' r ' ).read lines (: bboxs=[ ] line=JSON.loads ) line.strip ) ) filename=line.get ) filename, '') forinstanceinline [ ' instances ' ] : Bboxs.append (instance.get ) bbox ),[] ) ret [ filename ]=bbboxsretuture bhs,bws=[],[ ] total=[ ] key=d _ gt.keys (IFN 03360 keys=random.sample ) keys,n ) forkeyinkeys 3360 img=cv2 l,h,w ) bboxs=d_gt[key] bw_0,BH_0=bboxs[0][2] bh=scale * bw_0,scale * BH _0mean _ w=(0) 1e-5 ) areas.append(mean_w ) aspects.append ) aspect ) total.append(NP.array([bw,bh,aspect,mean_w aspects if _ name _=' _ main _ ' : parser=arg parse.argument parser () parser.add_argument )-parser.add all.JSON ' ) parser.add_argument('-I ','--imagedir ',type=efault=' ./dataset/Chinese-city-parky type=int,default=256 ) parser.add_argument('-l ','--long_scale ',type=int,default=256 ) args=
可知比率在1~4之间,scale在0-75之间,如果stride为16
因此,ratio可以设定为0.2、0.3、0.5、1
可以将scale设置为5、3、1和0.5
分析resize后的目标大小,设定合适的scale
参考:https://Zhan.zhi Hu.com/p/44106492
3359 Zhan.zhi Hu.com/p/55824651