yolo初步
参考文献:A simple way of creating a custom object detection model(这个就是卓晴教程的原版)YOLOv5的详细使用教程,以及使用yolov5训练自己的数据集_yolo5训练集-CSDN博客 使用预训练模型 安装环境依赖 克隆项目1git clone https://github.com/ultralytics/yolov5 # clone repo 镜像 1git clone https://github.com.cnpmjs.org/ultralytics/yolov5 # clone repo 必要环境官方给出的要求是:python>=3.7、PyTorch>=1.5 12cd yolov5pip install -U -r requirements.txt 123456789101112131415161718192021222324# pip install -U -r requirements.txtCythonnumpy==1.17opencv-pythontorch>=1.5matplotli ...
高精度算法
在处理数据的时候经常需要用到一些无比巨大的数,比如41856410684191645611这种的,或者是十进制的二进制转化,显然cpp里不能直接用int存放这些数据,然而long类型也是有上限的,这时就需要引入一个新的算法,叫做高精度算法 算法本质思想感觉多数思路就是用数组之类的容器存放数据,采用最原始的方式一点点进位计算之类的。(果然高端的食材往往采用最朴素的烹饪方式)。 细节处理高精度计算中有几个细节需要注意: 数据接受和储存: 当输入的数很长时,可以使用字符串方式输入和储存,再用字符串函数进行操作运算,将每一位去取出,存入数组。 1234567void init(int a[]) { // 传入数组 string s; cin >> s; len = s.length(); // s.length --> 计算字符串位数 for(int i=1; i<=len; i++) a[i] = s[len -i] - '0'; //将字符串s转换为数组a, 倒序存储} 进 ...
ROS2初步
安装ROS2鱼香yyds1wget http://fishros.com/install -O fishros && bash fishros卸载ROS1sudo apt remove ros-foxy-* && sudo apt autoremove 基础概念:与ROS1类似,ROS中同样具有节点,工作空间,功能包等概念 节点 每一个节点都负责一个单独的模块。举个不太恰当的例子:外卖员小哥外卖给主播小姐姐吃,送累了就刷小姐姐直播跳舞,这里外卖小哥和小姐姐都是一个节点,大家共同构成了一个整体,营造出lianghao社会(bushi)ROS2中的节点也是如此,每一个节点也是只负责一个单独的模块化的功能(比如一个节点负责控制车轮转动,一个节点负责从激光雷达获取数据、一个节点负责处理激光雷达的数据、一个节点负责定位等等) 节点通信(详见) ROS2中主要有以下四种通信方式: 话题-topics 服务-services 动作-Action 参数-parameters 启动节点需要使用指令:1ros2 run <package_name> ...
ROS1初步
Topic与Message 基础概念:1.话题Topic是节点间进行持续通讯的一种形式2.话题通讯的两个节点通过话题的名称建立起话题通讯连接。3.话题中通讯的数据,叫做消息Message4.消息Message通常会按照一定的频率持续不断的发送,以保证消息数据的实时性。5.消息的发送方叫做话题的发布者Publisher6.消息的接收方叫做话题的订阅者Subsciber更多有:1.一个ROS节点网络中,可以同时存在多个话题2.一个话题可以有多个发布者,也可以有多个订阅者3.一个节点可以对多个话题进行订阅,也可以发布多个话题4.不痛得传感器消息通常会拥有各自独立话题名称,每个话题只有一个发布者5.机器人速度指令话题通常会有多个发布者,但是同一时间只能有一个发言人。 Topic的C++实现发布者的具体步骤:1.确定话题名称和消息类型2.在代码文件中include消息类型对应的头文件3.在main函数中通过NodeHandler大管家发布一个话题并得到消息发送对象4.生成要发送的消息包并进行发送数据的赋值。5.调用消息发送对象的publish()函数将消息包发送到话题当中。为了查看有关的Top ...
关于过年抢红包的数学模型
建模初衷旧词已去,新春将至,首先祝各位新春快乐,龙年大吉! 最近,我不禁留意到许多朋友在抢红包这一传统活动中屡次受挫,心生疑惑与好奇。在这个新年风俗的背后,究竟隐藏着怎样的数学模型和本源机制呢?于是,我产生了一个突发奇想的想法,希望通过构建一个专注于抢红包的数学模型,深入探讨这一活动的规律、趋势以及可能的变数。 这个数学模型的目标不仅仅是揭示红包金额的分配方式,更是希望通过对抢红包过程的数学建模,挖掘其中的概率学、随机性、和博弈理论等数学原理。通过精心设计模型,我们或许能够理解为何有些人总能赢得更多,而有些人却屡屡受挫的原因。这也为我们提供了一个新的视角,来看待这个看似简单却又蕴含深厚数学内涵的传统文化现象。 模型雏形 在红包数据庞大的情况下,抢红包的机制可以近似看作是随机抽样。我们可以采用蒙特卡洛模拟方法,通过生成大量的随机样本进行统计分析,从而估算红包分配的平均情况。这种方法通过模拟多次独立的红包抢夺过程,得到了一个近似的红包金额分布, 这种方法的优势在于,它不仅能够在庞大的数据集上进行模拟,而且还能够灵活地应用于不同的分布类型。我 ...
OpenCV学习
经过长达一天的重装和环境配置,正式开始OpenCV的学习。 参考资料:OpenCV入门【C++版】_opencv c++入门-CSDN博客 利用VScode和cmake编译构建C++工程代码 - Oldpan的个人博客 OpenCV - C++实战(05) — 颜色检测_c++图像色素带识别-CSDN博客 基本 (图片&视频)操作首先在opencv中创建一个文件夹mytest,用于存放后续的测试程序,并创建程序test1(后续同理) 123mkdir mytestcd mytestgedit test1.cpp 找一张图片(好友丑照)命名为1.jpg存放于这个目录中用于后续测试(蹂躏)。 1 图片腐蚀示例代码:1234567891011121314#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>using namespace cv;int main(){ Mat srcImage =imread("1.jpg"); ...
CMake入门
1 前言1 .1Cmake是什么CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。可以构建、测试、打包项目。CMake 用于使用简单的平台和编译器独立配置文件来控制程序编译过程,并生成可在您选择的编译器环境中使用的主机配置文件和项目文件。对于c++工程来说,通过cmake配置,然后通过cmake工具自动生成makefile文件,最后通过make编译出二进制文件。也就是说CMake 用于使用简单的平台和编译器独立配置文件来控制程序编译过程,并生成可在您选择的编译器环境中使用的主机配置文件和项目文件。 1.2 Cmake 优缺点 优点 编程式的配置 支持跨平台 支持强依赖受控管理 官方提供的依赖查找方式 支持配置分离 支持多种外部调用方式 官方提供多种系统检测接口 支持工具链(Toolchain)以传递配置 官方提供了多种工具链实现 自身具有版本控制及约束功能 缺点 文档太差。cmake的文档差是一个公认的问题,那官方文档上连一个具体实例都没有,关键点也不会明确体现出来。 弱变量及未定义的变量导致非预期行为。cmake是一个弱语言,其 ...
神经网络初识
参考资料:新手入门python实现神经网络,超级简单!_py 神经网络-CSDN博客 📎Python神经网络编程.pdf Python学习篇30-神经网络_python神经网络-CSDN博客 “反向传播算法”过程及公式推导(超直观好懂的Backpropagation)-CSDN博客 反向传播算法推导过程(看一篇就够了)_神经网络反向传播算法推导-CSDN博客 1.发展历史神经网络的发展历史可以追溯到20世纪中叶。 McCulloch和Pitts的神经元模型(1943): Warren McCulloch和Walter Pitts提出了神经元模型,将神经元抽象为二进制开关,形成了后来神经网络的基础。 感知器的提出(1957): Frank Rosenblatt提出了感知器,这是一种基于神经元模型的学习算法。感知器可以实现简单的二分类任务。 早期神经网络的研究(1960s-1970s): 在这一时期,神经网络受到了关注,但受到了硬件和理论上的限制。神经网络的训练和应用遇到了困难。 反向传播算法的提出(1986): David Rum ...
筛去重复元素
最近发现这样一道题,大致意思是给定一个数组,其中元素仅有一个只出现一次,其余元素均出现两次,编写程序以找出这个数。 这里可以用到异或运算。 异或运算法则如下: 交换律:A ^ B = B ^ A 结合律:A ^ (B ^ C) = (A ^ B) ^ C 恒等律:X ^ 0 = X 归零律:X ^ X = 0 自反:A ^ B ^ B = A ^ 0 = A 这里主要用到后三条性质,可以定义变量key,不断与数组元素进行异或运算,某种意义上达到对于数组的压缩储存。 代码实现如下: 123456789101112#include <stdio.h>int func(int *array,int num){ int key=0; for(int i=0;i<num;i++){ key^=array[i]; } return key;}int main(){ int array[]={1,2,4,6,2,1,4,7,8,9,8,7,9}; ...
文件基本操作
文件基本操作(临时抱佛脚,捞捞) 123456789101112131415161718192021222324252627282930313233#include <stdio.h>int main() { FILE *file; // 文件指针 char filename[] = "example.txt"; // 文件名 // 打开文件以进行读写操作(如果文件不存在,则创建新文件) file = fopen(filename, "w+"); if (file == NULL) { printf("无法打开文件 %s\n", filename); return 1; } // 写入数据到文件 fprintf(file, "这是一个文件操作示例。\n"); fprintf(file, "欢迎使用 C 语言进行文件操作!\n"); // 将文件指针移到文件开 ...
