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)
                


















