week21 Rovergo交接 ASC选拔 openmv入门

昨天在梦里,我又看见你,宝贝,他们说,我不爱你
你拥有我的,不只是今天,可是,你比我 小了几岁
如果我们不能结婚,你怎么受得了,宝贝 我知道虽然你不说
如果我们就要结婚,我怎么能受得了,宝贝 别在夜里等我

Rovergo

海哥短暂地停留了两天,跑了榜样的力量答辩、项目组的餐会、给学弟学妹的经验分享会、老友的健身之约、与旧交的畅谈,以及与我的交接(海哥是真的累,就不能给自己多休息两天吗实在太忙了)。
拿到了期待好久的项目,或许我骨子里是自私与逃避的人,我没有想象中那般激动与喜悦,反而第一感受是:我失去了一把保护伞、失去了一个踏实肯干的队长、失去了一个值得信赖的队友。从今天起,我就要开始自己当队长了,或许会再带一个学弟还有泰山的同学,亦或只有我和卓宇。我感到忐忑、不安和恐惧,这是我拿到的第一个无从下手的项目。但是转念一想,这又是一件很好的事情,出不出成果先不说,它是在我能力范围稍上的一件事,不管是组织团队还是技术细节,都特别特别考验人。

模拟退火算法
退火

模拟退火其实也是一种Greedy算法,但是它的搜索过程引入了随机因素。模拟退火算法以一定的概率来接受一个比当前解要差的解,因此有可能会跳出这个局部的最优解,达到全局的最优解。以上图为例,模拟退火算法在搜索到局部最优解B后,会以一定的概率接受向右继续移动。也许经过几次这样的不是局部最优的移动后会到达B 和C之间的峰点,于是就跳出了局部最小值B。

根据Metropolis准则,粒子在温度T时趋于平衡的概率为exp(-ΔE/(kT)),其中E为温度T时的内能,ΔE为其改变数,k为Boltzmann常数。Metropolis准则常表示为


image.png

Metropolis准则表明,在温度为T时,出现能量差为dE的降温的概率为P(dE),表示为:P(dE) = exp( dE/(kT) )。其中k是一个常数,exp表示自然指数,且dE<0。所以P和T正相关。这条公式就表示:温度越高,出现一次能量差为dE的降温的概率就越大;温度越低,则出现降温的概率就越小。又由于dE总是小于0(因为退火的过程是温度逐渐下降的过程),因此dE/kT < 0 ,所以P(dE)的函数取值范围是(0,1) 。随着温度T的降低,P(dE)会逐渐降低。

我们将一次向较差解的移动看做一次温度跳变过程,我们以概率P(dE)来接受这样的移动。也就是说,在用固体退火模拟组合优化问题,将内能E模拟为目标函数值 f,温度T演化成控制参数 t,即得到解组合优化问题的模拟退火演算法:由初始解 i 和控制参数初值 t 开始,对当前解重复“产生新解→计算目标函数差→接受或丢弃”的迭代,并逐步衰减 t 值,算法终止时的当前解即为所得近似最优解,这是基于蒙特卡罗迭代求解法的一种启发式随机搜索过程。退火过程由冷却进度表(Cooling Schedule)控制,包括控制参数的初值 t 及其衰减因子Δt 、每个 t 值时的迭代次数L和停止条件S。

二分查找法

时间复杂度按优劣排差不多集中在:
O(1), O(log n), O(n), O(n log n), O(n2), O(nk), O(2n)
到目前为止,时间复杂度是O(log n),好像就数二分查找法,其他的诸如排序算法都是 O(n log n)或者O(n2)。但是也正是因为有二分的 O(log n), 才让很多 O(n2)缩减到只要O(n log n)。
条件:存储在数组中、有序排列

推荐博客:算法与数据结构 - 随笔分类 - ranjiewen - 博客园 https://www.cnblogs.com/ranjiewen/category/789809.html

openmv

官网:https://book.openmv.cc/
硬件实物:Openmv3 M7 摄像头
软件:官网下载的Openmv IDE
OpenMV项目创造一款低价,可扩展,支持Python的机器视觉模块,这个模块的目标是成为"机器视觉世界的Arduino",OpenMV搭载MicroPython解释器,这允许我们在嵌入式上使用Python来编程 (Python 3 to be precise). Python使机器视觉算法的编程变得简单得多。比如,直接调用find_blobs()方法,就可以获得一个列表,包含所有色块的信息。 使用python遍历每一个色块,就可以获取他们所有信息,而这些,只需要两行代码!
简单来说,openmv是一款基于python的可编程摄像头,内置许多库函数,实现了常用功能如颜色识别、目标检测、对象跟踪,并且所有代码都是开源的。东西绝对好用,就是这个价格嘛......一个正版的(带IDE的key 相当于激活码)300多,再加个防畸变摄像头,400+,还是有点小贵的

普通镜头

可以看到,在自带的IDE中,核心部分为代码实现,左边为快捷键,上面为工具栏,右上角为摄像头画面,画面下为颜色分布直方图

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.

通过输入指定颜色参数,识别并标记符合该颜色的物体,如图的水杯和奥利奥

颜色追踪
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())

选拔

其实我当初报名的时候满脑子在想自己被刷了怎么办会不会丢面儿......正巧遇上了芳芳就拉着他一块面啊,这样共进退多好我也不尴尬......没想到有位哥功成身退不想干了去享受生活,我心里想他这锅甩的好啊就是谁来接啊,结果我自己大差不差成了队长?之后选人的时候也出现了一点小插曲。原来有时候做决定,真的不是由着自己的心意,而是由自己的立场决定,哪怕我做的没有对团队有多么好但我也不要做有害于团队的事(看来我还是挺适合进国企的hhhh)

在一天的折腾之后我身心俱疲,下午上完课躺在床上我只想静静的睡一觉。所幸最后大家把话都说开了,该道的歉也道了,该做的决定也做了,耶北京时间2019年12月10日0时51分,我终于可以上床睡觉啦!感谢老师的信任,坦白说我没有想到和硬件这么相关,就是在挑战我的编译原理和微处理器,希望能把队伍带好大家一起加油呀!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,427评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,551评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,747评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,939评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,955评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,737评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,448评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,352评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,834评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,992评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,133评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,815评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,477评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,022评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,147评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,398评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,077评论 2 355

推荐阅读更多精彩内容

  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom阅读 2,699评论 0 3
  • 1 模拟退火算法(Simulated Annealing Algorithm)介绍    模拟退火算法是一种通用概...
    肥了个大西瓜阅读 5,355评论 0 3
  • --- layout: post title: "如果有人问你关系型数据库的原理,叫他看这篇文章(转)" date...
    蓝坠星阅读 793评论 0 3
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 2,031评论 0 2
  • 今天我在工作上犯了两个极奇愚蠢但是影响不太好的错误。这一个星期的工作下来,非常的忙碌,但是效率并不是很高,我反省一...
    四小靥阅读 56评论 0 0