垃圾分类--环境配置
写在前面:
如果你们打这届比赛时,还有我们所保留的内存卡,那么插上即可运行(因为内存卡里我们已经配置好所有的环境)
本文提供两种环境的配置
一种是基于yolov8:YOLOv8 - Ultralytics YOLO Docs
https://docs.ultralytics.com/models/yolov8/(这是官网,进不去的话,需要科学上网)
另一种是基于飞浆:飞桨AI Studio星河社区-人工智能学习与实训社区
https://aistudio.baidu.com/overview
jetson nano教程:重点是烧录镜像、换源、更改输入设置。
Jetson Nano 从入门到实战(案例:Opencv配置、人脸检测、二维码检测)_jetson nano 从入门到实战(案例:opencv配置、人脸检测、二维码检测)-CSDN博客
https://blog.csdn.net/qianbin3200896/article/details/103760640?spm=1001.2014.3001.5506
一
环境配置
我们所使用的时第二种,所以先说第二种,可以按照之前学长所给出的教程进行配置:jetson nano部署paddle Inference环境全过程_jetson paddle-CSDN博客
https://blog.csdn.net/pdsrzbypdbyz/article/details/144172807?spm=1001.2014.3001.5506
按照上述环境配置好之后,将garbageCan该文件夹拖到nano上,运行代码即可
cd garbageCan/code
python3.7 test_tt.py
通过网盘分享的文件:garbageCan
链接: https://pan.baidu.com/s/1yZ733DwlhyQ8h4zVlJCwOA?pwd=g824 提取码: g824
如果你们用的是SUB国产板子(后面会讲),需要先创建虚拟环境,然后在虚拟环境里进行配置,否则会与系统环境产生冲突。在虚拟环境里配置好飞浆的环境之后运行如下代码:
conda activate garbage #先激活虚拟环境,虚拟环境的名字根据你们的所创建的来
cd garbageCan/code
sudo python3.7 test_tt.py
输入密码即可运行(密码:yahboom)
上述的test_tt.py是最终的代码 需要接入摄像头(我们用的是USB)、超声波、stm32等等
test_tt.py代码的逻辑如下:


