我正在使用YOLO V3,我的数据集是RGB图像,但是我想在同一数据集的灰度版本上训练网络。所以我的问题是,YOLO v3中是否有任何方法可以将RGB数据集自动转换为灰度以进行训练,还是必须先将RGB数据集转换为灰度然后再馈入网络?还是可以使用OpenCV或任何其他库进行任何预处理或转换?
答案 0 :(得分:0)
如果您已经有了灰度数据集,我认为在cfg文件中设置channels=1
是可以的。
根据此问题:https://github.com/AlexeyAB/darknet/issues/3201,如果要对灰度图像进行推断(检测),则必须使用灰度数据集训练模型。因此,使用opencv进行预处理可能是最简单的:cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
答案 1 :(得分:0)
您必须首先编写一个具有以下内容的程序:( 它可以帮助您完成从RBG和BGR颜色空间到灰度空间的转换)
import cv2
import os
path1 = 'Path to your training data'
path2 = 'Path to output grayscale map'
file_list = os.listdir(path1)#Traverse all the files in the folder into a list
for file in file_list:
if file.endswith('.jpg'):#Iterate through all files with the name'file_list' with the extension name'jpg'
img = cv2.imread(path1+file)#Read the image just traversed and save it as a variable named'img'
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#Use the cvtColor('original image', convert from RBG and BGR color space to gray space)method of the cv2 library to convert the original image named'img' into a grayscale image and save it as a variable named'gray'
cv2.imwrite(path2+file,gray)#Use the imwrite ('stored target path', variable named'gray') method of the cv2 library to write to the target path
print(file+'Conversion completed')
这样您就可以得到想要的结果