利用树莓派为HP LaserJet 1020配置无线打印功能

前言 最近基地的打印机突然又好起来了。 因为基地的打印机型号比较老——HP LaserJet 1020,没有无线打印的功能。所以之前一位学长1 用树莓派配置了打印机的无线打印功能,但是后来发现有一些问题,有时候发送打印请求树莓派无法接收,而且不知道为何,学长之前用的是树莓派自己创建WiFi,连接对应WiFi才能打印,但是这个显然不是最优的解决办法。 考虑到之间已经配置好基地WiFi,我决定重新配置一下打印功能,使其连接基地WiFi即可实现局域网打印。 配置过程 查看树莓派内容 通过ssh连接树莓派,发现里面除了Github上的一个开源项目create_ap ,就没有什么其他的内容了,连接屏幕后发现没有任何图像信号,无从下手,因此考虑重新刷机。 对树莓派进行刷机 把数据备份了一下,看了一下树莓派版本是2015年生产的 Raspberry Pi 3 model B V1.2 ,是老古董了。 去官网看了一下,因为我对Ubuntu比较熟悉,我计划安装一个 Ubuntu20.04版本的,考虑到版本比较老,就装了server版本的,相比与desktop版本负担更小一些。 其实就是下一个官方的软件,Raspberry Pi Imager ,直接用读卡器对树莓派的存储卡刷机即可。 这里是对应的镜像以及教程: 镜像下载 安装教程 配置网络相关 Ubuntu的server版本有个比较蛋疼的问题就是上网比较困难,如果是用的学校网线,必须要PPPOE拨号才能上网,但是server版本居然没有 net-tools 和 network-manager ,连接WiFi啥的试了很多办法但还是没有什么作用。 解决办法:用网线直接连接树莓派和有网的路由器,安装 net-tools 和 network-manager ,执行 $ sudo nmtui 选择 Activate a connect 连接无线的WiFi,执行 $ sudo ifconfig 查看WiFi对应的IP,至此,树莓派可以摆脱屏幕,我们可以使用电脑进行使用 ssh 连接。 这里也可以使用网线进行连接,具体操作如下 用网线连接树莓派和自己的电脑。 在树莓派的利用 nmtui 选择 Edit a connection ,Add一个Ethernet connect,对IPv4 CONFIGURATION进行设置,首先讲 Automatic 设置为 Manual,设置 Address 为 静态IP 如 192.168.3.2 ,Gateway 设置为 192.168.3.1 。 ...

July 18, 2021 · 2 min · zzsqwq

利用神经网络进行波士顿房价预测

前言 前一阵学校有五一数模节校赛,和朋友一起参加做B题,波士顿房价预测,算是第一次自己动手实现一个简单的小网络吧,虽然很简单,但还是想记录一下。 题目介绍 波士顿住房数据由哈里森和鲁宾菲尔德于1978年Harrison and Rubinfeld1收集。它包括了波士顿大区每个调查行政区的506个观察值。1980年Belsley et al.2曾对此数据做过分析。 数据一共14列,每一列的含义分别如下: 英文简称 详细含义 CRIM 城镇的人均犯罪率 ZN 大于25,000平方英尺的地块的住宅用地比例。 INDUS 每个镇的非零售业务英亩的比例。 CHAS 查尔斯河虚拟变量(如果环河,则等于1;否则等于0) NOX 一氧化氮的浓度(百万分之几) RM 每个住宅的平均房间数 AGE 1940年之前建造的自有住房的比例 DIS 到五个波士顿就业中心的加权距离 RAD 径向公路通达性的指标 TAX 每一万美元的全值财产税率 PTRATIO 各镇的师生比率 B 计算方法为 $1000(B_k-0.63)^2$,其中Bk是按城镇划分的非裔美国人的比例 LSTAT 底层人口的百分比(%) price 自有住房数的中位数,单位(千美元) 基于上述数据,请完成以下问题: 建立波士顿房价预测模型并对预测结果进行评价。 问题分析 首先这道题目的很明确,数据一共是 $506×14$ 的一个矩阵,有十三维的自变量,通过建立一个模型来拟合回归出最终的因变量 price,即户主拥有住房价值的中位数。这是一个回归问题,综合考虑有以下两个思路 通过各种回归算法(GradientBoostingRegressor,RandomForestRegressor,ExtraTreesRegressor,LinearRegressor等)结合全部或部分自变量来回归最终的price 建立前馈神经网络模型,根据通用逼近定理,我们可以拟合此回归模型。 我们对上述模型来进行实现并确定评估标准来对他们进行比较,选择最优的模型作为预测模型。 算法流程 传统的回归算法 自变量的选择 首先,考虑到数据集中13列自变量其中某一些可能和最终的房价并无强相关性,如果全部使用进行预测可能会对模型引入噪声,因此我们首先计算了房价price与各个自变量之间的相关系数 $r$ ,其中 $r$ 计算公式如下: $$ r = \frac{\sum(x_i-\bar{x})(y_i-\bar{y})}{\sqrt{\sum(x_i-\bar{x})^2\sum(y_i-\bar{y})^2}} $$ 其中 $x_i,y_i$ 为数据的每个分量,$\bar{x},\bar{y}$ 为数据的均值 该系数反映了两变量之间的相关性,$r$ 的绝对值介于 $[0,1]$ 区间内,$|r|$ 越接近1,表示两数据相关性越高,反之越低。计算后结果如下: ...

