基于YOLOv5开发构建地质矿物检测识别分析系统

地质矿物相关的数据接触的比较少,也没有什么经验,今天正好有时间,就想着基于人工生成的数据集来开发构建目标检测系统,首先看下效果图:

 数据集是人工合成的,所以看起来比较突兀,如下:

 核心方法就是PIL的paste,组合使用的好的话,可以做出来各种各样的数据集。

YOLO格式数据标注文件如下:

 VOC格式数据标注文件如下:

 数据集随机划分代码如下:

pic_ids_list = [
    one.split(".")[0].strip() for one in os.listdir(dataDir + "labels/")
]
print("pic_ids_list_length: ", len(pic_ids_list))
train_num = int(train_ratio * len(pic_ids_list))
train_list = random.sample(pic_ids_list, train_num)
test_list = [one for one in pic_ids_list if one not in train_list]
print("train_list_length: ", len(train_list))
print("test_list_length: ", len(test_list))

# 创建存储目录-测试集
testImgDir = saveDir + "images/test/"
testTxtDir = saveDir + "labels/test/"
if not os.path.exists(testImgDir):
    os.makedirs(testImgDir)
if not os.path.exists(testTxtDir):
    os.makedirs(testTxtDir)
for one_id in test_list:
    if id_flag:
        new_id = str(uuid.uuid4())
    else:
        new_id = one_id
    shutil.copy(dataDir + "images/" + one_id + ".jpg", testImgDir + new_id + ".jpg")
    shutil.copy(dataDir + "labels/" + one_id + ".txt", testTxtDir + new_id + ".txt")
print(
    "================================Test Dataset Build Success================================"
)
"""
关注微信公众号
pythonAI之路
获取第一手学习更新进度
"""
# 创建存储目录-训练集
trainImgDir = saveDir + "images/train/"
trainTxtDir = saveDir + "labels/train/"
if not os.path.exists(trainImgDir):
    os.makedirs(trainImgDir)
if not os.path.exists(trainTxtDir):
    os.makedirs(trainTxtDir)
for one_id in pic_ids_list:
    if id_flag:
        new_id = str(uuid.uuid4())
    else:
        new_id = one_id
    shutil.move(
        dataDir + "images/" + one_id + ".jpg", trainImgDir + new_id + ".jpg"
    )
    shutil.move(
        dataDir + "labels/" + one_id + ".txt", trainTxtDir + new_id + ".txt"
    )
print(
    "================================Train Dataset Build Success================================"
)

默认参数训练100次,结果如下:

 【F1】

 数据可视化

 【PR曲线】

训练可视化:

 batch实例:

 可视化推理实例如下:

猜你喜欢

转载自blog.csdn.net/Together_CZ/article/details/130583962