在国产芯片上实现YOLOv5/v8图像AI识别-【4.1】RK3588训练数据时进行图像增强更多内容见视频

本专栏主要是提供一种国产化图像识别的解决方案,专栏中实现了YOLOv5/v8在国产化芯片上的使用部署,并可以实现网页端实时查看。根据自己的具体需求可以直接产品化部署使用。

B站配套视频:https://www.bilibili.com/video/BV1or421T74f
在这里插入图片描述

图像增强的必要性

在我们日常进行训练的时候经常会遇到数据集不足的情况,比如对特定物品进行识别。我们很难收到满足训练数量的有效数据集,这时候我们就可以考虑采用图像增强的方式增加我们的数据量。

不废话直接上代码

from albumentations import *
import os
import cv2
from tqdm import tqdmclass enhancement:def __init__(self, picture_path, label_path, save_img_path, save_lable_path):image_files = []for file_name in os.listdir(picture_path):if file_name.endswith(('.jpg','.jepg','.png','.gif')):image_files.append(file_name)self.picture_name = sorted(image_files)label_files = []for file_name in os.listdir(label_path):if file_name.endswith(('.txt')):label_files.append(file_name)self.label_name = sorted(label_files)self.picture_path = [picture_path + i for i in self.picture_name]self.label_path = [label_path + i for i in self.label_name]self.save_img_path = save_img_pathself.save_lable_path = save_lable_pathdef iter(self):batch_size = 10for index_bin in tqdm(range(0, len(self.picture_path), batch_size), desc='批次进度'):# print(index_bin)picture_batch = self.picture_path[index_bin:index_bin + batch_size]label_batch = self.label_path[index_bin:index_bin + batch_size]yield picture_batch, label_batch, [index_bin, index_bin + batch_size]def get_transform(self):transform = Compose([# 图像均值平滑滤波。# Blur(blur_limit=7, always_apply=False, p=0.5),# VerticalFlip 水平翻转# VerticalFlip(always_apply=False, p=0.5),# HorizontalFlip 垂直翻转# HorizontalFlip(always_apply=False, p=1),# 中心裁剪# CenterCrop(200, 200, always_apply=False, p=1.0),# RandomFog(fog_coef_lower=0.3, fog_coef_upper=0.7, alpha_coef=0.08, always_apply=False, p=1),# RandomCrop(width=200, height=200)# Downscale(always_apply=False,p=1)# 添加其他增强技术# 参数:随机色调、饱和度、值变化。# HueSaturationValue(hue_shift_limit=20, sat_shift_limit=30, val_shift_limit=20, always_apply=True, p=0.5),# 使用具有随机核大小的高斯滤波器对输入图像进行模糊处理# GaussianBlur(blur_limit=7, always_apply=False, p=0.5),# 随机填充遮挡区域# CoarseDropout(max_holes=30, max_height=110, max_width=110, min_holes=10, min_height=50, min_width=50,#               fill_value=0, mask_fill_value=None, always_apply=True, p=0.5),GridDropout(always_apply=True),], bbox_params=BboxParams(format='yolo', label_fields=['class_labels']))return transformdef augmentations(self, image, bboxes, class_labels):transform = self.get_transform()transformed = transform(image=image, bboxes=bboxes, class_labels=class_labels)augmented_image = transformed['image']augmented_bboxes = transformed['bboxes']augmented_labels = transformed['class_labels']return augmented_image, augmented_bboxes, augmented_labelsdef augmented_image_bboxes(self, img_path, l_path):# 打印l_pathprint(l_path)with open(l_path, 'r') as f:values = f.read()f.close()class_labels, original_bboxes = [], []values = [i.split(' ') for i in values.split('\n')[:-1]]for i in values:class_labels.append(int(i[0]))original_bboxes.append([float(i) for i in i[1:]])original_image = cv2.imread(img_path)augmented_image, augmented_bboxes, augmented_labels = self.augmentations(original_image, original_bboxes,class_labels)return augmented_image, augmented_bboxes, augmented_labels, original_imagedef parsing_data(self, p_l_i):img_path, l_path, index = p_l_i[0], p_l_i[1], p_l_i[2]self.augmented_image, self.augmented_bboxes, augmented_labels, original_image = self.augmented_image_bboxes(img_path, l_path)data = []for l, d in zip(augmented_labels, self.augmented_bboxes):s = ' '.join(map(str, [l] + list(d)))data.append(s)data = '\n'.join(data)if augmented_labels:self.show_img()self.save_img_lable(data, self.augmented_image, self.save_img_path, self.save_lable_path, index)else:print(f'{self.picture_name[index]}该图片没有标签,不做保存')def save_img_lable(self, data, img, save_img_path, save_lable_path, index):cv2.imwrite(save_img_path + 'aug2_camber_' + self.picture_name[index], img)with open(save_lable_path + 'aug2_camber_' + self.label_name[index], 'w') as f:f.write(data)f.close()def __call__(self):for picture_batch, label_batch, index_bin in self.iter():list(map(self.parsing_data,[(p, l, i) for p, l, i in zip(picture_batch, label_batch, range(index_bin[0], index_bin[1]))]))def show_img(self, boxe=False):if boxe:for j in self.augmented_bboxes:x, y, w, h = jx1 = int((x - w / 2) * self.augmented_image.shape[1])y1 = int((y - h / 2) * self.augmented_image.shape[0])x2 = int((x + w / 2) * self.augmented_image.shape[1])y2 = int((y + h / 2) * self.augmented_image.shape[0])cv2.rectangle(self.augmented_image, (x1, y1), (x2, y2), (255, 0, 0), 2)cv2.rectangle(self.augmented_image, (x1, y1), (x2, y2), (255, 0, 0), 2)else:pass# cv2.imshow('Augmented Image', self.augmented_image)# cv2.waitKey(0)# cv2.destroyAllWindows()if __name__ == '__main__':# 原图片,标签的路径picture_path = 'images/train/'label_path = 'labels/train/'# 增强后的图片跟标签save_img_path = 'images/train-aug-point/'save_lable_path = 'labels/train-aug-point/'c = enhancement(picture_path=picture_path,label_path=label_path,save_img_path=save_img_path,save_lable_path=save_lable_path)c()

