The Pragmatic Programmer
Programming is a craft. At its simplest, it comes down to getting a computer to do what you want it to do (or what your user wants it to do). As a programmer, you are part listener, part advisor, part interpreter, and part dictator.You try to capture elusive requirements and find a way of expressing them so that a mere machine can do them justice. You try to document your work so that others can understand it, and you try to engineer your work so that others can build on it. What’s more, you...
yolov5_obb的兼容性改进
yolov5_obb的兼容性改进最近在学习yolo的旋转框检测,选用了yolov5_obb进行测试,结果代码由于各种问题跑不起来。我将里面用到的废弃函数进行了更改,以便能用用新环境进行运行。 我将修改完的代码上传到了我的Github仓库里。 改进方法utils/nms_rotated/nms_rotated_wrapper.py运行的时候会显示too_small和inds这两个变量和ori_inds不在同一个设备上,需要添加代码将两个变量移动到ori_inds所在的设备上。 12345678910111213ori_inds = torch.arange(dets_th.size(0)) # 0 ~ n-1# add thistoo_small = too_small.to(ori_inds.device)# add endori_inds = ori_inds[~too_small]dets_th = dets_th[~too_small] # (n_filter, 5)scores = scores[~too_small]inds =...
Kaggle 离线使用YOLOv5——Global Wheat Detection
Kaggle 离线使用YOLOv5——Global Wheat DetectionKaggle上很多比赛都要求代码在离线(offline)状态下运行的,虽然notebook的运行环境已经自带了很多深度学习和神经网络的包,但是要运行GitHub上下载的YOLOv5模型还差一些包和环境需求导致不能直接运行。而且离线状态下也不允许使用git命令克隆仓库。 那我直接上传最终submission.csv不就行了?很遗憾不行的。因为最终分数会扩大测试数据重新测试你代码运行的结果,这其实也是为什么要offline的原因,防止有人利用网络将扩大的数据集传出来以致于不公平。 我本来是想用Global Wheat...
YOLOv5使用方法
YOLOv5使用方法数据集YOLOv5 使用的数据集遵循的是 YOLO格式(YOLO annotation format)。以下是 YOLOv5 所需数据集的完整规范: ✅ 1. 目录结构YOLOv5 通常的数据集结构如下: 123456789101112131415161718dataset/├── images/│ ├── train/│ │ ├── img1.jpg│ │ ├── img2.jpg│ ├── val/│ │ ├── img3.jpg│ │ ├── img4.jpg│├── labels/│ ├── train/│ │ ├── img1.txt│ │ ├── img2.txt│ ├── val/│ │ ├── img3.txt│ │ ├── img4.txt│└── data.yaml ✅ 2. 标签文件格式(.txt)每张图像对应一个 .txt 文件,命名相同,内容如下格式: 1<class_id> <x_center>...
Kaggle: CIFAR-10-Object Recognition in Images
Kaggle: CIFAR-10-Object Recognition in Images本文是实现d2l网站代码的总结,教程链接 本文所用环境如下:1234python==3.9.23nvidia-cuda-runtime-cu12==12.9.79torch==2.7.1+cu118d2l==1.0.3 📚 数据集介绍CIFAR-10 是由加拿大多伦多大学 Alex Krizhevsky 等人收集的图像数据集,包含了 10 个类别的彩色图片。这些图片都是从真实世界拍摄的物体中裁剪而来的。 📏 数据细节: 项目 描述 图片大小 32x32 像素,RGB(三通道) 图片数量 60,000 张图像 类别数量 10 个 训练集 50,000 张图像 测试集 10,000 张图像 图像格式 .png 图像 + .csv 标签/预测 预测流程导包123456789import collectionsimport mathimport osimport shutilimport pandas as pdimport torchimport...
antfu的薅牛毛地图的自用方法
antfu的薅牛毛地图的自用方法背景去年看了Anthony Fu的“薅牛毛”演讲,当时看到ppt里密集的路线图着实是被视觉冲击了。将复杂的学习路线通过路线图一个个表示出来,最后整体去俯瞰,竟有一种宏伟的成就感。 什么是薅牛毛呢?在我的现状下,在学习新东西或者完成任务的时候,难免会有一些“前置知识”需要去了解,然后要理解“前置知识”的话,还需要学习一下“前置知识”的“前置知识”。这可能会变成一种dfs或者bfs,越学越多,越学越远,可能有一天发现自己在草原上薅牛毛,而一开始的目标和薅牛毛没有一点点关联。 最近正在学习图像识别的内容,最主要的目标就是学会使用YOLOv5。当然仅仅是使用的话很简单,我需要的是了解其中的原理并使用它。也因此我的“薅牛毛”之旅开始了。 制作方法下载代码我们可以先fork一下Anthony Fu的仓库代码。 安装环境然后将自己仓库的代码下载到本地,先安装环境: 1234# 如果本地没有pnpm要先下载pnpm,什么?连npm都没有?# 那可以“薅牛毛”了😂# npm install -g pnpmpnpm install 运行代码只需要运行:1pnpm...
Pytorch和cuda环境安装
Pytorch和cuda环境安装为了避免更换不同版本Cuda的麻烦,环境在Anaconda里面搭建。 创建conda环境Anaconda的安装就不赘述,首先是创建一个虚拟环境:1conda create --name your-env-name python=3.13your-env-name是环境名称,随意更换,python版本也可根据不同环境进行更改。这里要注意--name是两个-,如果只打一个-你有概率会获得一个名字叫ame的虚拟环境😂 千万不要忘了进入虚拟环境再进行下面的操作:1conda activate your-env-name 安装Cuda这里有两种方法,第一是用conda命令进行安装,源应该是conda仓库。第二种是通过pip,源是pip的仓库。其中conda安装的命令虽然更简单,但是conda仓库里Cuda版本十分有限,所以如果conda仓库里如果没有自己想要的版本还是推荐用pip进行安装。 通过conda安装可以通过以下命令查看conda仓库中有哪些版本的Cuda:1conda search cudatoolkit...
Codeforces Adjacent Digit Sums
Codeforces Adjacent Digit Sums这是Codeforces Round 1004(Div.2)的第一题,题目链接。 题目大意题目给出了两个数 𝑥 和 𝑦,要求判断是否存在一个整数 𝑛,使得 𝑛 的各位数字之和等于 𝑥,且 𝑛+1 的各位数字之和等于 𝑦。 S(n) = x, S(n+1) = y 换句话说,你需要找到一个整数 𝑛,使得: 𝑛 的各位数字相加等于 𝑥。 𝑛+1 的各位数字相加等于 𝑦。 如果存在这样的 𝑛,输出“YES”;否则输出“NO”。 题解 对于n的个位数字不是9的,S(n+1) = S(n) + 1; 对于 n 的个位数字是 9 的,假设从个位开始有连续的 k 个 9,那么S(n+1) = S(n) + 1 - k*9,因为从个位开始加上 1 后连续的 k 个 9 都会变成0,最后的进1贡献为1。 归纳如果 k = 0 即为情况1。 将 x 和 y 替换到等式里, y = x + 1 - k*9, k =...
曾经最想去的地方是现在最讨厌的地方
“欲买桂花同载酒,终不似,少年游。”
FFmpeg提取视频音频
FFmpeg提取视频音频背景故事最近在补夏目友人帐的第七季,前几季都是初中时候看的了得有快十年没看了,所以周更的时候没有跟着追。现在有时间了都下载下来一集一集看。 我发现夏目的语速非常慢,而且发音很标准,毕竟声优是神谷浩史,很有辨识度。重要的是里边用到的词汇也都非常基础,有很多日常生活中的常用词。最近我也在学新版的标日初级上下册,所以对一些基础词汇非常的敏感。 今天在去超市的路上本来想听一听播客,但是有很多还没有更新,有的更新也是不太想听,感觉营养较低。前几个月我是有搜寻一些日语播客的,想要练一练听力,但是完全听不懂就放弃了。 所以我联想到了我刚看的两集夏目,这个番非常适合练习听力,而且看过一遍字幕不用担心完全听不懂的现象,而且有有趣的对话和悠扬的背景音乐。 如果能把视频的音频提取出来传到手机上听就好了。 所以就有了这篇博客。 实际操作安装 FFmpeg 下载并安装 FFmpeg:FFmpeg 官网 配置环境变量(Windows 用户需要手动添加到 PATH,MacOS直接homebrew下载即可)。 提取音频命令假设你的文件是 input.mp4,目标音频文件格式是...
南游记
假期和朋友们聚会的时光
switch连接openwrt路由器NAT穿越失败问题
因为一个简单的设置导致度过了痛苦的几个小时的解决问题的时间
springboot中jwt的使用
在项目中引入jwt
MyBatis-Plus的使用
项目初始添加MyBatis-Plus和自动生成代码
考研回忆
总之非常痛苦的复习之旅终于结束了,也算是大战以后终于解放了。12月份真的是眨眼之间就过去了,经验++。
关于自主学习
关于自主学习最近也是因为在考研,休闲时间会看《觉醒年代》,今天看到一个英语作文在讲激励式教育。 激励式教育并不可取,因为如果激励消失后,孩子很难再有动力去学习。 学习究竟是为了什么,这个问题着实需要自己认真思考一下。 小学到大学的学习可能都只是仅仅想要升学到更好的学校。所以只需要按部就班的学习,做对试卷上的题目就能一天天混日子。从来没有想过学习本身到底是什么。学习本身绝不仅仅是背许多课文,学许多英语单词,考很高的分数。 为什么要学习?直到高考后选择专业时可能才是某些人第一次问自己想要干什么的时间。自己的理想和梦想的设立,决定和影响着我们人生未来的发展。但是长达九年的义务教育,是否给自己树立了正确的人生观价值观世界观呢?我自己当然是想成为一名程序员,因为电脑工作者很酷,很帅,能够解决很多有趣的问题,实现很多便利的功能。 那么实现自己的梦想就是需要学习。到了大学之后就不全是老师带着学生死磕课本的学习模式了,自主学习会逐渐成为大学生学习的常态。你想要成为前端工程师,那就去自学html,js,css,vue,react等,想要当后端工程师就要努力钻研spring...
第36次CCF CSP计算机软件能力认证记录
第36次CCF CSP计算机软件能力认证记录本次应该是我最后一次参加CSP了,明年就毕业了。遗憾的是这次也仅仅只是拿了300分。需要走的路还很远很远。 今天去官网看见能把代码下载下来了,就记录一下。 然而这并不是完整的题解,只是我自身心路历程的记录。如果想看完整的题解的话我推荐这篇博客 第一题简单模拟签到题。 12345678910111213141516171819202122232425262728293031323334353637383940414243#include<bits/stdc++.h>using namespace std;const int mxlen = 200;int n,k;int dx[4]={0,0,-1,1};int dy[4]={1,-1,0,0};int types(char c){ if(c=='f') return 0; if(c=='b') return 1; if(c=='l')...
毕业设计day0
Day 0此为记录毕业设计中代码实现功能记录的系列。 创建项目目前只是创建了项目初始文件和git仓库,由于尚未完成,所以github仓库暂为私有不公开状态。 后端 SpringBoot创建项目截图如下: Maven仓库,java17,jar包,Spring Boot 3.3.5,预装插件为 MySQL Driver,Lombok,Spring Web 前端 Android创建截图如下: java编写, Minimum SDK:API24(Android 7.0),Groovy DSL 构建。 因为感觉好玩,初始选了Android Studio给的Navigation Drawer Views Activity,现在用这种布局的软件比较少,打算做一个和小红书差不多的。
排序
排序在数据结构中,排序(Sorting)指的是将一个数据集合中的元素按指定顺序重新排列的过程。排序是计算机科学的基本操作之一,对数据处理和分析具有重要作用。排序的结果通常是按从小到大(升序)或从大到小(降序)排列的有序序列。 排序的基本概念 内部排序和外部排序: 内部排序:数据量较小,能够将所有待排序的记录一次性加载到内存中完成排序。 外部排序:数据量较大,无法一次加载到内存中,需要借助外存(如硬盘)分批次处理并排序。 稳定性: 稳定排序:若两个相等的元素在排序前后的相对位置不变,则排序算法是稳定的。例如,若记录有相同的键值,稳定排序会保持它们的初始顺序。 不稳定排序:可能会改变相等元素的相对位置。 时间复杂度:排序算法的时间复杂度通常以 $O(n^2)$ 或 $O(n \log n)$...
图
图图(Graph) 是一种用于表示关系的非线性数据结构,由顶点(节点,Vertices/Nodes)和边(Edges)组成,表示顶点之间的关系。图的概念适用于很多场景,比如社交网络(用户和好友关系)、地图(城市和路线)等。 图的基本概念 顶点(Vertex):图中的基本单位,表示实体或对象。 边(Edge):连接两个顶点的线,表示它们之间的关系或路径。 有向图(Directed Graph):边有方向的图,边表示从一个顶点到另一个顶点的单向关系。 无向图(Undirected Graph):边没有方向的图,边表示顶点之间的双向关系。 加权图(Weighted Graph):每条边上都有一个权重或费用,用于表示顶点之间的距离或成本。 邻接:如果两个顶点之间有直接边相连,则称它们是邻接的。 路径(Path):从一个顶点到另一个顶点的一条顶点序列,其中相邻顶点之间都有边相连。 环(Cycle):从一个顶点出发经过若干边回到该顶点的路径。 连通图(Connected Graph):在无向图中,任何两个顶点之间都可以找到路径的图。 图的存储 邻接矩阵(Adjacency...