分类 默认分类 下的文章

yolov5

实操的时候老是提示找不到标签或者图片什么的,结果需要把图片文以及标签txt文件放在同一个目录中,不能分开放,因为yaml配置文件中我还没有找到可以分开配置路径的方法,暂时只能放到一个目录中,我的配置文件:

train: ../data/train_img
val: ../data/val_img

nc: 1  # 类别数量,这里是气球
names: ['balloon']  # 类别名称

训练数据集下载
先保存到自己的数据集,点击下载数据ZIP文件
https://openbayes.com/console/public/datasets/sFP84BCSkDW/2/overview

处理图片和标签数据集中的数据,转成yolo使用的格式,保存到txt文件中
data_init.py:

import json
import os
from PIL import Image

def convert_json_to_yolo(json_folder, img_folder, output_folder):
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    for json_file in os.listdir(json_folder):
        if json_file.endswith('.json'):
            with open(os.path.join(json_folder, json_file)) as f:
                data = json.load(f)

            # 假设图片名称与JSON文件名称相同,但扩展名不同
            image_name = json_file.replace('.json', '.jpg')  # 或其他扩展名
            img_path = os.path.join(img_folder, image_name)

            # 自动获取图像尺寸
            with Image.open(img_path) as img:
                img_width, img_height = img.size

            yolo_lines = []
            for bbox in data['bboxes']:
                x_coords = bbox['x_arr']
                y_coords = bbox['y_arr']
                
                x_min = min(x_coords)
                x_max = max(x_coords)
                y_min = min(y_coords)
                y_max = max(y_coords)

                # 计算YOLO格式的中心坐标和宽高
                x_center = (x_min + x_max) / 2
                y_center = (y_min + y_max) / 2
                width = x_max - x_min
                height = y_max - y_min

                # 转换为相对坐标
                x_center /= img_width
                y_center /= img_height
                width /= img_width
                height /= img_height

                yolo_lines.append(f"0 {x_center} {y_center} {width} {height}")  # 类别ID假设为0

            # 保存为YOLO格式文件
            with open(os.path.join(output_folder, image_name.replace('.jpg', '.txt')), 'w') as out_file:
                out_file.write('\n'.join(yolo_lines))

# 调用函数
convert_json_to_yolo('train_json', 'train_img', 'train_img')
convert_json_to_yolo('val_json', 'val_img', 'val_img')

训练
可能是电脑配置低了,我在执行1张图片训练的时候,顺利完成,但是把所有图片丢到目录训练时,结果看到:Killed 就结束了,后续再研究研究

python train.py --img 640 --batch 16 --epochs 50 --data data/balloon.yaml --weights yolov5s.pt --cache

使用训练出来的模型测试其它图片
这步还没有执行,不知道结果会是怎样,期待尝试

python detect.py --weights runs/train/exp/weights/best.pt --img 640 --conf 0.25 --source path/to/test/images

以下是AI提供的资料,仅作参考:
1. 环境搭建
安装Python和相关库
确保你安装了Python(推荐使用3.7及以上版本),然后安装必要的库。可以使用Anaconda管理你的环境:

conda create -n balloon-env python=3.8
conda activate balloon-env
pip install torch torchvision torchaudio  # 如果使用PyTorch
pip install opencv-python numpy matplotlib  # OpenCV和其他工具

安装YOLOv5
你可以使用YOLOv5,它的文档非常齐全,适合初学者。可以从GitHub克隆YOLOv5仓库:

git clone https://github.com/ultralytics/yolov5.git
cd yolov5
pip install -r requirements.txt

2. 准备数据集
确保你的数据集按照YOLO格式组织。文件结构大致如下:

/data
    /images
        train  # 训练集图片
        val    # 验证集图片
    /labels
        train  # 训练集标签
        val    # 验证集标签

标签文件的格式为每行一个物体,格式为:<class_id> <x_center> <y_center> ,所有数值为相对坐标(0到1之间)。

3. 配置训练参数
在yolov5/data目录下,创建一个新的配置文件(例如balloon.yaml)来描述你的数据集,内容如下:

train: ../data/images/train
val: ../data/images/val

nc: 1  # 类别数量,这里是气球
names: ['balloon']  # 类别名称

