已阅: 76
基于NAIE平台的YOLOv5识别超超超可爱的逢坂大河
数据集改进
- 不同于上次的画师数据集,这次我是从第一集视频里面截了152张图的数据集。
- 增加了侧脸/背影/上方视角/侧身视角/下方视角/背景等类型图片。
- 精确度提高了不少。
- 数据集下载:
- 链接:https://pan.baidu.com/s/17zM5s6qL1FGnPhcsMyIx1A
- 提取码:cute
改进方向
- 数据集数量可以再增加点,还是有些误报。
- 应该给预测加个阈值,有的置信度低的不应该被标记。
NAIE安装yolov5
- 打开模型训练,将从yolov5源码上传至NAIE。
- 上传权重文件至yolov5文件夹(可选,没有的话,在使用时会自动下载)
- 在Yolov5文件夹打开命令行,输入pip install -r requirements.txt安装。
- 出错:
- 无skbuild模块:更新pip版本,pip install --upgrade pip
- PyYAML无法安装:pip install --ignore-installed PyYAML
- 再输入pip install -r requirements.txt可正常安装。
- 代码自动安装requirements.txt:
- 创建install_requirements.py:
import os
os.system('pip install --upgrade pip')
os.system('pip install --ignore-installed PyYAML')
os.system('pip install -r requirements.txt')
- 打开命令行,输入
python install_requirements.py
数据集导入
- 注:NAIE上的yolov5不能像本地一样调用数据集中文件,但官方提供了moxing库,方便我们将其从数据集中copy至代码目录中。
- 将制作好的labels与images文件夹压缩在一起,成为Toradora.zip
- 将Toradora.zip上传至数据集。
- 此时,Toradora.zip存放与Toradora数据库下的Episode1实例中,且仅此一个文件。
- 打开模型训练,创建download_dataset.py:
from naie.datasets import get_data_reference
import moxing as mox
dataset_path = get_data_reference(dataset="Toradora", dataset_entity="Episode1").get_files_paths()[0]
mox.file.copy(dataset_path, './Toradora/toradora.zip')
- 命令行运行python download_dataset.py
- 如果提示‘NoneType’,把文件移动到其他文件夹下再试。
- 和环境创建好时就存在的那些文件放在一起一般可以正常使用。
- 右键Toradora.zip,Unzip here解压它。
- 创建Toradora.yaml文件:
- train: ../Toradora/images/
- val: ../Toradora/images/
- nc: 1
- names: [ 'cute' ]
- 此时文件目录为:
- 根目录
- yolov5-master
- train.py
- yolov5s.pt
- requirements.txt
- Toradora
- images
- labels
- Toradora.yaml
- requirements.txt
- download_dataset.py
- install_requirements.py
训练代码
- 在根目录创建train.py文件:
import os
os.chdir('./yolov5-master')
os.system('python train.py --data ../Toradora/Toradora.yaml --cfg /models/yolov5s.yaml')
- 启动训练任务
- 此时文件目录为:
- 根目录
- yolov5-master
- train.py
- yolov5s.pt
- requirements.txt
- Toradora
- images
- labels
- Toradora.yaml
Toradora.cache如果出现xx.jpg不存在,请删除cache文件
- train.py
- requirements.txt
- download_dataset.py
- install_requirements.py
- 注:
- 训练时如果报错
no such a file: ../Toradora/images/AisakaTaiga (1).jpg
预测代码
- 同上,添加detect.py代码:
import os
os.chdir('./yolov5-master')
os.system('python detect.py --source ../Toradora/toradora-01.mp4 --weight ./runs/train/exp5/weights/best.pt')
保存
- 同上,添加main.py代码。
- 使用NAIE的模型训练功能进行训练,将结果以不包含代码的形式归档,并下载。
- 在多次训练、测试、预测后,代码会产生大量的日志文件及模型文件,
- 单纯使用模型打包全部代码,会产生非常大的数据量,
- 因此仅将需要的内容压缩,并保存至输出文件夹,
- 再进行归档,并在模型管理中下载,能减少很多的数据量。
import os
from naie.context import Context
import moxing as mox
def save_output(path, save_name):
# path:'./yolov5-master/' + '预测/测试/训练结束时的输出目录'
# 例:'./yolov5-master/runs/train/exp5'
# save_name: '压缩包文件名'
# 例:'train'
# 将文件夹压缩成zip文件,借助NAIE的模型训练功能,输出。
# 在模型训练结束后,进行归档,包含代码选否,生成模型包选是。
# 将在模型管理中生成文件,待其处理成功后,下载下来。
save_name = save_name + '.zip'
file_path = os.path.join(path, save_name)
print(file_path)
os_command = 'zip -rq {0} {1}'.format(file_path, path)
print(os_command)
os.system(os_command)
output_path = os.path.join(Context.get_output_path(), save_name)
print(output_path)
mox.file.copy(file_path, output_path)
def main():
print('\n\nStart output...')
# train file save
train_path = './yolov5-master/runs/train/exp5'
train_name = 'train'
save_output(train_path, train_name)
# detect file save
detect_path = './yolov5-master/runs/detect/exp4'
detect_name = 'detect'
save_output(detect_path, detect_name)
print('Output success.\n\n')
if __name__ == '__main__':
main()
保持训练不中断
结果
共有 0 条评论