AI-Studio预设模型训练实操--数据集制作

一、注册,并取得算力

不多赘述

二、选择模型

这里选择了目标检测模型

RT-DETR_HGNetV2_h

点击运行一下创造项目

建议选择消耗最大的卡,每个月会有时间限制

这里已经打开一个了,所以选不了

三、数据集

如果只是熟悉操作的话可以选择预设已有的数据集

点击启动项目上方的修改按钮

在这里添加数据集

3.1预设数据集只要点击添加就可以了,但创建数据集要考虑的事就很多了

这里使用labelme进行数据集创建

 先下载pip

windows上pip安装及使用详解-CSDN博客

然后通过指令下载labelme:

pip install labelme

速度慢的话可以在后面跟上国内的pip源,如:

pip install labelme -i https://pypi.tuna.tsinghua.edu.cn/simple

然后输入labelme打开软件,要是打不开就试试管理员终端

处理图片信息

大多数模型训练不需要过于清晰的图片,所以这里要降低图片的像素,具体降低多少根据实际情况而定

import cv2
import os
#批量重新设置图片尺寸大小
path = 'A:\\opencv\\'
for filename in os.listdir(path):
    file = path + filename
    img = cv2.imread(file)
    img2 = cv2.resize(img, (0, 0), None, 0.5, 0.5)# 0.5,0.5为长宽降低的比例
    cv2.imwrite(file, img2)

然后就是改名了,如果名字不统一后面会比较麻烦

import glob
import os
#图片批量重命名

directory = 'A:\opencv'
pattern = '*.jpg'

i = 0
for filename in os.listdir('A:\\opencv\\images'):
    newname='cat.'+str(i)+pattern
    i+=1
    os.rename('A:\\opencv\\images\\'+filename,'A:\\opencv\\images\\'+newname)

具体要怎么改根据自己的情况而定

打开目录,选择拍好的图片文件夹

点击左上角的文件按钮

1.自动保存打开(打的快)
2.路径选到自己的json文件夹(最好就在图片旁边建一个文件夹,后面好找到)
3.保存图像关闭(大多数不需要,会白白增大json文件的占用储存)

点击左上角的编辑按钮选择矩形

有的模型只接收矩形框进行训练,不然后面验证数据集的时候就要伏笔了,会通不过。

框选

然后一个个框就好了

这里采用了labelme数据集的标准文件夹格式

标注的文件在jsons里面

然后是很重要的一点,要重写所有json文件的图片路径。

这似乎是因为系统的问题,示例文件中json的图片路径应该是Linux系统下标注的,与windows系统中标注的图片路径格式不同

直接标注的json文件中的图片路径:

示例中需要的文件路径格式:

这会在后面验证数据的时候报不知道的错误:

重写json文件

import json
import os
#重写josn路径
# 读取JSON文件
path = 'D:\\opencv\\train\cat_all\\jsons\\'
for i in range(10650):
    newPath = "cat." + str(i) + ".jpg"
    Path = path + "cat." + str(i) + ".json"
    if os.path.exists(Path):
        with open(Path, 'r') as f:
            data = json.load(f)
        # 修改图像路径
        data['imagePath'] = newPath
        # 保存修改后的JSON文件
        with open(Path, 'w') as f:
            json.dump(data, f, indent=4)

其中for i in range()的参数自己设置成图片的数量就可以

写train_anno_list.txt文件

#重写说明性.txt文件
import os
import json

filelist = open(r'D:\opencv\train\cat_all\train_anno_list.txt','r+',encoding = 'utf-8')
line = filelist.readlines()
path = 'D:\\opencv\\train\cat_all\\jsons\\'
for i in range(20000):
    # append = "cat." + str(i) + ".jpg"
    Path = path + "cat." + str(i) + ".json"
    if os.path.exists(Path):
        filelist.write("jsons/cat." + str(i) + ".json\n")
    else:
        print(i)

然后随便选取剪切一部分到验证集txt文件(val_anno_list.txt)里就好,要是验证集为空的话也会在初始验证数据集时报错。虽然平台自带分割数据集的功能。

unlabel文件空了似乎没有什么事,但示例数据集中此文件的格式似乎不太一样:

没有前面的json/路径

最后将整个文件夹压缩成zip,回到老地方点击创建数据集

然后进入环境,选择开发者模式,解压数据集

unzip -d ../ cat_all.zip 

路径啥的可以自己定。

然后图形化操作平台很全面

一步步来就可以了

转换数据集格式等等

四、快进到模型部署

        最大的坑来了:python版本和系统

ubuntu的python3.10和3.9的一直报错,windows也一直报错

比如opencv的python包,报一个错去搜,说包的版本高了,要降。

等降了,又报一个错,又说版本低了,要升。

你两打一架吧。

然后各种版本不对,缺少函数,参数缺失

最后直接转Ubuntu的python3.8万事大吉

但他的示例模型文件有点不好,需要在终端输入参数才能正常调用

以下代码可以直接调用摄像头

# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import fastdeploy as fd
import cv2
import os
import numpy as np
import time
from tqdm import tqdm


def build_option():

    option = fd.RuntimeOption()

    option.use_paddle_infer_backend()
    option.paddle_infer_option.enable_log_info = False

    return option


cv2.namedWindow("test")  # 创建一个已windowname为名字的窗口

cap = cv2.VideoCapture(0)  # camera_id为设备摄像头的id,默认是0,如果有usb摄像头可能会变为1

option = build_option()

# 配置runtime,加载模型
model = fd.vision.detection.PaddleDetectionModel(
                "inference.pdmodel", "inference.pdiparams", "inference.yml", runtime_option=option)
dump_result = dict()


while cap.isOpened():
    ok, frame = cap.read()  # 读取一帧数据,ok表示摄像头读取状态,frame表示摄像头读取的图像矩阵mat类型
    if not ok:
        break
    result = model.predict(frame)

    # 预测结果可视化
    vis_im = fd.vision.vis_detection(frame, result, score_threshold=0.5)

    cv2.imshow("test", vis_im)  # 显示图像

    c = cv2.waitKey(10)
    if c & 0xFF == ord('q'):  # 退出条件
        break

cap.release()
# 释放摄像头并销毁所有窗口
cv2.destroyAllWindows()
# 
# cv2.imwrite("visualized_result.jpg", vis_im)
# print("Visualized result save in ./visualized_result.jpg")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值