大像素图像目标检测的解决方案

文章目录[隐藏]

前言

我们用无人机或者遥感拍到的图片可能是特别大像素的图片,而我们的模型训练的时候可能是训练的数据集都是可能经过人工筛选的数据集,就目标相对清晰的图片,而我们用yolov5已经训练好的模型去推理大像素图片的时候,效果特别差,如下图所示:
在这里插入图片描述
比如上图,我们的目标是识别花,可以看到,很多都没有检测出来,我们需要将大像素的图片切割成小像素的,再来进行推理

import os.path
from PIL import Image
import cv2
import matplotlib.pyplot as plt
from tqdm import tqdm
def sliding_window(image, stepSize, windowSize):
# slide a window across the image
 	for y in range(0, image.shape[0], stepSize):
 	 	for x in range(0, image.shape[1], stepSize):
 	 	# yield the current window
        	yield (x, y, image[y:y + windowSize[1], x:x + windowSize[0]])
def shixian():
	(winW, winH) = (1024, 1024)
# 步长大小
	stepSize = 1024
	cnt = 0
	for filename in os.listdir('./image'):#存的image图片,如1.jpg
        filenames = './image/' + filename
    	image = cv2.imread(filenames, 1)
       	for (x, y, window) in sliding_window(image, stepSize=stepSize, windowSize=(winW, winH)):#进行裁剪
			# if the window does not meet our desired window size, ignore it
        	if window.shape[0] != winH or window.shape[1] != winW:
            	continue
        	# since we do not have a classifier, we'll just draw the window
        	clone = image.copy()
       		cv2.rectangle(clone, (x, y), (x + winW, y + winH), (0, 255, 0), 2)
        	cv2.imshow("Window", clone)
        	cv2.waitKey(100)
        	slice = image[y:y + winH, x:x + winW]
        	cv2.namedWindow('sliding_slice',0)
            cv2.imshow('sliding_slice', slice)
        	cv2.waitKey(100)
        	cnt = cnt + 1
        	Img_Name = './' + str(cnt) + '.jpg'
        	cv2.imwrite(Img_Name, slice)
        	print('cnt', cnt)
        	# cv2.imwrite('./dd.jpg', slice)
	    for i in range(cnt):
        	Img_Name = './' + str(i)+'.jpg'
        	cv2.imwrite(Img_Name,slice)
        	plt.savefig('./temp{}.png'.format(i))
        	plt.clf()
if __name__ == '__main__':
	shixian()

最后,我们每一张图片切成了15份
原图:
在这里插入图片描述
切完后的图:
在这里插入图片描述
这里展示一张推理后的效果图:

在这里插入图片描述
这里是根据步长和目标框的值大小来进行切割的,算出来15份,如果你们需要不同的大小,改上面的数值就好

版权声明:本文为CSDN博主「lizexu369」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_51038781/article/details/121939335

lizexu369

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

YOLOX笔记

目录 1. 样本匹配 正负样本划分过程 2. yoloxwarmcos 学习率 3. 无法开启多gpu训练, 或者多gpu训练卡住? 1. 样本匹配 正负样本划分过程 说明: gt_centerbbox是在gt_bbox中心点向四周