如果有报错,可以粘贴给AI,根据AI的提示来解决报错问题(报错的种类很多,在这里不能一一赘述)
若想查看摄像头的位置可以运行如下代码:
cd garbageCan/code
python3.7 test_8000.py
如下图所示:
比赛时不会让你用键盘执行上述代码,需要写一个开机自启动脚本(只需上电后即可自动运行上述代码)。
可以根据如下教程来:Jetson nano开机自启动python程序_jetson nano设置开机启动c++he python程序-CSDN博客
https://blog.csdn.net/BluErroR/article/details/121640814?spm=1001.2014.3001.5506
Jetson nano开机自启动程序-CSDN博客
https://blog.csdn.net/qq_40672115/article/details/128140321?spm=1001.2014.3001.5506
如果执行不成功,可以加上sudo(以最高权限进行执行)
如:sudo gnome-session-properties
模型的训练:
上述就是第二种环境的所有操作。
二、
再说第一种,因为第一种未能在省赛之前跑出来,所以没有完整的垃圾分类代码,在这里我只演示如何配置环境以及运行
我们在进行环境配置之前,推荐先创建一个虚拟环境,虚拟环境与系统环境相隔开,能减少不必要的麻烦
创建虚拟环境
一、先下载miniconda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
二 安装Conda
bash Miniconda3-latest-Linux-x86_64.sh
三、初始化&&创建并激活环境
conda init
conda create --name yolo_v8 python=3.8 # 指定 Python 版本,如果需要
conda activate yolo_v8
激活环境之后(上述所激活的环境为yolo_v8)接着进行如下操作:
一、更新系统
sudo apt update && sudo apt upgrade -y
sudo apt install python3-pip python3-dev python3-venv -y
二、安装pytorch
pytorch是深度学习的框架,提供了众多的yolo所需的依赖以及GPU的加速支持
1.需要安装对应版本的pytorch,用如下代码来查看自己的jetPack版本
cat /etc/nv_tegra_release # 查询JetPack版本(如JP4.6=L4T 32.7)
2.安装对应版本PyTorch
①、适用于JetPack 4.6+ (CUDA 10.2):
wget https://nvidia.box.com/shared/static/ssf2s7g6zai470t8jppzldw7mvb6v0g6.whl -O torch-1.12.0a0+2c916ef.nv22.3-cp38-cp38-linux_aarch64.whl
pip3 install numpy torch-1.12.0a0+2c916ef.nv22.3-cp38-cp38-linux_aarch64.whl
②、适用于JetPack 5.x (CUDA 11.4+):
wget https://developer.download.nvidia.com/compute/redist/jp/v50/pytorch/torch-2.0.0+nv23.05-cp38-cp38-linux_aarch64.whl
pip3 install numpy torch-2.0.0+nv23.05-cp38-cp38-linux_aarch64.whl
我们应该是第①个,因为cuda版本是10.2
我在下载pytorch时,老是遇到网络的问题,可以将nano连接自己的热点(注意将自己热点的AP频段设置为2.4GHz)
三、安装yolov8依赖
pip3 install ultralytics
pip3 install matplotlib opencv-python-headless
sudo apt install libcanberra-gtk-module -y # 解决OpenCV GTK警告
创建好虚拟并配置好环境之后,先激活虚拟环境并进行如下操作:
python3 #先激活python环境,python激活的是python2环境,我们python的版本为3.8所以要python3
from ultralytics import YOLO
model = YOLO("yolov8n.pt") # 会自动下载模型
results = model.predict('https://ultralytics.com/images/bus.jpg', save=True)
接下来就会有推理的结果
上面配置环境时会有各种各样的问题,同样的可以将报错粘贴给AI,根据AI的提示进行解决报错,切记不要按部就班的粘贴AI所给的代码。
模型的训练:
nano的性能肯定是不足以训练模型,所以还是要在本地进行训练。可参考下面的教程:
重点参考:如何标注自己的数据集?如何配置环境?如何训练模型?
使用YOLOv8训练自己的数据集(原理解析+数据标注说明+训练教程+图形化系统开发)_yolov8 训练自己的数据集-CSDN博客
https://blog.csdn.net/ECHOSON/article/details/141301902?ops_request_misc=%257B%2522request%255Fid%2522%253A%252213716dea88c48b47a9f27f8c4177a9cd%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=13716dea88c48b47a9f27f8c4177a9cd&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-141301902-null-null.nonecase&utm_term=yolov8&spm=1018.2226.3001.4450【大作业-18】手把手教你用YOLOv8训练自己的数据集(原理解析+代码实践)_哔哩哔哩_bilibili
https://www.bilibili.com/video/BV1KHp2eREFZ/?spm_id_from=333.1387.favlist.content.click提供一份我训练时的代码:
import torchfrom ultralytics import YOLOdef train_yolov8():# 设置训练参数data = "F:/deeplearning/fire/Fire Detection.v1i.yolov8/data.yaml"//yaml文件model = "F:/deeplearning/ultralytics-main/mode/yolov8n.pt"//借助的模型epochs = 300//训练的轮数imgsz = 640/图像大小project = "F:\\deeplearning\\ultralytics-main\\runs"//训练的结果应该保存在哪个位置workers = 2//算力的调用# 实例化YOLO模型yolo_model = YOLO(model)# 使用train()方法开始训练results = yolo_model.train(data=data,epochs=epochs,imgsz=imgsz,project=project,workers=workers,device = torch.device('cuda' if torch.cuda.is_available() else 'cpu'),#device = ('cpu'),batch = 2)# 打印训练结果print(results)if __name__ == "__main__":train_yolov8()#print(torch.cuda.is_available())
与nano相互交换文件:
可以使用WinSCP该软件
可以在网盘里下载:
链接: https://pan.baidu.com/s/1tm7xodM1spyv3nTPKtZhRw?pwd=mi27 提取码: mi27
--来自百度网盘超级会员v4的分享
烧录镜像的APP:
可以使用balenaEtcher软件
通过网盘分享的文件:balenaEtcher-Setup-1.18.4.exe
链接: https://pan.baidu.com/s/1rC2IK7Z6jnbP5yge_D8DBw?pwd=cv3h 提取码: cv3h
--来自百度网盘超级会员v4的分享
格式化的APP:
可以使用SD Card Formatter软件
通过网盘分享的文件:SD Card Formatter.exe
链接: https://pan.baidu.com/s/1dMbzS7yjeQrDrBD9dHSQrg?pwd=5wf8 提取码: 5wf8
--来自百度网盘超级会员v4的分享
(格式化时选择Overwrite format,慢速格式化,防止损坏内存卡)
nano板子:


上面所述的板子是国产SUB的板子(JETSON NANO B01)
该板子不可以进行sudo apt update && sudo apt upgrade -y软件包更新操作,切记!切记!切记!!!(用该板子时配置环境时,跳过软件包更新这一步骤即可)
该板子的学习网站
JETSON NANO B01
https://www.yahboom.com/study/jetson-nanoJetson nano A01/B01
https://www.yuque.com/yahboomtechnology/yahboom_support/kgdd5m#UCREB该板子烧录的是人家的镜像(不可以烧录官方镜像),已经给提供了众多环境,所以有很大的学习空间,更深的开发就交给你们了
镜像链接:
通过网盘分享的文件:TF卡使用镜像(载板卡槽)
链接: https://pan.baidu.com/s/1iTD-OdpcKibm2eAB4FfUkA?pwd=vbdc 提取码: vbdc
--来自百度网盘超级会员v4的分享
另一种是英伟达官方板子按照之前给的教程即可玩转Jetson Nano(一) 开机准备与远程连接设置_ubuntu装jtop命令-CSDN博客
https://blog.csdn.net/iracer/article/details/104453423?spm=1001.2014.3001.5506
相关文章:
垃圾分类--环境配置
写在前面: 如果你们打这届比赛时,还有我们所保留的内存卡,那么插上即可运行(因为内存卡里我们已经配置好所有的环境) 本文提供两种环境的配置 一种是基于yolov8:YOLOv8 - Ultralytics YOLO Docshttps://d…...
每日一题--计算机网络
一、基础概念类问题 1. TCP 和 UDP 的区别是什么? 回答示例: TCP:面向连接、可靠传输(通过三次握手建立连接,丢包重传)、保证数据顺序(如文件传输、网页访问)。 UDP:无…...
json字符串转对象,对象转JSON
背景: JSON字符串与对象之间的转换。在对接接口的数据的时候,因为是实时数据转发过来的。发现后端发过的数据是字符串【JSON字符串】但是我们前端需要的是一个对象。 核心代码: JSON.parse(JSON字符串) 效果展示: 接口JSON字符串转…...
c++ 基础题目lambda
1. auto lambda = [](double x) { return static_cast<int>(x); }; 是 匿名函数对象 ,不可直接声明 a.可以赋值给一个与其类型兼容的 std::function 类型的对象 std::function<int(int, int)> lambda = [](int x, int y) { return x + y; }; b.使用具体的 lambda …...
pandas中excel自定义单元格颜色
writerpd.ExcelWriter(filepathf05教师固定学生占比1月{today}.xlsx,engineopenpyxl) df.to_excel(writer,sheet_name明细) piv1.to_excel(writer,sheet_name1月分布) wswriter.book.create_sheet(口径) ws.cell(1,1).value综合占比: ws.cell(1,2).value固定学生占比…...
3D标定中的平面约束-平面方程的几何意义
平面方程的一般形式为 AxByCzD0,其中系数 A、B、C、D共同决定了平面的几何特性。 系数对平面姿态的影响 1. 法向量方向2. 平面位置3. 比例关系4. 姿态变换5.平面空间变换 1. 法向量方向 法向量方向由 A、B、C 决定 核心作用:系数 A、B、C 构成的向量 (…...
蓝桥杯第13届真题2
由硬件框图可以知道我们要配置LED 和按键 一.LED 先配置LED的八个引脚为GPIO_OutPut,锁存器PD2也是,然后都设置为起始高电平,生成代码时还要去解决引脚冲突问题 二.按键 按键配置,由原理图按键所对引脚要GPIO_Input 生成代码&a…...
Linux-03 删除ubuntu系统文件夹Videos和Templates后,如何恢复
文章目录 问题解决方法1. 重新创建 Videos 和 Templates 文件夹2. 配置 user-dirs.dirs 文件3. 更新用户目录配置xdg-user-dirs-update4. 重启系统:sudo reboot 问题 手欠的嫌弃Videos和Templates文件夹是空的,也不会用,就删除了,…...
springboot多种生产打包方式教程
在 Spring Boot 项目中,打包是一个非常重要的环节,因为它决定了应用程序如何部署到生产环境中。Spring Boot 提供了多种打包方式,以满足不同的需求和环境。以下是详细的教程,介绍 Spring Boot 的多种生产打包方式以及它们的适用场…...
Linux系统移植篇(十)根文件系统构建 V3 - Yocto
可以简单的将 Ubuntu 理解为一个根文件系统,和我们用 busybox、buildroot 制作的根文件系统一样。因此移植Ubuntu也就是将Ubuntu根文件系统移植到我们的开发板上,但是因为 I.MX6ULL 孱弱的性能,本章我们就只移植 Ubuntu 的最小根文件系统&…...
pnpm创建vite
pnpm创建vite 在创建一个使用 Vite 的项目时,你可以通过 PNPM(一个快速、节省磁盘空间的包管理器)来简化依赖管理。以下是如何使用 PNPM 创建一个 Vite 项目的步骤: 安装 PNPM 如果你还没有安装 PNPM,可以通过 npm&…...
NAT技术-初级总结
NAT–网络地址转换 NAT基本逻辑是实现公网IP地址和私网IP地址的转换 华为设备所有NAT相关的配置都是在边界路由器的出接口上配置 1.静态NAT–一对一 就是在我们私网边界路由器上建立维护一张静态地址映射表,这张表 反映的是公网IP地址和私网IP地址之间一一对应的关系 只能一个…...
E902基于bash与VCS的仿真环境建立
网上看见很多E902仿真的文章,但用到的编译器是类似于这种Xuantie-900-gcc-elf-newlib-x86_64-V3.0.1-20241120,而我按照相应的步骤与对应的编译器,仿真总会报错。后面将编译器换成riscv64-elf-x86_64-20210512,反而成功了。现在开…...
LuaJIT 学习(4)—— FFI 语义
文章目录 C Language SupportC Type Conversion RulesConversions from C types to Lua objects例子:访问结构体成员 Conversions from Lua objects to C typesConversions between C types例子:修改结构体成员 Conversions for vararg C function argum…...
Pycharm接入DeepSeek,提升自动化脚本的写作效率
一.效果展示: 二.实施步骤: 1.DeepSeek官网创建API key: 创建成功后,会生成一个API key: 2. PyCharm工具,打开文件->设置->插件,搜索“Continue”,点击安装 3.安装完成后&…...
Windows安装Apache Maven 3.9.9
第一步下载资源 官网:下载 Apache Maven – Maven 环境变量配置 M2_HOME 指向bin目录 MAVEN_HOME 指向根目录 M2_HOME 不确定是否必须要 Path配置 ,需要注意MAVEN顺序应当在java之前 验证是否安装成功,在cmd中以管理员方式打开,…...
jmeter将返回的数据写入csv文件
举例说明,我需要接口返回体中的exampleid与todoid的数据信息(使用边界提取器先将其提取),并将其写入csv文件进行保存 使用后置处理器BeanShell 脚本实例如下 import java.io.*;// 设置要写入的文件路径 String filePath "…...
设计一个高性能的分布式限流系统
设计一个高性能的分布式限流系统 在现代分布式系统中,流量控制是保障系统稳定性和高可用性的关键技术之一。随着用户规模的增长和业务需求的复杂化,系统往往需要面对突发流量或恶意攻击等场景,这就对限流机制提出了更高的要求。一套高性能的…...
[项目]基于FreeRTOS的STM32四轴飞行器: 六.2.4g通信
基于FreeRTOS的STM32四轴飞行器: 六.2.4g通信 一.Si24Ri原理图二.Si24R1芯片手册解读三.驱动函数讲解五.移植2.4g通讯(飞控部分)六.移植2.4g通讯(遥控部分)七.通讯模块的完成(遥控部分) 一.Si24Ri原理图 S…...
【Android】RuntimeShader 应用
1 简介 RuntimeShader 是 Android 13(T)中新增的特性,用于逐像素渲染界面,它使用 AGSL(Android Graphics Shading Language)编写着色器代码,底层基于 Skia 图形渲染引擎。官方介绍详见 → Runti…...
Skia 图形引擎介绍
文章目录 一、Skia 的基本概念1. 定位与作用2. 历史背景 二、Skia 的核心架构1. 模块化设计2. 渲染流程3. 跨平台适配 三、Skia 在 Flutter 中的角色1. 自绘 UI 的核心依赖2. 跨平台一致性3. 性能优化 四、Skia 的性能优势1. 高效的图形处理2. 与原生渲染的对比3. 性能瓶颈 五、…...
jQuery从入门到应用:选择器、DOM与Ajax综合指南
文章目录 前言jQuery对象1、jQuery的使用在需要使用jQuery的页面引入Js文件使用jQuery选择页面元素并获取其文本内容 2、jQuery包装集与Dom对象DOM对象和jQuery对象的选择及互相转换 jQuery对象关键点说明: jQuery选择器1、基础选择器关键点说明 2、层次选择器关键点…...
10、基于osg引擎生成热力图高度图实现3D热力图可视化、3D热力图实时更新(带过渡效果)
1、结果 2、完整C代码 #include <sstream> #include <iomanip> #include <iostream> #include <vector> #include <random> #include <cmath> #include <functional> #include <osgViewer/viewer> #include <osgDB/Read…...
手搓智能音箱——语音识别及调用大模型回应
一、代码概述 此 Python 代码实现了一个语音交互系统,主要功能为监听唤醒词,在唤醒后接收用户语音问题,利用百度语音识别将语音转换为文本,再调用 DeepSeek API 获取智能回复,最后使用文本转语音功能将回复朗读出来。 …...
Modbus通信协议基础知识总结
1. 数据类型与存储区分类 Modbus协议将数据分为四类存储区,通过存储区代号区分: 输出线圈(0x):可读写,对应二进制开关量(如继电器状态),地址范围000001-065536ÿ…...
vue3 + css 列表无限循环滚动+鼠标移入停止滚动+移出继续滚动
1.动画文件.vue <template><div class"dashboard" click"setFullScreen"><div class"warp-box"><el-scrollbar ref"scrollRef" height"100%" scroll"handelScroll"><div class"…...
使用 CryptoJS 实现 AES 解密:动态数据解密示例
在现代加密应用中,AES(高级加密标准)是一种广泛使用的对称加密算法。它的安全性高、效率好,适合用于各种加密任务。今天,我们将通过一个实际的示例,展示如何使用 CryptoJS 实现 AES 解密,解密动态数据。CryptoJS 是一个基于 JavaScript 的加密库,它支持 AES、DES 等多种…...
Go语言对于MySQL的基本操作
一.下载依赖 终端中输入: go get -u github.com/go-sql-driver/mysql 导入包 import ("database/sql"_ "github.com/go-sql-driver/mysql" ) 二.案例 package main//go get-u github.com/go-sql-driver/mysql 获取驱动 import ("databa…...
AndroidStudio下载安装,环境部署以及常见问题解决教程(亲测)
AndroidStudio下载安装,环境部署以及常见问题解决!!! 文章目录 前言 一、Android Studio 下载与安装 1.1 系统要求 1.2 下载 Android Studio 1.3 安装 Android Studio Windows 系统 1.4 初始配置 二、环境部署 2.1 安装 …...
开源免费一句话生成儿童故事视频核心思想解析
再看一个演示视频,学会核心思想后,可以打造自己的内容生成工具,后文有基于飞书多维表格的实现效果: 一句话灵感生成儿童故事视频演示 这是一款专门为内容素材创作打造的创新工具,可根据用户输入的主题,快速…...
