c语言怎么检测有哪几个端口_小白笔记:动手做目标检测 --> YOLO v3(一)

前言

从我开始读书的那一天起,每天都在学习不同的知识,都在接触不同的人。而一直以来,我却只能做一个知识的输入者,可是......噢对了,自我介绍一下,我是一个在重庆读书的大学生,我的专业是车辆工程。今天是我打开知乎的第977天,但是我决定做一件和往常不同的事情。从今天开始,我会写下一篇篇笔记,从深度学习一直写到汽车测试技术、写到材料力学。我会记录每一件特别的事情,从车辆工程的发展到如今炙手可热的人工智能。

本系列我会为大家讲解深度学习中关于计算机视觉方面的应用——目标检测。但是作为本系列的开篇作,我不打算直接讲解它的原理和代码。现在夜深了,人也静下来。我只想给大家分享分享一些关于计算机方面的事情,一些关于深度学习的事情,还有一些说也说不清楚的事情。从我的亲身经历,给屏幕前的同行一些参考。

一位物理老师

我的老师曾经说过:“这个大学或许不是你的理想大学,但是这里却有着理想的老师,理想的同学,理想的环境和一个不理想的你。”

从C语言到C语言

我想和大家好好地梳理一下。

不管是我身边还是知乎上,很多人都不明白为什么我们要学C语言。我想谈谈我的看法。

角度一:可能你觉得C语言显得很底层。

都怪那本书,它说C语言更接近于汇编语言,更像是一门中级语言。

都怪我们C语言老师,明明是一门很无聊的课,她可以讲的更无聊。

这里我想给大家科普一下,C语言是上个世纪70年代的产物,那个时候计算机发展得十分缓慢,也非常初级。所以一门新语言的诞生,就势必要关注计算机的内存,必须在有限的空间里创造无限的可能。因此C语言就会给我们介绍什么是指针,变量名的意义等等。因此C语言课上,就常常有以下内容。

f412f17775873a51941c4ad17fb7e283.png
图一

总之,C语言常常告诉你:要关注内存,要关注数据在内存里面是如何存放的。

正因为它十分“底层”,可能会消磨你学习兴趣。但重要的是,当你在学习其他语言时,就会得心应手。在学习完C语言后,我又自学了Swift、Matlab和Python。如果把Matlab和Python这些语言比作物理学,那么C语言的重要性就好比数学。可能在学习Python这些语言的时候,你不会关注内存,不会关注数据如何存放,不会在乎数据是否连续。但是正因为你学了高数,你才可以明白物理中的公式是怎么一回事。所以,C语言其实是为以后的深入学习计算机语言打下了基础。但如果你对计算机语言完全不感兴趣,也保证以后不会学习其他语言,那就是另一码事了。

角度二:为什么我们要学习计算机语言。

前面提到,我的专业是和车辆有关的。那么我会接触到大量关于机械、力学、材料方面的知识。可以这么说,大一学了C语言后,大部分同学是不会再接触计算机语言了。这就可以很好地解释,到现在的阶段,很多人都有疑惑,为什么我们要学习计算机语言。

我想首先从工作这个方面入手。曾经我和一些同学探讨过,从我们的角度来说现在的高科技产品,无非涉及三个方面的内容:计算机、电子和机械。因此,如果我们立足于机械和电子并学习计算机的知识,无非使我们的就业面更广。而且现在已经是一个高度信息化、数字化的时代,本身就要求我们要具备这些知识才能有立足之地。

给大家分享一句很流行的话:工具决定思维。学习了计算机语言,我们看待问题的方式和角度无疑会增加不少,在面对高计算量、高复杂度的问题,我们就会想到两个字——编程。在面对一些数学难题时,我们肯定会绞尽脑汁地去想一个巧妙的方式来解决,但是大多数时候,这种巧妙的方式不容易被想到。那么这时,你会自然而然地想到用编程的方式来解决,因为计算机可以挨个挨个去计算,并且不容易算错。你可以用编程去验证所有可能,最终找到解决问题的方案。

选择Python?

前文提到,在学完C语言后,大部分同学是不会去学习其它语言了。