May 16, 2021 · 1 min · zzsqwq

如何使用CenterNet做3D目标检测测试

CenterNet—Objects as Points介绍 ​CenterNet是一个anchor-free的目标检测网络,与YOLOv3相比,精度有所提升,此外他不仅能够用于2D目标检测,也能够用于人体姿态识别,3D目标检测等··· 安装CenterNet ​其实安装CenterNet的过程就是一个配置环境的问题,直接跟着官方给出的这里Install.md配置一下即可,十分推荐使用Conda来管理环境,这里给出我的环境给大家参考一下: Ubuntu = 18.04 LTS pytorch = 1.2.0 python = 3.6.12 torchvision = 0.4.0 cuda = 10.2 ​需要注意的是: 官方给出的教程里面使用的是 pytorch 0.4.1,但是我个人在实测过程中遇到了一些问题,遂安装网上的教程更改为 pytorch 1.2.0,并且需要把 ${CenterNet_Root}/src/lib/models/networks/DCNv2 中的这个DCNv2网络更改为官方的最新版。 这里使用的cuda版本最好和你的显卡匹配,之前因为显卡驱动的一些问题导致重装了电脑,根据我们学长学姐的建议,最好直接去cuda官网那边去下载deb包直接安装。 遇到环境配置问题可以先去Google一下,一般作者都在CenterNet’s Issues中给出了回复,如果没有,可以发邮件给作者询问,当然也可以发消息/邮箱给我,大家一起探讨一下~ 运行CenterNet的demo ​想要运行demo,首先要去 Model zoo 中下载一下我们需要使用的model,2D目标检测使用的是 ctdet_coco_dla_2x.pth ,人体姿态评估使用的是 multi_pose_dla_3x.pth ,下载后统一将他们放在CenterNet根目录中的model文件夹中。 ​然后使用conda切换到CenterNet的环境,在终端中运行: python demo.py ctdet --demo ${CenterNet_Root}/images/17790319373_bd19b24cfc_k.jpg --load_model ../models/ctdet_coco_dla_2x.pth ​这里需要注意的是 --demo 后面的 ${CenterNet_Root}/images/17790319373_bd19b24cfc_k.jpg ,这里我使用的是官方给出的实例图片,它位于CenterNet根目录的images文件夹中,前面的 ${CenterNet_Root} 代表的是 CenterNet根目录,好比我的就位于 /home/zs/CenterNet 。 ​如果不出意外的话效果应该如下图所示: 运行CenterNet的3D目标检测 配置数据集和模型 ​我们可以直接参考官方的 DATA.md 来配置我们的数据集。 ​然后到 Model zoo 下载3D检测使用的模型 ddd_3dop.pth 。 ​这里说一下遇到的几个坑: 首先是配置数据集的过程中,我们需要配置的目录结构如图所示(官方给出的结构树有点模糊不清的感觉) . ├── ImageSets_3dop │ ├── test.txt │ ├── train.txt │ ├── trainval.txt │ └── val.txt ├── ImageSets_subcnn │ ├── test.txt │ ├── train.txt │ ├── trainval.txt │ └── val.txt └── training ├── calib ├── image_2 └── label_2 然后去到 ${CenterNet_ROOT}/src/tools目录下,运行 python convert_kitti_to_coco.py 将 kitti 数据集转换为 coco 数据集的格式,不出意外应该会报错如下: ...

