红外可见光融合的小目标检测 现在已经成为研究的主流,不仅克服光感不好的情况,充分利用红外的轮廓信息,以及充分利用可见光的纹理信息,实现全天候的检测已经成为趋势,模型轻量化,易部署。
1.数据预处理
数据集是天津大学拍摄制作。
首先需要数据处理,因为原本的数据集自带的有100*100的白边,对检测影响很大,特别是YOLO系列的检测模型
处理前后对比
2.YOLOv8训练
检测效果还不错
特别注意的是在数据集转换的时候,也就是转成YOLO的时候,可能会出现负坐标,或者是超过1的坐标值,这样就会导致模型训练不了,所以,需要进行针对那些数据集进行特殊的处理。
改进后参数少,模型轻量化,直接暴涨点:
数据集处理的方法:
去除白边
import numpy as np
import cv2
import os
from tqdm import tqdm
def create_file(output_dir_vi, output_dir_ir):
if not os.path.exists(output_dir_vi):
os.makedirs(output_dir_vi)
if not os.path.exists(output_dir_ir):
os.makedirs(output_dir_ir)
print(f'Created folder:({output_dir_vi}); ({output_dir_ir})')
def update(input_img_path, output_img_path):
image = cv2.imread(input_img_path)
cropped = image[100:612, 100:740] # 裁剪坐标为[y0:y1, x0:x1]
cv2.imwrite(output_img_path, cropped)
dataset_dir_vi = r'root'
output_dir_vi = r'root'
dataset_dir_ir = r'root'
output_dir_ir = r'root'
# 检查文件夹是否存在,如果不存在则创建
create_file(output_dir_vi, output_dir_ir)
# 获得需要转化的图片路径并生成目标路径
image_filenames_vi = [(os.path.join(dataset_dir_vi, x), os.path.join(output_dir_vi, x))
for x in os.listdir(dataset_dir_vi)]
image_filenames_ir = [(os.path.join(dataset_dir_ir, x), os.path.join(output_dir_ir, x))
for x in os.listdir(dataset_dir_ir)]
# 转化所有图片
print('Start transforming vision images...')
for path in tqdm(image_filenames_vi):
update(path[0], path[1])
print('Start transforming infrared images...')
for path in tqdm(image_filenames_ir):
update(path[0], path[1])
有兴趣的小伙伴,同方向的小伙伴可以一起交流学习
11638688