4. 训练模型
在YOLOv5目录下运行训练命令:

python train.py --img 640 --batch 16 --epochs 50 --data data/balloon.yaml --weights yolov5s.pt --cache

--img:设置输入图像的大小。
--batch:每次训练的批量大小。
--epochs:训练轮数。
--data:数据集配置文件。
--weights:可以选择使用YOLOv5的预训练模型。

5. 监控训练过程
训练过程中,你可以在控制台查看损失值和准确率。训练完成后,模型会保存在runs/train/exp/weights目录中,通常会生成best.pt和last.pt。

  1. 测试模型
    在训练完成后,你可以使用以下命令对新的图像进行测试:
python detect.py --weights runs/train/exp/weights/best.pt --img 640 --conf 0.25 --source path/to/test/images

--source:可以是单个图像、文件夹或视频。

7. 结果可视化
检测结果会保存在runs/detect/exp目录中,你可以查看输出的图片,并验证模型的效果。

8. 调整与优化
如果结果不理想,可以考虑以下方法进行优化:

增加数据集大小或多样性。
调整超参数(如学习率)。
进行数据增强。

本文仅作学习记录而转载:
原文链接:https://blog.csdn.net/u014628771/article/details/80066624

1. 查看Python环境

conda info --env可以看到所有python环境,前面有个‘*’的代表当前环境:

2.创建Python环境

conda create --name python35 python=3.5 代表创建一个python3.5的环境,我们把它命名为python35

现在我们再用conda info --env看看环境:

3.管理和使用python环境

使用conda activate python35 来激活刚才创建的环境:

尝试使用pip install numpy来给这个环境安装一个常用的包:

当然也可以用conda install numpy来安装,但是会同时安装很多相关的包,在此就不演示了。

在简单的熟悉了以后,就会发现用anaconda来进行python环境的控制真的是非常方便,其实anaconda环境是有物理路径的,如下,你会发现这和我们之前conda info --env的list是一样的:

之后我们删除python35 :

conda remove -n python35 --all

再看文件夹,果然已经被删除了:

报错情景: Windows系统+拖拽 解压文件到指定目录

解决问题过程
验证C盘(系统盘)空间容量 图1<解压.7z文件容量 (所以空间不足) 图2

注释:(7zip默认使用系统临时文件夹为自己的工作临时文件夹,出现这种情况因为系统临时文件夹剩余空间不足,也就是整个C盘可用空间不足)
Windows临时文件目录:C:\Windows\Temp

问题解决(结论)
因为系统存储空间不足导致解压文件出错

解决方案一(不推荐)
可以更改工作文件夹为 "当前文件夹"或者"指定位置"

注意:指定位置通常需要 给予软件管理员权限才能启动+当前磁盘有最高Everyone访问权限,否则会导致设置失败(软件不会提示), 并且问题接踵而至,甚至无法找出原因

权限设置示例
前提是 "结束7z的相关进程"或"退出软件"

解决方案二(推荐)
无需改变现有配置
7z软件选项保持不变,只需要在需要解压的文件,"鼠标右键" 选择"提取到当前目录"解压文件即可。这种未打开压缩文件直接解压的方式,不会去占用C盘空间

实现逻辑:系统变量导致

背景:客户端连接mysql8.x出现“ERROR 2026 (HY000): SSL connection error: unknown error number”

mysql -h 10.233.117.225 -P3306 -uroot -p

方案一(已过时):

mysql -h10.233.117.225 -P3306 -uroot -p --skip-ssl

方案二(推荐):

mysql -h10.233.117.225 -P3306 -uroot -p --ssl-mode=DISABLED

参数–ssl-mode取值

官方文档:https://dev.mysql.com/doc/refman/8.0/en/connection-options.html#option_general_ssl-mode

DISABLED 与参数skip-ssl一样,不使用SSL/TLS建立加密连接
PREFERRED 优先尝试使用SSL/TLS建立加密连接,如果无法建立则尝试建立非SSL/TLS连接
REQUIRED 只会尝试使用SSL/TLS建立加密连接
VERIFY_CA 与REQUIRED行为一样,与此同时会验证server端的证书是否有效
VERIFY_IDENTITY 与VERIFY_CA行为一样,与此同时验证server端证书的host是否与实际连接的hostname一致