代码说明

除了常规的opencv之外我们需要安装albumentations

pip install albumentations

代码讲解查看视频 https://www.bilibili.com/video/BV1or421T74f](https://www.bilibili.com/video/BV1or421T74f

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/411556.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【蓝桥杯集训100题】scratch绘制扇子 蓝桥杯scratch比赛专项预测编程题 集训模拟练习题第28题

scratch绘制扇子 蓝桥杯集训100题第28题模拟练习解析 此题曾经作为第十届省赛的真题考过 一、题目要求 以坐标(0,0)点为中心绘制一把扇子;扇面和扇把都是三分之一圆,扇面的半径 为 100 左右,扇把的半径为 20 左右。 编程实现 每次点击绿旗后,舞台背景为白色,…

CUDA-BEVFusion(1): 环境安装

文章目录 1. 查看ubantu配置2. 环境安装2.1 安装包下载2.1.1 tensorRT 下载2.1.2 CUDA 下载2.1.3 cuDNN 下载2.2 安装2.2.1 cuda 安装2.2.2 cuDNN 安装2.2.3 tensorRT安装3. 安装包下载1. 查看ubantu配置 查看GPU的版本sudo apt-get install pciutilslspci | grep VGA查看linux…

探索Python中的拼音魔法:pypinyin库的奇妙之旅

文章目录 探索Python中的拼音魔法:pypinyin库的奇妙之旅背景:为何选择pypinyin?库简介:pypinyin是什么?安装指南:如何将pypinyin纳入你的项目?功能探索:pypinyin的五大核心函数实战演…

win10配置adb环境变量

初始状态: 最简单的配置方案,直接复制adb所在路径: 粘贴进来确定即可: 然后打开 cmd 查看已经配置成功了:

图表检测检测系统源码分享 # [一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]

图表检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …

位图

问题导入 解决方案 用哈希表位图概念, 但是每个key只占用一个bite位, 用0表示没有本key, 1表示有此key 位图实现 三个主要接口 set(key), 将key设成1 reset(key): 将…

最长回文子串:动态规划推导

最长回文子串:结合图形推导动态规划 题目介绍 本题可以在力扣找到,题号为5。 给你一个字符串 s,找到 s 中最长的 回文子串。 示例 1: 输入:s “babad” 输出:“bab” 解释:“aba” 同样是符…

AI引擎点燃消费电子市场,有芯片企业利润飙涨至792.79%!

导语 这一市场出现回暖!多家芯片企业净利润增长。 好消息!消费电子在经历两年低谷期后,终于迎来了拐点。 根据中国通信院发布的数据显示,1—6月,国内市场手机出货量1.47亿部,同比增长13.2%;智能…

低代码门户技术:赋能业务灵活性与创新的新时代

