darknet 框架的Yolo模型大概已经没什么公司使用了,对于老项目的维护可能新手需要了解下,然而 darknet架构并不十分友好,新手入手门槛比较高,特别是做分类任务时,简直了!!! 博主也是走了不少弯路,再次整理记录下,便于需要的小伙伴查看,同时也供自己日后学习
检测效果
1、darknet 分类模型训练命令
注意!!!
训练的时候需要注意一点,数据的路径中,类别名只能在绝对路径中出现一次,不可以出现多次,否则报错!!!
# 挂起后台训练命令
nohup ./darknet classifier train ../weather/weather.data ../weather/weather.cfg -gpus 0,1 -dont_show >../weather/train.log 2>&1 &
# 前台训练命令
nohup ./darknet classifier train ../weather/weather.data ../weather/weather.cfg -gpus 0,1 -dont_show >../weather/train.log 2>&1 &
2、darknet 分类模型单张图片检测命令
注意!!!
图片路径不正确的情况下,依旧会检测出结果!!!
# 单张图片预测命令
./darknet classifier predict /media/viatorsun/weather/weather.data /media/viatorsun/DataYZ/weather/weather.cfg /media/viatorsun/DataYZ/weather/weather.weights /media/viatorsun/weather/weather/7a964.jpg
检测结果
3、darknet 批量测试图片
通过darknet的 ./darknet classifier predict
命令只能对单张图片的进行测试,并且检测结果
# !/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time : 2023.08
# @Author : 绿色羽毛
# @Email : lvseyumao@foxmail.com
# @Blog : https://blog.csdn.net/ViatorSun
# @Note : 将代码保存为 predict.py 放置到 /darknetAB3.0/predict.py
import os
data_path = '/media/viatorsun/DataSet/test' # 待检测图像路径
save_dir = "/media/viatorsun/DataSet/test_out" # 检测结果保存路径
if not os.path.exists(save_dir):
os.makedirs(save_dir)
score = os.path.basename(data_path)
for img in os.listdir(data_path):
img_path = os.path.join(data_path, img)
cmd = './darknet classifier predict ./myTest/0_AI_model/weather/weather.data ' \
'./myTest/0_AI_model/weather/weather_test.cfg ' \
'./myTest/0_AI_model/weather/weather_100000.weights ' + img_path
state = "".join(os.popen(cmd).readlines())
lst = state.replace("\n\n", "\n").split("\n")
if float(lst[-3].split(" ")[-1]) >= float(lst[-2].split(" ")[-1]) :
label = lst[-3].split(":")[0] + lst[-3].split(" ")[-1][:4]
else:
lst[-2].split(":")[0]
if not label == score:
save_path = os.path.join(save_dir, img.split(".")[0] + "_" + label + "." + img.split(".")[-1]) # 将预测标签和对应置信度保存到文件名中
os.system("cp %s %s"%(img_path, save_path))
# print(state)