自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

電子之路:從C語言到視覺識別

開發(fā) 前端
加法和減法因為有進位和借位,它們的多個二進制位之間是相關(guān)的。所以,加法和減法的電路實現(xiàn)是比較復(fù)雜的,乘法和除法更復(fù)雜。

?模擬電路是可以利用三極管的導(dǎo)通 / 截止的狀態(tài)切換,來實現(xiàn)數(shù)字邏輯的。

最簡單的數(shù)字邏輯有3種:與、或、非。

這種簡單的數(shù)字電路叫門電路。

非門

最簡單的非門,就是使用一個三極管和一個電阻。

最簡單的與門,是使用兩個二極管和一個電阻。

與門

如上圖,2個二極管只要有一個(與電源負(fù)極)導(dǎo)通時,輸出端的電壓就是0.7v,為低電位。

2個二極管都截止時,輸出端的電壓等于電源電壓,為高電位。

只使用三極管的b-e兩極時,三極管就相當(dāng)于二極管。

這些簡單的門電路,都可以用來處理一個二進制位的運算,即位運算。

1.位運算

位運算,是比加減乘除更簡單的運算。

在位運算時,一個數(shù)的多個二進制位之間是不相關(guān)的。

所以,只要把32個上圖的電路并聯(lián)起來,就可以處理32位的位運算。

2.加減運算

加法和減法因為有進位和借位,它們的多個二進制位之間是相關(guān)的。

所以,加法和減法的電路實現(xiàn)是比較復(fù)雜的,乘法和除法更復(fù)雜。

但是,加減乘除運算都是可以用電路實現(xiàn)的。

(這里就不展開了,否則又得寫一大篇)

3.C語言

在位運算和加減乘除的基礎(chǔ)上,就可以實現(xiàn)一門編程語言了。

邏輯運算(&&, ||, !),就是1個二進制位的位運算。

比較運算(>, <, ==, !=, >=, <=),實際比較的是運算結(jié)果與0的大小。

2 > 1 比較的是 2 - 1 > 0,

0可以用1個二進制位表示,所以比較運算實際上也是加減運算+位運算。

if / else,就是邏輯運算。

while / for,就是個復(fù)雜點的if / else:

它會根據(jù)條件跳轉(zhuǎn)到循環(huán)開頭或結(jié)尾,而if / else不會跳轉(zhuǎn)到開頭,就這么點區(qū)別。

位運算、加減乘除、邏輯、比較、if else、while for,一門編程語言的主要運算也就這些。

當(dāng)然,從數(shù)字計算機的出現(xiàn)到C語言的誕生,中間還隔了20多年的時間,經(jīng)歷了機器語言、匯編語言,上古高級語言3個階段。

C語言從出現(xiàn)到現(xiàn)在,已經(jīng)用了50年了,依然寶刀未老?

C語言之后的編程語言,基本都是在C語言的基礎(chǔ)上修修補補。

例如:C++添加了OOP機制;

java又在C++的基礎(chǔ)上做了一些簡化,并且把運行平臺從CPU搬到了jvm虛擬機,實現(xiàn)了跨平臺;

go語言除了有點古怪的語法之外,又差不多回到了C語言的最初設(shè)計,并且添加了協(xié)程。

現(xiàn)在,人們在編程語言上能夠做的改進已經(jīng)比較少了,更多的是順應(yīng)程序員的習(xí)慣。

所以,有個編譯器大牛好幾年前就說過:編程語言是程序員的“宗教戰(zhàn)爭”。

所以,php是最好的編程語言?

4.unix系統(tǒng)

C語言出現(xiàn)之后,丹尼斯-里奇和肯-湯普森馬上就用它重寫了unix系統(tǒng)。

這是C語言被發(fā)明的主要目的,和第一個應(yīng)用。

丹尼斯-里奇在unix系統(tǒng)的設(shè)計模式,成了后來操作系統(tǒng)的典范。

unix說,“一切皆是文件”。

包括Linux在內(nèi)的泛unix系的操作系統(tǒng),都遵循了這一原則,而且API高度相同。

但是,API這個詞是從“異端”windows那里來的。

unix / linux 的API學(xué)名叫系統(tǒng)調(diào)用(syscall),但因為2000年前后微軟巨大的影響了,都被叫成了API。

并且,windows把文件的描述結(jié)構(gòu)叫句柄,linux叫文件描述符,現(xiàn)在很多l(xiāng)inux程序員也把文件描述符叫句柄。

