当前位置:网站首页>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/cu113
yolov5
#下载源代码 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
总结
边栏推荐
- 较文心损失一点点性能提升很多
- mybash
- Zabbix
- matlab内建函数怎么不同颜色,matlab分段函数不同颜色绘图
- Binder开辟线程数过多导致主线程ANR异常
- ISPRS2022/雲檢測:Cloud detection with boundary nets基於邊界網的雲檢測
- How to improve the thermal management in PCB design with the effective placement of thermal through holes?
- mybash
- 2022新版PMP考试有哪些变化?
- Compared with the loss of Wenxin, the performance is improved a lot
猜你喜欢
nano的CAN通信
Six bad safety habits in the development of enterprise digitalization, each of which is very dangerous!
图像分类,看我就够啦!
隐私计算助力数据的安全流通与共享
星环科技重磅推出数据要素流通平台Transwarp Navier,助力企业实现隐私保护下的数据安全流通与协作
RSE2020/云检测:基于弱监督深度学习的高分辨率遥感图像精确云检测
JVM third talk -- JVM performance tuning practice and high-frequency interview question record
Matlab reference
使用Jmeter虚拟化table失败
Ten capabilities that cyber threat analysts should have
随机推荐
Thesis reading_ Chinese NLP_ LTP
Introduction to VC programming on "suggestions collection"
Leetcode daily practice: rotating arrays
Delete some elements in the array
Cmake tutorial Step3 (requirements for adding libraries)
从类生成XML架构
Sophon base 3.1 launched mlops function to provide wings for the operation of enterprise AI capabilities
Nanjing University: Discussion on the training program of digital talents in the new era
leetcode每日一题:字符串中的第一个唯一字符
从XML架构生成类
LeetCode每日一题:合并两个有序数组
使用QT遍历Json文档及搜索子对象
含重复元素取不重复子集[如何取子集?如何去重?]
基于YOLOv3的口罩佩戴检测
使用Jmeter虚拟化table失败
What are the requirements for PMP certification? How much is it?
Leetcode daily question: the first unique character in the string
Action avant ou après l'enregistrement du message teamcenter
星环科技数据安全管理平台 Defensor重磅发布
[TestLink] testlink1.9.18 solutions to common problems