January 27, 2021 · 2 min · zzsqwq

“程序星编程之路”第二次作业题解

“程序星编程之路”第二次作业题解 A. Zs的回文质数 题目描述 读入一个整数 $n$ ,输出 $[1,n]$ 的所有回文质数,我们规定 $1\sim9$ 也是回文数。 思路 首先我们需要了解什么是回文数,以及什么是质数。 简单点说,回文数就是正着读反着读都是一样的,也就是对称的,形如 $abcba $ 或者 $123321$ 这样的。 质数的话,对于一个数 $n$ ,如果他是质数,那它除了 $1$ 和 $n$ 没有其他因子。例如 $2,3,5,7,11$ 这样的。 那么接下来我们考虑一下解决这个问题应该怎么做,首先我们看一下数据范围,$[1,100000]$ ,还是挺小的,我们可以考虑直接枚举每一个数来判断它是不是回文数,然后再判断一下是不是质数,如果两个都满足,我们就输出它。 判断回文数,我们可以考虑到 NOJ05 幸运数 一题的解题思路,也就是说我们把一个数倒置过来,好比一个数 $xyz$ 倒置成 $zyx$ ,然后判断是否 $xyz == zyx$ ,如果相等的话就是回文数,如果不相等就不是。 判断质数,我们可以在 $[2,\lfloor\sqrt{n}\rfloor]$ 枚举它的因子,这个的完备性我上课的时候证明过,不再赘述。这里需要注意 $1,2$ 需要特判一下。 代码 #include<stdio.h> #include<math.h> //我们需要用到sqrt函数,因此需要引入数学库 int main() { int n; bool flag = false; // 标记 i 是否满足条件 scanf("%d",&n); for(int i=1;i<=n;i++) { flag = true; int p=i,j=0; while(p) // 将 p 反转为 j { j=j*10+p%10; p/=10; } if(j==i) { if(j==1) continue; // 特判 1 if(j==2) // 特判 2 { printf("2\n"); continue; } int sqrtj = sqrt(j); for(int k=2;k<=sqrtj;k++) // 枚举 [2,sqrt(n)] { if(j%k==0) // 如果能够整除(余数为0),那么是 j 的因子 { flag = false; break; } } if(flag) { printf("%d\n",j); } } } } 其他 因为我们讲到这里的时候,我们没讲函数,但是这道题如果我们把判断是否为回文数,判断是否为质数,都另成一个函数模块,将使得程序变得更加简洁。我在这里也将函数版本的贴出来,有兴趣的可以看一下。 ...

November 12, 2020 · 3 min · zzsqwq

自买服务器建站教程

引言 本来之前是用的 Hexo + Github 搭建的,虽然用的是 Github 的服务器,但是我用家里的移动网访问起来还是没什么压力,就是慢一点,可以接受。 后来到了学校,我们学校网访问 Github 的速度简直可以用龟速来形容,白天可以说不开代理根本进不去,只有晚上了才能勉强进得去。然后我就寻思,能不能换成国内的服务器,然后就发现了 Gitee ,这个可以算是中国版的 Github ,他具有的服务 Gitee Pages 在国内可以飞速的访问,But如果想要自定义域名/每次推送自动更新需要开 Github Pages Pro ,还挺贵的,一年大概 120¥ 吧。此外,如果想要将域名解析到国内的服务器必须要备案,备案又必须有服务器,那我有服务器了还费那些事了,于是考虑自己买服务器重构一下博客。 ...

August 26, 2020 · 1 min · zzsqwq