当前位置:网站首页>pytorch yolov5 训练自定义数据
pytorch yolov5 训练自定义数据
2022-07-05 17:51:00 【mtl1994】
pytorch yolov5 训练自定义数据
文章目录
前言
环境
python: 3.9.7
torch: 1.10.2
labelimg: 1.8.6
#yolov5 https://github.com/ultralytics/yolov5
#pytorch https://pytorch.org/
#labelimg https://github.com/tzutalin/labelImg
paddleocr 有三种模型 det 检测 cls 方向 rec 识别
一、创建环境
安装miniconda
https://blog.csdn.net/mtl1994/article/details/114968140创建环境
#linux 需要先 source conda create -n pytorch_yolov5 python=3.9.7 --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/安装完以后进入环境
conda activate pytorch_yolov5
二、安装环境
pytorch
#选择对应的cuda/cpu版本 pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113yolov5
#下载源代码 git clone https://github.com/ultralytics/yolov5 # clone cd yolov5 #安装依赖 python -m pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/测试一下
import torch # Model model = torch.hub.load('ultralytics/yolov5', 'yolov5s') # or yolov5n - yolov5x6, custom # Images img = 'https://ultralytics.com/images/zidane.jpg' # or file, Path, PIL, OpenCV, numpy, list # Inference results = model(img) # Results results.print() # or .show(), .save(), .crop(), .pandas(), etc.

选择模型
https://github.com/ultralytics/yolov5/releases
模型参数

我使用的模型是
yolov5x
三、标注图片
我使用的labelimg
#安装
pip install labelimg
#打开
labelimg
标注完以后会有两个目录、一个存图片、一个存txt
四、训练
1.切分数据
def make_datasets(txt_path, img_path, out="./out", split_rate=0.05):
txt_dir = Path(txt_path)
img_dir = Path(img_path)
out_dir = Path(out)
dataset = []
train_label = out_dir / "labels/train2007/"
train_image = out_dir / "images/train2007/"
test_label = out_dir / "labels/test2007/"
test_image = out_dir / "images/test2007/"
train_label.mkdir(parents=True, exist_ok=True)
train_image.mkdir(parents=True, exist_ok=True)
test_label.mkdir(parents=True, exist_ok=True)
test_image.mkdir(parents=True, exist_ok=True)
"""
过滤空txt
"""
for item in txt_dir.rglob("*.txt"):
if item.read_text() != "":
dataset.append(item)
"""
切分训练集,验证集
"""
tv = random.sample(dataset, int(len(dataset) * split_rate))
"""
组装数据
"""
print(len(dataset))
for item in dataset:
for jpg in img_dir.rglob(item.stem + ".jpg"):
if item in tv:
print(jpg, test_image / jpg.name)
# jpg.replace(test_image / jpg.name)
shutil.copy(str(jpg), test_image / jpg.name)
shutil.copy(str(item), test_label / item.name)
# item.replace(test_label / item.name)
else:
print(jpg, train_image / jpg.name)
# jpg.replace(train_image / jpg.name)
# item.replace(train_label / item.name)
shutil.copy(str(jpg), train_image / jpg.name)
shutil.copy(str(item), train_label / item.name)
执行完以后,目录结构
2.修改训练的模型 yml
3.开始训练
nohup python train.py --img 640 --batch 32 --epochs 600 --data voc.yaml --weights yolov5s.pt --device 0,1,2,3 &
训练结果都保存在runs/train/递增的运行目录中,例如runs/train/exp2,runs/train/exp3
五、已经训练的模型,有了新数据需要继续训练
1.使用迁移学习
训练的时候指定 weights 为 上一次训练的输出
六、常用命令
1.训练
nohup python train.py --img 640 --batch 32 --epochs 600 --data wp_voc.yaml --weights runs/train/exp27/weights/best.pt --device 0,1,2,3 &
2.识别
python detect.py --weights runs/train/exp6/weights/best.pt --source ../datasets/infer/2022-2-24/
3.导出onnx
python export.py --weights yolov5s.pt --img 640 --batch 1 # export at 640x640 with batch size 1
总结
边栏推荐
- nano的CAN通信
- Easynmon Usage Summary
- 每日一练:关于日期的一系列
- Redis基础
- How to improve the thermal management in PCB design with the effective placement of thermal through holes?
- Data access - entityframework integration
- leetcode每日一练:旋转数组
- 职场进阶指南:大厂人必看书籍推荐
- Privacy computing helps secure data circulation and sharing
- Binder开辟线程数过多导致主线程ANR异常
猜你喜欢

Tencent music launched its new product "quyimai", which provides music commercial copyright authorization

Star Ring Technology launched transwarp Navier, a data element circulation platform, to help enterprises achieve secure data circulation and collaboration under privacy protection

Redis Foundation

Huaxia Fund: sharing of practical achievements of digital transformation in the fund industry

GFS distributed file system

Ten capabilities that cyber threat analysts should have

mybash

Binder开辟线程数过多导致主线程ANR异常

JVM第三话 -- JVM性能调优实战和高频面试题记录

星环科技数据安全管理平台 Defensor重磅发布
随机推荐
Disabling and enabling inspections pycharm
访问数据库使用redis作为mysql的缓存(redis和mysql结合)
Teamcenter 消息注册前操作或后操作
Daily exercise: a series of dates
基于YOLOv3的口罩佩戴检测
rsync
Anaconda中配置PyTorch环境——win10系统(小白包会)
ITK Example
How to modify MySQL fields as self growing fields
隐私计算助力数据的安全流通与共享
检查命名空间和类
matlab内建函数怎么不同颜色,matlab分段函数不同颜色绘图
Cmake tutorial Step2 (add Library)
nacos -分布式事务-Seata** linux安装jdk ,mysql5.7启动nacos配置ideal 调用接口配合 (保姆级细节教程)
一文读懂简单查询代价估算
为什么阳历中平年二月是28天
热通孔的有效放置如何改善PCB设计中的热管理?
Cmake tutorial step1 (basic starting point)
吴恩达团队2022机器学习课程,来啦
Cmake tutorial step5 (add system self-test)