【Git学习】[3]标签管理
前言
发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。
Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针
使用tag命名指向历史版本号,能够更好的进行代码管理
一、创建标签
查看分支
1git branch
创建新的标签
1git tag v1.0
查看所有标签
1git tag
查看历史提交
1git log --pretty=oneline --abbrev-commit
比如要对->“博客备份”这次打标签
1git tag v0.9 607328c
查看标签信息,注意:```tag``是按字母顺序排列的
1git show v0.9
还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:
1git tag -a v0.1 -m "version 0.1 released" 1094adb
二、操作标签
删除标签
注意:对标签的操作都在本地,不会影响远程
1git tag -d v0.1
如果要推送标签到远程仓库,使用:
1git push origin v1.0
一次性推送全部尚未推 ...
【Git学习】[2]分支管理
创建与合并分支 - Git教程 - 廖雪峰的官方网站 (liaoxuefeng.com)
一、分支的创建
1. 分支创建
我们创建dev分支,然后切换到dev分支:
12$ git checkout -b devSwitched to a new branch 'dev'
git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:
123$ git branch dev$ git checkout devSwitched to branch 'dev'
然后提交:
1234$ git add readme.txt $ git commit -m "branch test"[dev b17d20e] branch test 1 file changed, 1 insertion(+)
dev 分支的任务完成,就可以切换分支了
二、分支的管理
1. 查看分支
2. 切换分支
3. 合并分支
完成之后,master分支上的修改在main上也能看到了
4. 删除分支
1git branch -d dev
【深度学习】[1]神经网络的基本概念
一、神经网络的基本概念
1. 神经元(感知器)
一种被称为感知器的人工神经元在20世纪五六十年代被科学家Frank提出。通过数学模型,可以认识到感知器是一个根据输入与权重来做出决定的设备,随着权重和阈值的变化,可以得到不同的决策模型。当一个感知器计算后得到的值大于阈值时,从神经学的角度来讲这个感知器被激活,反之为0。感知器可以一定程度上模仿人脑做出决策,但是感知器的决策过程全部是线性的,在处理图像处理、语音识别等复杂问题时,难以仅靠线性模型达到良好的识别效果,因此需要在感知器模型种引入非线性部分。
2. 非线性神经元
为解决复杂的数学模型,引入激活函数,激活函数给神经元带来了非线性因素,使得神经网络可以任意逼近任何非线性函数。
通常将激活函数与线性神经元合并使之成为非线性神经元
如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合,这种情况就是最原始的感知机(Perceptron)。
激活函数可以分为两大类:
饱和激活函数: sigmoid、 tanh…
非饱和激活函数: ReLU 、Leaky Relu 、ELU、PReLU、 ...
【stm32单片机】[Hal库][2]stm32时钟树
一、锁相环的原理与应用
参考文章:【STM32】知识补充 锁相环原理与应用解析_stm32数字锁相-CSDN博客
什么是锁相环 (PPL)
锁相环是一种闭环反馈控制系统. 用于生成与输入信号同步且相位相同的输出信号. 它的核心功能是在输入信号的相位变化时, 自动调整输出信号以保持同步. 这使得锁相环成为了一种理想的频率和相位控制技术.
锁相环的基本组成
锁相环主要由以下几个部分组成:
相位比较器 (Phase Detector): 相位比较器负责比较输入信号和反馈信号的相位差, 并将其转换为电压信号
低通滤波器 (Low-Pass Filter): 低通滤波器对相位比较器的输出信号进行滤波, 以消除高频噪声和相位抖动
电压控制振荡器 (Voltage-Controlled Oscillator): 根据低通过滤波器的输出电压调整输出信号的频率和相位
反馈分频器 (Feedback Divider): 反馈分频器对 VCO 的输出信号进行分频处理, 并将其反馈给相位比较器
【Tensorflow】[1]配置Tensorflow-GPU的快速模型训练
author: sz_jmu
前言
TensorFlow 是一个用于机器学习和深度学习的开源框架,由 Google Brain 团队开发并在 2015 年发布。它是目前最流行的深度学习框架之一,广泛用于构建、训练和部署机器学习模型,特别是在处理复杂的神经网络任务时。TensorFlow 提供了灵活的工具和库,支持从研究到生产环境中的机器学习应用。
TensorFlow可以支持CPU,也可以支持CPU+GPU,前者配置较为简单,兼容性较好,后者需要一些额外的操作支持。
在训练规模庞大的模型时,使用CPU往往存在较大的性能限制,模型训练速度较慢。神经网络算法通常涉及大量的参数、激活值、梯度值的缓冲区,其中每个值在每一次训练迭代中国都要被完全更新,有可能会超出传统计算机的高速缓存(Cache),所以内存带宽通常会成为主要瓶颈。而与CPU相比,GPU的一个显著优势就是具有极高的内存带宽。神经网络的训练算法通常不涉及大量的分支运算和复杂控制指令,更适合在GPU硬件上完成,具有并行特性的GPU更适合神经网络的计算,因此,安装TensorFlow的GPU环境是合适的选择。
参考文章:
解决tens ...
【TI】[2]常见外设的基本配置
Sysconfig界面:
1.波特率,数据格式的配置
2.中断使能配置
3.引脚配置
PS:LP-G3507开发板上用于板载调试的串口与单片机的PA11和PA10连接(跳线帽),配置这两个引脚可以直接通过MicroUSB接口与主机进行串口通信
库函数使用
1.初始化部分
12NVIC_ClearPendingIRQ(UART_0_INST_INT_IRQN);//清除串口中断标志位NVIC_EnableIRQ(UART_0_INST_INT_IRQN);//使能串口中断
2.中断配置
1234567891011void UART_0_INST_IRQHandler(void){ switch (DL_UART_Main_getPendingInterrupt(UART_0_INST)) { case DL_UART_MAIN_IIDX_RX: gEchoData = DL_UART_Main_receiveData(UART_0_INST); DL_UART_Main_transmitData(UART ...
【电赛】[2023E题]运动控制与目标追踪系统复刻[视觉部分]
# 注意
本项目创建时间:2024-7-17
本文标记为OpenCV入门参考项目以及电赛典型范例,由题主长期维护 --2024-10-2
一、图像处理方案
Opencv: 开源计算机视觉处理库,使用嵌入式SOC板卡作为摄像头模块,提供相对可靠的性能。
由于激光点的亮度远高于其他位置,所以采用HSV格式的色彩空间,对图像H,S,V域进行识别。
若要区分红绿激光,那么就对图像的RGB空间进行处理
2. 电工胶带的识别
使用原图像->灰度图像->设置阈值后进行二值化的方法,使得黑胶带区域识别为纯白色,其余部分全部为纯黑色区域。关于调参:建议使用创建滑块窗口的方法,进行动态调参,减少调参上浪费的时间。
摄像头容易受到外接环境光的干扰,可以通过调节分辨率,设置摄像头的图像获取范围,也有一种更为实用的方法:ROI(感兴趣区),可以通过创建掩膜的方式,只对ROI区域进行处理,这样就排除了外界环境的干扰。当然也可以使用切片的方法,定义一个变量用于读取图像的指定范围,然后再进行图像处理,需要显示参数时,再将一些特征点、辅助线、坐标点、数据显示在想要观看的图像上,使用opencv ...
【TI】-1-Sysconfig工具使用(GPIO、定时器为例)
一、编译器CCS Theia的基本使用
本文主要介绍通过CCS Theia以及Sysconfig的基本使用方法,将以GPIO和定时器为例,泛化性地介绍CCS Theia这个工具,便于其他外设配置的理解,对于CCS Theia IDE的安装及其环境配置,不做多赘述。
1. 范例程序的导入
步骤:
选择File -> import Project(s)
选择SDK中官方示例的地址,本文安装路径为:S:\ti\mspm0_sdk_2_01_00_03\examples\nortos\LP_MSPM0G3507\driverlib
gcc:代表C++方式编程的工程格式
ticlang:代表TI官方IDE的工程格式
2. Sysconfig界面
Sysconfig界面是TI推出的图形化界面配置,类似于ST 的CubeMX,能够极大简化对于单片机外设的初始化配置,更容易上手,但是这也需要我们正确小心地去使用这个工具,错误的配置很容易导致单片机无法正常工作。
一般的,在我们使用CCS Theia配置工程时,CCS成功加载工程文件后会显示一些特殊图标( ...
【yolov5】[1]初探目标检测算法--YOLOv5的训练及在地平线RDK X3上的快速部署
一、Windows环境下的模型训练
针对YOLO的模型训练环境配置,Windows端兼容性差于Ubuntu,如果电脑上有Ubuntu系统,建议用Ubuntu系统进行训练(但注意,虚拟机安装的Ubuntu系统无法使用物理GPU进行训练)。
YOLO版本:YOLOV5 7.0
xxxxxxxxxx $ tags: -数字电路与VHDL设计"bash
准备好目标模型对应的图片数据集,使用labelme命令,启动数据集打标工具
2. 模型的训练和导出ONNX
2.1 环境配置
Anoconda可以区分不同的环境,不同的环境下可以使用的命令是不同的
创建环境
1conda create -n yolov5_7.0 python==3.8.5
列举所有环境
1conda env list
删除’环境
1conda env remove --name <env_name>
激活环境
1conda activate <env_name>
如配置好yolo的环境,安装好pytorch,cuda,yolo相关依赖,就需要使用conda activate yo ...
【ROS2】[2]ROS2节点的编写
ROS2节点的代码结构(面向对象)
主程序
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051#!/usr/bin/env python3 # -*- coding: utf-8 -*-"""@作者: 古月居(www.guyuehome.com)@说明: ROS2节点示例-通过摄像头识别检测图片中出现的苹果"""import rclpy # ROS2 Python接口库from rclpy.node import Node # ROS2 节点类import cv2 # OpenCV图像处理库import numpy as np # Python数值计算库lower_red = np.array([0, 90, 128]) # 红色的HSV阈值下限upper_red ...
【Opencv】[1]图像处理基本概念
# OpenCV中文文档
https://woshicver.com/
一、图像处理常见基本概念
1.BGR和RGB格式
BGR和RGB是两种常见的颜色编码格式,它们在像素颜色排列的顺序上有所不同:
RGB格式:
RGB指的是红色(R)、绿色(G)、蓝色(B)三个颜色通道的顺序。
在RGB格式中,像素的颜色值按照红、绿、蓝的顺序排列,即最开始的三个字节依次表示红色、绿色和蓝色分量。
BGR格式:
BGR则是蓝色(B)、绿色(G)、红色(R)的顺序。
在BGR格式中,像素的颜色值按照蓝、绿、红的顺序排列,即最开始的三个字节依次表示蓝色、绿色和红色分量。
这两种格式主要在图像处理中有所区别。例如,在OpenCV中,默认情况下读取的图像格式是BGR而非RGB,这意味着你在处理图像数据时需要注意颜色通道的顺序。如果需要与其他软件或标准的RGB格式进行交互,通常需要进行颜色通道的重新排列。
总结:
RGB:红色、绿色、蓝色,像素颜色排列顺序是RGB。
BGR:蓝色、绿色、红色,像素颜色排列顺序是BGR。
RGB格式的缺陷:自然条件下截取的图像,容易受到光线的影 ...
【ROS2】[1]ROS2基本概念
ROS2上手体验
ros2环境的配置
12source /opt/ros/humble/setup.bash #添加环境变量,需要每次启动终端使用此命令,比较繁琐echo " source /opt/ros/humble/setup.bash" >> ~/.bashrc #将添加环境变量的命令添加到脚本,开启终端自启动,无需反复source
发布者节点
1ros2 run demo_nodes_cpp talker
订阅者节点
1ros2 run demo_nodes_py listener
node
1ros2 run turtlesim turtlesim_node
Linux/Ros2命令行操作
Linux的命令庞大,但基本掌握常用的一些基础命令即可
获取当前终端操作的目录位置
1pwd
列举当前目录显示的文件
1ls
列举当前目录(包括被隐藏的)文件
1ls -A
新建文件夹
1mkdir test
修改当前终端路径
1cd test/
效果:
在当前路径新建文件
1touch read.txt
在当前路径删除文件
1rm read.txt
删除文件夹
1r ...