随着数字化转型的深入推进,各行各业对灵活、高效的技术解决方案的需求日益增长。在这个背景下,低代码门户技术应运而生,为企业提供了一种新颖的应用开发方式。今天,我们将探讨低代码门户技术的基本概念、优势以及如何在实际应用中…

Ubuntu 24.04 上安装和配置 Zabbix Agent

Zabbix 是一个强大的开源监控工具,可以帮助您跟踪服务器,网络和应用程序。在主机环境中配置了 Zabbix Server 之后,下一步是添加用于监视的远程主机。Zabbix Agent 从您的服务器收集数据并将其发送到 Zabbix 服务器进行监控。 本指南将向您展…

three.js渲染中文的3D字体

下载中文字体 引入下面的代码 点击下载 提取码: lywa <!DOCTYPE html> <html lang"en"><head><title>three.js webgl - modifier - tessellation</title><meta charset"utf-8"><meta name"viewport" c…

chapter08-面向对象编程——(章节内容梳理)——day10

目录 快捷键 访问修饰符 封装 继承 方法重写 多态 快捷键 访问修饰符 封装 继承 本质 方法重写 多态 编译类型、运行类型、动态绑定机制

如何下载西门子电气元件EPLAN EDZ文件以及CAD文件等?

如何下载西门子电气元件EPLAN EDZ文件以及CAD文件等? 西门子全球电子商务: https://mall.industry.siemens.com/goos/WelcomePage.aspx?regionUrl=/cn&language=zh 西门子Industry Image Database: https://www.automation.siemens.com/bilddb/index.aspx?lang=en 以…

【Scala】Windows下安装Scala(全面)

1.下载 官网下载地址&#xff1a;https://downloads.lightbend.com/scala/2.11.12/scala-2.11.12.msi 2.安装 双击下载的.msi文件&#xff1a; 勾选"I accept the terms in the License Agreement",然后点击下一步 修改自己的安装路径&#xff1a; 然后选择brow…

快讯 | Midjourney开拓硬件领域:苹果前经理加盟助力发展

硅纪元快讯栏目&#xff0c;每日追踪AI领域的最新动态&#xff0c;快速汇总最新科技新闻&#xff0c;助您时刻紧跟行业趋势。简明扼要的呈现资讯概要&#xff0c;让您快速了解前沿资讯。 1分钟速览新闻 Claude AI 聊天机器人性能下滑引争议 中国能源化工行业首个330亿参数昆仑…

vagrant 创建虚拟机

创建一个名为 “Vagrantfile” 的文件&#xff0c;修改如下内容&#xff1a; Vagrant.configure("2") do |config|(1..3).each do |i|config.vm.define "k8s-node#{i}" do |node|# 设置虚拟机的Boxnode.vm.box "centos/7"# 设置虚拟机的主机名…

大模型时代,算法工程师的黄金时代

在大模型时代&#xff0c;算法工程师的角色已经超越了传统的编程和算法优化&#xff0c;他们成为了推动技术革新和业务发展的关键力量。作为一名算法工程师&#xff0c;我深刻地感受到这个时代对我们的新要求和期待。回想起我刚刚踏入这个领域时&#xff0c;深度学习还只是少数…

一文全面了解机房动环监控系统/机房环控方案@卓振思众

机房动环监控是一个综合的动力与环境监控系统&#xff0c;主要用于确保机房设备和环境的稳定运行。机房动环监控作为保障数据中心正常运行的重要系统&#xff0c;其重要性不言而喻。在当前信息化、数字化时代背景下&#xff0c;各种业务的数字化转型要求数据中心必须具备高度的…

九盾安防提供的叉车警报灯蜂鸣器

随着物流行业的快速发展&#xff0c;叉车作为重要的物料搬运设备&#xff0c;其安全性日益受到重视。叉车警报灯蜂鸣器作为一种重要的安全装置&#xff0c;能够有效提醒操作人员和周边人员注意叉车动向&#xff0c;避免潜在的安全隐患。因此&#xff0c;市场需求量逐年上升&…

偷偷用了这10款AI写作神器,再也没加过班!

前言 [ 自2022年Chat-GPT在全球掀起AI革命浪潮&#xff0c;AI开始在内容的生产方式进行颠覆性改变。 其中&#xff0c;AI写作工具的崛起&#xff0c;为内容创作者打开了一个全新创作世界&#xff0c;无论用户在办公写作、自媒体写作还是兴趣写作&#xff0c;在效率方面都得到…