代码链接:gbyy422990/salience_object_detection
感谢作者:gbyy42299/CSDN
训练配置过程
下载代码和预训练模型
(代码百度云备份, 密码:5qv2)
(VGG16.npy百度云备份, 密码:cy99)
将下载的vgg16.npy文件放到代码根目录
样本集的制作
新建文件夹
数据集存储在根目录中dataset文件夹下。首先删除dataset文件夹中的所有文件夹中所有文件及文件夹。重新新建四个文件夹,plane、planelabel、planetest、planetestlabel,这四个文件夹分别用来放置训练用图片、训练用图片的mask、验证用图片、验证用图片的mask。
样本的制作
样本说明
格式如下图所示,左图为plane、planetest文件夹中图片,右图为planelabel和planetestlabel中mask。
resize
输入的样本图片及mask的大小都为宽400高300的三通道图片(24位)。因此需要将自己的图片放进四个文件夹。
如果需要将图片转换为400宽,300高,可以使用以下代码
import cv2
import glob
import os
#处理三通道图片
def threeChannel(inDir):
for jpgfile in glob.glob(inDir):
img = cv2.imread(jpgfile)
resized = cv2.resize(img, (400, 300), cv2.INTER_CUBIC)
cv2.imwrite(jpgfile, resized, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])
print(jpgfile)
print('----------------------------------------------------')
# 处理单通道图片
def oneChannel(inDir):
for jpgfile in glob.glob(inDir):
img = cv2.imread(jpgfile, cv2.IMREAD_GRAYSCALE)
resized = cv2.resize(img, (400, 300), cv2.INTER_CUBIC)
cv2.imwrite(jpgfile, resized, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])
print(jpgfile)
print('----------------------------------------------------')
#resize操作
if __name__ == '__main__':
inDir = "plane/*.png"
inDir2 = "planelabel/*.png"
inDir3 = "planetest/*.png"
inDir4 = "planetestlabel/*.png"
threeChannel(inDir)
threeChannel(inDir3)
oneChannel(inDir2)
oneChannel(inDir4)
如果需要将自己单通道mask转换为三通道,可使用如下代码(根据自己情况进行修改)
import cv2
import glob
import os
def main(inDir):
for jpgfile in glob.glob(inDir):
img = cv2.imread(jpgfile, 0)
merged = cv2.merge([img, img, img])
cv2.imwrite(jpgfile, merged, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])
print(jpgfile)
print('----------------------------------------------------')
if __name__ == '__main__':
inDir = "planetestlabel/*.png"
main(inDir)
inDir2 = "planelabel/*.png"
main(inDir2)
生成csv文件
修改根目录下的csc_generator.py文件并运行,在根目录下生成两个csv文件,以下为修改后代码
#coding:utf-8
import os
import csv
def create_csv(dirname):
path = './dataset/'+ dirname +'/'
name = os.listdir(path)
#name.sort(key=lambda x: int(x.split('.')[0]))
#print(name)
with open (dirname+'.csv','w', encoding="UTF8", newline='') as csvfile:
write