畢竟,windows XP在代表了一個時代!

操作系統(tǒng)、數(shù)據(jù)庫、編譯器,是傳統(tǒng)的三大基礎(chǔ)軟件。

在1970年,unix和C語言出現(xiàn)之后,美國巨頭們就迅速壟斷了這三大領(lǐng)域。

不過,人類的科技發(fā)展,從來都是想重新發(fā)明自己!

怎么讓電腦像人一樣的看東西,是科學(xué)家們從1980年之后的研究重點。

5.計算機視覺

讓電腦去識別圖像的技術(shù),叫計算機視覺,英文縮寫CV.

CV的大概可以分為兩步:

1)目標(biāo)檢測,即把目標(biāo)位置從背景圖片里畫出來,

2)目標(biāo)識別,識別畫出來的目標(biāo)是什么。

人臉識別

把人的面部從圖片中框出來,就是人臉檢測:常用的算法是Haar小波分類器。

識別框出來的人臉是誰,就是人臉識別:常用的算法是CNN,它是深度學(xué)習(xí)的一種模型。

在深度學(xué)習(xí)出現(xiàn)之前,人們經(jīng)常使用傳統(tǒng)算法的組合去識別圖像。

例如:

高斯模糊,可以平滑掉圖像中的一些斑點。

拉普拉斯變換,可以檢測圖像的邊緣。

形態(tài)學(xué)膨脹,可以把一大片鄰近的點連成一塊區(qū)域:在文字識別中常用這個算法。

文字是一種邊緣特別突出的圖形,與自然物體的差異很大,所以拉普拉斯變化之后文字區(qū)域非常的明顯。

但是在閥值分隔之后,這個區(qū)域往往形成一些密集而不連續(xù)的點:

經(jīng)過形態(tài)學(xué)膨脹之后,這些點就連成了一塊,可以求它的外接矩形了;

外接矩形,基本上就可以框出文字所在的區(qū)域;

然后,就可以根據(jù)特征去識別了。

對人臉的識別,也是先框出所在的區(qū)域,然后根據(jù)特征去識別。

傳統(tǒng)算法經(jīng)常使用的是特征點檢測+分類器:

SIFT算法用來檢測特征點,SVM支持向量機用來對特征點分類,SIFT+SVM曾經(jīng)是深度學(xué)習(xí)出現(xiàn)之前使用最多的CV算法。

當(dāng)然,SIFT+SVM的效果也就那樣,畢竟它們都是非常死板的固定算法,適用場景有限。

在2006年,辛頓提出深度學(xué)習(xí)之前,CV算法對復(fù)雜場景的識別率一直不高。

雖然傳統(tǒng)算法在數(shù)學(xué)上都是可解釋的,但識別率是硬傷。

深度學(xué)習(xí)的參數(shù)雖然難以解釋,但它的識別率比傳統(tǒng)算法高得多。

這十幾年來,深度學(xué)習(xí)基本一統(tǒng)了CV領(lǐng)域。

深度學(xué)習(xí)的入門,所需要的數(shù)學(xué)知識并不多,學(xué)過高數(shù)和線代的都能很快入門。

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2023-01-01 14:22:17

2011-04-01 09:29:52

MySQLMongoDB

2019-06-18 09:09:31

C端B端產(chǎn)品設(shè)計

2009-08-27 16:03:31

從c#到c++

2025-02-14 00:00:20

C#C/C++語言

2024-12-24 07:20:00

C++std::anyC++17

2015-06-15 09:29:56

聯(lián)想互聯(lián)網(wǎng)

2020-05-08 11:42:24

JavaScript編程語言技術(shù)

2023-09-19 09:28:47

AI視覺

2016-03-30 09:56:07

c語言變量聲明objectivec

2011-07-13 17:08:02

CC++

2011-07-13 16:48:55

CC++

2011-07-13 17:42:32

CC++

2017-06-03 23:30:32

視覺問答深度學(xué)習(xí)數(shù)據(jù)集

2024-12-13 15:53:58

VLM小型視覺語言模型LLM

2017-04-24 13:47:30

互聯(lián)網(wǎng)

2009-01-03 08:55:04

Java2008NetBeans

2017-03-13 09:19:38

CAP編程語言

2010-01-21 16:08:26

C++語言

2022-06-29 10:11:19

CIOIT領(lǐng)導(dǎo)者
點贊
收藏

51CTO技術(shù)棧公眾號