- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
[⽬标检测_前处理]⾃适应缩放-Letterbox
1.介绍
由于数据集中存在多种不同和⻓宽⽐的样本图,传统的图⽚缩放⽅法按照固定尺⼨来进⾏缩放会造成
图⽚扭曲变形的问题。⾃适应缩放技术通过填充最少的灰边像素来将任意⼤⼩的图⽚调整为所需输⼊
图⽚⼤⼩。
普通resize造成的图⽚扭曲形变
Letterbox算法保持图⽚原有⽐例,其他部分⽤背景⾊填充
2.流程
第⼀步:计算缩放⽐例。当原图的⻓宽不同时,将需要的尺⼨⼤⼩除以原图的⻓宽,获得两种缩放
⽐,选择较⼩的值作为缩放⽐例。
第⼆步:分别计算缩放后的图像的⻓宽,原图的⻓宽分别乘以缩放⽐例。
第三步:计算填充的灰⾊像素。以YOLOv5为例,将需要的尺⼨⼤⼩减去缩放后的短边⼤⼩,得到的值
再采⽤numpy库中np.mod函数对32倍取余数的⽅式计算,然后通过平分得到对称两边需要填充的
灰⾊像素。之所以⽤32取余,是因为YOLOv5s的⽹络需要对图像进⾏5次两倍下采样。
3.代码实现
1defresize_image(image,size,letterbox_image):
2
3:brief对输⼊图像进⾏resize
4Args:
5size:⽬标尺⼨
6letterbox_image:bool是否进⾏letterbox变换
7Returns:指定尺⼨的图像
8
9fromPILimportImage
10ih,iw,_=image.shape
11h,w=size
12ifletterbox_image:
13sale=min(w/iw,h/ih)#缩放⽐例
14nw=int(iw*sale)
15nh=int(ih*sale)
16image=v2.resize(image,(nw,nh),interpolation=v2.INTER_LINEAR)
17#⽣成画布
18image_bak=np.ones((h,w,3),dtype=np.uint8)*128
19#将image放在画布中⼼区域-letterbox
20image_bak[(h-nh)//2:(h-nh)//2+nh,(w-nw)//2:(w-nw)//2+nw,:]=
image
21else:
22image_bak=image
23returnimage_bak
1importnumpyasnp
2importv2
3
4defletterbox(im,new_shape=(448,448),olor=(114,114,114),auto=True,
saleFill=False,saleup=True,stride=32):
5#Resizeandpadimagewhilemeetingstride-multipleonstraints
6shape=im.shape[:2]#urrentshape[height,width]
7ifisinstane(new_shape,int):
8new_shape=(new_shape,new_shape)
9
10#Saleratio(new/old)
11r=min(new_shape[0]/shape[0],new_shape[1]/shape[1])
12ifnotsaleup:#onlysaledown,donotsaleup(forbettervalmAP)
13r=min(r,1.0)
14
15#Computepadding
16ratio=r,r#width,heightratios
17new_unpad=int(round(shape[1]*r))
文档评论(0)