昨天在夢(mèng)里愕把,我又看見你坑夯,寶貝,他們說馁害,我不愛你
你擁有我的类垦,不只是今天狈邑,可是,你比我 小了幾歲
如果我們不能結(jié)婚蚤认,你怎么受得了米苹,寶貝 我知道雖然你不說
如果我們就要結(jié)婚,我怎么能受得了砰琢,寶貝 別在夜里等我
Rovergo
海哥短暫地停留了兩天蘸嘶,跑了榜樣的力量答辯、項(xiàng)目組的餐會(huì)陪汽、給學(xué)弟學(xué)妹的經(jīng)驗(yàn)分享會(huì)训唱、老友的健身之約、與舊交的暢談挚冤,以及與我的交接(海哥是真的累况增,就不能給自己多休息兩天嗎實(shí)在太忙了)。
拿到了期待好久的項(xiàng)目训挡,或許我骨子里是自私與逃避的人澳骤,我沒有想象中那般激動(dòng)與喜悅,反而第一感受是:我失去了一把保護(hù)傘舍哄、失去了一個(gè)踏實(shí)肯干的隊(duì)長(zhǎng)宴凉、失去了一個(gè)值得信賴的隊(duì)友。從今天起表悬,我就要開始自己當(dāng)隊(duì)長(zhǎng)了弥锄,或許會(huì)再帶一個(gè)學(xué)弟還有泰山的同學(xué),亦或只有我和卓宇。我感到忐忑籽暇、不安和恐懼温治,這是我拿到的第一個(gè)無從下手的項(xiàng)目。但是轉(zhuǎn)念一想戒悠,這又是一件很好的事情熬荆,出不出成果先不說,它是在我能力范圍稍上的一件事绸狐,不管是組織團(tuán)隊(duì)還是技術(shù)細(xì)節(jié)卤恳,都特別特別考驗(yàn)人。
模擬退火算法
模擬退火其實(shí)也是一種Greedy算法寒矿,但是它的搜索過程引入了隨機(jī)因素突琳。模擬退火算法以一定的概率來接受一個(gè)比當(dāng)前解要差的解,因此有可能會(huì)跳出這個(gè)局部的最優(yōu)解符相,達(dá)到全局的最優(yōu)解拆融。以上圖為例,模擬退火算法在搜索到局部最優(yōu)解B后啊终,會(huì)以一定的概率接受向右繼續(xù)移動(dòng)镜豹。也許經(jīng)過幾次這樣的不是局部最優(yōu)的移動(dòng)后會(huì)到達(dá)B 和C之間的峰點(diǎn),于是就跳出了局部最小值B蓝牲。
根據(jù)Metropolis準(zhǔn)則趟脂,粒子在溫度T時(shí)趨于平衡的概率為exp(-ΔE/(kT)),其中E為溫度T時(shí)的內(nèi)能搞旭,ΔE為其改變數(shù),k為Boltzmann常數(shù)散怖。Metropolis準(zhǔn)則常表示為
Metropolis準(zhǔn)則表明,在溫度為T時(shí)肄渗,出現(xiàn)能量差為dE的降溫的概率為P(dE),表示為:P(dE) = exp( dE/(kT) )咬最。其中k是一個(gè)常數(shù)翎嫡,exp表示自然指數(shù),且dE<0永乌。所以P和T正相關(guān)惑申。這條公式就表示:溫度越高,出現(xiàn)一次能量差為dE的降溫的概率就越大翅雏;溫度越低圈驼,則出現(xiàn)降溫的概率就越小。又由于dE總是小于0(因?yàn)橥嘶鸬倪^程是溫度逐漸下降的過程)望几,因此dE/kT < 0 绩脆,所以P(dE)的函數(shù)取值范圍是(0,1) 。隨著溫度T的降低,P(dE)會(huì)逐漸降低靴迫。
我們將一次向較差解的移動(dòng)看做一次溫度跳變過程惕味,我們以概率P(dE)來接受這樣的移動(dòng)。也就是說玉锌,在用固體退火模擬組合優(yōu)化問題名挥,將內(nèi)能E模擬為目標(biāo)函數(shù)值 f,溫度T演化成控制參數(shù) t主守,即得到解組合優(yōu)化問題的模擬退火演算法:由初始解 i 和控制參數(shù)初值 t 開始禀倔,對(duì)當(dāng)前解重復(fù)“產(chǎn)生新解→計(jì)算目標(biāo)函數(shù)差→接受或丟棄”的迭代,并逐步衰減 t 值参淫,算法終止時(shí)的當(dāng)前解即為所得近似最優(yōu)解救湖,這是基于蒙特卡羅迭代求解法的一種啟發(fā)式隨機(jī)搜索過程。退火過程由冷卻進(jìn)度表(Cooling Schedule)控制黄刚,包括控制參數(shù)的初值 t 及其衰減因子Δt 捎谨、每個(gè) t 值時(shí)的迭代次數(shù)L和停止條件S。
二分查找法
時(shí)間復(fù)雜度按優(yōu)劣排差不多集中在:
O(1), O(log n), O(n), O(n log n), O(n2), O(nk), O(2n)
到目前為止憔维,時(shí)間復(fù)雜度是O(log n)涛救,好像就數(shù)二分查找法,其他的諸如排序算法都是 O(n log n)或者O(n2)业扒。但是也正是因?yàn)橛卸值?O(log n), 才讓很多 O(n2)縮減到只要O(n log n)检吆。
條件:存儲(chǔ)在數(shù)組中、有序排列
推薦博客:算法與數(shù)據(jù)結(jié)構(gòu) - 隨筆分類 - ranjiewen - 博客園 https://www.cnblogs.com/ranjiewen/category/789809.html
openmv
官網(wǎng):https://book.openmv.cc/
硬件實(shí)物:Openmv3 M7 攝像頭
軟件:官網(wǎng)下載的Openmv IDE
OpenMV項(xiàng)目創(chuàng)造一款低價(jià)程储,可擴(kuò)展蹭沛,支持Python的機(jī)器視覺模塊,這個(gè)模塊的目標(biāo)是成為"機(jī)器視覺世界的Arduino"章鲤,OpenMV搭載MicroPython解釋器摊灭,這允許我們?cè)谇度胧缴鲜褂肞ython來編程 (Python 3 to be precise). Python使機(jī)器視覺算法的編程變得簡(jiǎn)單得多。比如败徊,直接調(diào)用find_blobs()方法帚呼,就可以獲得一個(gè)列表,包含所有色塊的信息皱蹦。 使用python遍歷每一個(gè)色塊煤杀,就可以獲取他們所有信息,而這些沪哺,只需要兩行代碼沈自!
簡(jiǎn)單來說,openmv是一款基于python的可編程攝像頭辜妓,內(nèi)置許多庫(kù)函數(shù)枯途,實(shí)現(xiàn)了常用功能如顏色識(shí)別忌怎、目標(biāo)檢測(cè)、對(duì)象跟蹤柔袁,并且所有代碼都是開源的呆躲。東西絕對(duì)好用,就是這個(gè)價(jià)格嘛......一個(gè)正版的(帶IDE的key 相當(dāng)于激活碼)300多捶索,再加個(gè)防畸變攝像頭插掂,400+,還是有點(diǎn)小貴的
可以看到腥例,在自帶的IDE中辅甥,核心部分為代碼實(shí)現(xiàn),左邊為快捷鍵燎竖,上面為工具欄璃弄,右上角為攝像頭畫面,畫面下為顏色分布直方圖
import sensor, image, time
sensor.reset() # Reset and initialize the sensor.
sensor.set_pixformat(sensor.RGB565) # Set pixel format to RGB565 (or GRAYSCALE)
sensor.set_framesize(sensor.QVGA) # Set frame size to QVGA (320x240)
sensor.skip_frames(time = 2000) # Wait for settings take effect.
clock = time.clock() # Create a clock object to track the FPS.
while(True):
clock.tick() # Update the FPS clock.
img = sensor.snapshot() # Take a picture and return the image.
print(clock.fps()) # Note: OpenMV Cam runs about half as fast when connected
# to the IDE. The FPS should increase once disconnected.
通過輸入指定顏色參數(shù)构回,識(shí)別并標(biāo)記符合該顏色的物體夏块,如圖的水杯和奧利奧
import sensor, image, time, math
# Color Tracking Thresholds (L Min, L Max, A Min, A Max, B Min, B Max)
# The below thresholds track in general red/green things. You may wish to tune them...
thresholds = [(30, 100, 15, 127, 15, 127), # generic_red_thresholds
(30, 100, -64, -8, -32, 32), # generic_green_thresholds
(0, 15, 0, 40, -80, -20)] # generic_blue_thresholds
# You may pass up to 16 thresholds above. However, it's not really possible to segment any
# scene with 16 thresholds before color thresholds start to overlap heavily.
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time = 2000)
sensor.set_auto_gain(False) # must be turned off for color tracking
sensor.set_auto_whitebal(False) # must be turned off for color tracking
clock = time.clock()
# Only blobs that with more pixels than "pixel_threshold" and more area than "area_threshold" are
# returned by "find_blobs" below. Change "pixels_threshold" and "area_threshold" if you change the
# camera resolution. Don't set "merge=True" becuase that will merge blobs which we don't want here.
while(True):
clock.tick()
img = sensor.snapshot()
for blob in img.find_blobs(thresholds, pixels_threshold=200,
area_threshold=200):
# These values depend on the blob not being circular - otherwise they will be shaky.
if blob.elongation() > 0.5:
img.draw_edges(blob.min_corners(), color=(255,0,0))
img.draw_line(blob.major_axis_line(), color=(0,255,0))
img.draw_line(blob.minor_axis_line(), color=(0,0,255))
# These values are stable all the time.
img.draw_rectangle(blob.rect())
img.draw_cross(blob.cx(), blob.cy())
# Note - the blob rotation is unique to 0-180 only.
img.draw_keypoints([(blob.cx(), blob.cy(),
int(math.degrees(blob.rotation())))], size=20)
print(clock.fps())
選拔
其實(shí)我當(dāng)初報(bào)名的時(shí)候滿腦子在想自己被刷了怎么辦會(huì)不會(huì)丟面兒......正巧遇上了芳芳就拉著他一塊面啊,這樣共進(jìn)退多好我也不尷尬......沒想到有位哥功成身退不想干了去享受生活纤掸,我心里想他這鍋甩的好啊就是誰來接啊脐供,結(jié)果我自己大差不差成了隊(duì)長(zhǎng)?之后選人的時(shí)候也出現(xiàn)了一點(diǎn)小插曲借跪。原來有時(shí)候做決定政己,真的不是由著自己的心意,而是由自己的立場(chǎng)決定掏愁,哪怕我做的沒有對(duì)團(tuán)隊(duì)有多么好但我也不要做有害于團(tuán)隊(duì)的事(看來我還是挺適合進(jìn)國(guó)企的hhhh)
在一天的折騰之后我身心俱疲歇由,下午上完課躺在床上我只想靜靜的睡一覺。所幸最后大家把話都說開了果港,該道的歉也道了沦泌,該做的決定也做了,耶北京時(shí)間2019年12月10日0時(shí)51分辛掠,我終于可以上床睡覺啦赦肃!感謝老師的信任,坦白說我沒有想到和硬件這么相關(guān)公浪,就是在挑戰(zhàn)我的編譯原理和微處理器,希望能把隊(duì)伍帶好大家一起加油呀船侧!