当初我也是这样的想法,C语言的确消磨了我对计算机的兴趣。也就是那个时候,一个计算机学院的同学转到我们班上,那时我会花很多时间去帮助他学习机械制图,他也就给我讲了很多很多关于计算机方面的知识。当然仅靠这些是不足以引起我的兴趣,直到我看见了一串代码:

print("Hello World")

我还没有见过这么清新脱俗的代码。

可能那时我才明白了计算机语言的意义,计算机语言和英语一样,都只是一个工具而已。那么我们学了计算机语言,根本上是为了解决问题,如果我们把大部分时间都花在编写一个程序上,那么我们就不会有太多精力去解决问题。因此这是我后来学习Python的重要原因。

6375b0b21822523a0ba38866b4cac220.png
图二

下面是我的Python学习路线,供大家参考。

  • 中国大学Mooc --> 学习Python基础
  • 《Python编程:从入门到实践》 --> 再次学习Python基础
  • 《利用Python进行数据分析》 --> 学习Numpy、Pandas和Matplotlib等数据处理库
  • 《Python科学计算》 --> 学习Scipy、Sympy等科学计算库
  • 《深度学习之PyTorch实战计算机视觉》 --> 学习PyTorch等深度学习框架
  • 《OpenCV轻松入门:面向Python》 --> 学习传统计算机视觉算法
  • 《深度学习之PyTorch物体检测实战》 --> 学习目标检测算法
  • 《笨办法学Python》 --> 嘿嘿,刚买回来,准备巩固之前学的Python

之间一直是断断续续地学习,所以花了大概一年时间。

深度学习:从入门到放弃

在这个世界上,存在着很多听起来感觉很高大上的东西:

  • 人工智能
  • 机器学习
  • 深度学习

它们之间大概是以下关系:

32eee2ce7e97e13af2bcbd1884aed9c3.png
图三(纯手工作品)
  1. 人工智能(Artificial Intelligence, AI):人工智能的发展可以如下概括:人工智障 --> 弱人工智能 --> 强人工智能。很明显,目前我们停留在弱人工智能阶段,因为很多事情还是需要人类的干预和决策,在很多领域也无法使计算机完全代替人类。
  2. 机器学习(Machine Learning, ML):和我们学的《概率论与数理统计》很类似,即用统计的思想来解决问题。
  3. 深度学习(Deep Learning, DL):按我的理解,深度学习
    深度神经网络。深度学习就好比教小朋友认识东西。你会给许多带有动物的卡片让他们学习,渐渐的,他们就可以看懂纪录片《动物世界》了。所以你必须把深度神经网络和大脑里的神经网络联系起来,当你搭建了一个神经网络后,你就要用大量数据去训练它。

目前,深度学习有着以下应用:

  • 计算机视觉
  • 自然语言处理 NLP
  • 语言识别

下面让我们来欣赏一段代码:

import numpy as np

# 设置神经网络的尺寸
batch_n = 100
input_data = 1000
output_data = 10
hidden_layer = 100

# 设置初始值
x = np.random.randn(batch_n,input_data)
y = np.random.randn(batch_n,output_data)
w1 = np.random.randn(input_data,hidden_layer)
w2 = np.random.randn(hidden_layer,output_data)

# 定义超参数
epoch_n = 20
learning_rate = 1e-6

for epoch in range(epoch_n):
  
    # 正向传播
    h = np.dot(x,w1)
    h = np.where(h > 0,h,0)
    y_pred = np.dot(h,w2)

    # 反向传播
    loss = pow((y_pred - y),2).sum() # 损失计算
    print("Epoch:{} ,Loss:{:.2f}".format(epoch,loss))

    grad_y_pred = 2 * (y_pred - y) # 梯度计算
    grad_w2 = np.dot(h.T,grad_y_pred)
    grad_h = np.dot(grad_y_pred,w2.T)
    grad_h = np.where(grad_h > 0,grad_h,0)
    grad_w1 = np.dot(x.T,grad_h)

    w1 -= learning_rate * grad_w1 # 梯度更新
    w2 -= learning_rate * grad_w2

以上代码就是构建了一个含单层隐藏层的神经网络。

结语

现在已经是凌晨一点半了,本期分享就到这里。第一次写知乎难免会有一些不足之处,希望大家能够批评指正。

下期我将给大家详细讲解目标检测中的YOLO v3检测器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值