问题1:git
ImportError: Failed to initialize: Bad git executable.
根据File “F:\pycharm_python\workspace\pythonProject\yolo\yolov5-train-traffic-cone\utils\general.py”, line 360, in check_git_info这条信息,在相关文件的import git上面一行加上os.environ[“GIT_PYTHON_REFRESH”] = “quiet”`,修改后如下:
os.environ["GIT_PYTHON_REFRESH"] = "quiet"
import git
问题2:train: No labels found in ***/train.cache
找不到label对应的文件夹,观察错误信息,发现是从images文件转换到labels文件夹错误,文件夹命名错误
可以先去看一下 项目下utils/dataloaders.py 这个文件,第428行的代码,这个函数是将图片的路径转化为label的路径,其中sa, sb = f’{os.sep}images{os.sep}‘, f’{os.sep}labels{os.sep}',这一句中的images是你存放图片的文件名,需要与其相同。把图片存放文件夹的名字改为images后,成功运行。
def img2label_paths(img_paths):
# Define label paths as a function of image paths
sa, sb = f'{os.sep}images{os.sep}', f'{os.sep}labels{os.sep}' # /images/, /labels/ substrings
return [sb.join(x.rsplit(sa, 1)).rsplit('.', 1)[0] + '.txt' for x in img_paths]
简单使用:
-
准备好数据集,如果是yolo格式(图片和txt文件),分为train、val、test数据集;如果是voc格式,编写程序将其转化为yolo格式后,分为train、val、test数据集;如果只有图片数据集(即未打标签),使用labelimg进行标注,之后进行上述操作。
-
在github上下载yolo项目到本地,将数据集文件夹拷贝到项目中,下载yolo对应的预训练权重到项目中。
-
修改在data文件夹下的配置文件,新建一个***.yaml,文件名随意,我习惯命名为数据集名称。
-
修改在model文件夹下的配置文件,选择你下载的预训练权重对应的配置文件,修改
nc: 2 # number of classes
,其中nc为数据集中类的数量 -
训练模型,修改train.py中的参数,简单使用的话主要修改前三个参数,分别是预训练权重的路径、model文件夹下yaml配置文件的路径、data文件夹下新建的yaml配置文件的路径。如果训练时内存不够,可以适当减少epoch和batch_size
-
训练结束后,获得的数据会显示在runs/train/exp文件夹下,在其下的weights文件夹中会包含best.pt和last.pt,分别时训练中表现最好的权重和最后一次训练的权重。
-
使用训练好的权重去做推断,修改detect.py中的参数,主要修改前两个参数,第一个是刚才训练好的权重的路径,第二个是需要做推断的数据集的路径(如果填写文件名,就会推断对应文件;如果是文件夹,将会推断文件夹中所有图片;如果是0,表示打开摄像头实时检测)。推断完成之后的结果会保存在runs/detect/exp文件夹中。