经过上周的努力,嗅球识别模型的命中率已经比较可观了,但是误判率还是比较高。上周五老师给了我一份新数据,标注的是包括嗅球的周围白色区域的标签,类似下图蓝色部分:

TIM图片20190722172357.jpg

然后我产生了初步的利用白色区域标签的想法,即像训练嗅球那样训练出分割白色区域的模型,然后对于一张验证图片,分割出如上图所示的蓝色标签(白色区域)和红色标签(目标嗅球区域)。先前的嗅球区域会有一些错误并且偏离较大的预测,暂时简单的想法在识别出的白色区域下方设置一个阈值,超过这个阈值的预测认为是无效预测

接下来的问题就是像训练嗅球数据集一样训练白色区域的数据集了。我一开始的想法就是像训练嗅球一样,把nii数据转化成png之后一样的代码再训练一遍就是,但是仔细想想,既要训练嗅球,又要训练白色区域,这很明显是一个多分类问题,U-Net网络本来就支持多分类识别,那我是否可以在原来的代码基础上改动下输入的channel和class数呢?

- 阅读剩余部分 -

这周主要尝试的是裁剪中间320x320区域,输入网络后使用focal loss作为loss function进行训练。一开始也尝试了BCE loss,因为**兄发的focal loss有一些小小的python版本兼容问题,而我之前在GitHub上看的一个UNet是用BCE loss,然后就一边弄focal loss的代码一边服务器上先跑着torch自带的BCE loss看看效果。但是BCE loss的结果出来并不是很好,后面就都用focal loss跑了

尝试了学习率lr=0.0001和lr=0.00001,因为图片被裁剪的相对原图比较小,所以也尝试了batch size=8的训练。在此之前我只知道这个超参数是指每次喂入网络的样本数,并不知道其对训练轮数有什么样的影响,查了相关资料后知道了epoch、 iteration和batch size这三者的关系:

  1. batch size:批大小。在深度学习中,一般采用SGD训练,即每次训练在训练集中取batch size个样本训练;
  2. iteration:1个iteration等于使用batch size个样本训练一次;
  3. epoch:1个epoch等于使用训练集中的全部样本训练一次;

以及一篇比较好的讲解:
深度学习中的batch的大小对学习效果有何影响? - 程引的回答 - 知乎
https://www.zhihu.com/question/32673260/answer/71137399

最后训练出来lr=0.00001时后面迭代次数比较高的checkpoint比较好,下面是batch size=4时迭代第30000次的结果中的一张图,大部分分割结果都和下图类似:

16.png



- 阅读剩余部分 -

朋友,想必你最近登录微软、谷歌的时候已经注意到,输入用户名和密码的逻辑似乎和先前不大一样了。当你熟练地敲下你那文艺的用户名,左手小拇指轻轻按下 tab 键,诶???说好的密码框呢?最近看到一篇文章 Why are the username and password on two different pages? 比较好的阐述了这个转变的缘由。

为啥输入用户名和密码不在同一页

- 阅读剩余部分 -

搭建集群其实就是配置网络,本文以 VMware 和 CentOS 为例,其他的虚拟机软件和发行版设置大体相同

一般虚拟机网卡有三种选择:

  • 桥接模式:
    把虚拟机网络部署到和宿主机同级局域网下,路由是宿主机连接的物理路由器,有外网
  • 仅主机模式:
    仅在虚拟机和宿主机之间搭建局域网,没有外网
  • NAT 模式:
    在仅主机模式的基础上做了 NAT 映射,既有内网也有外网,相当于把宿主机当作软路由

Snipaste_2019-06-30_19-36-24.jpg

为了让集群内每一台机器都有静态的内网ip,又有外网访问权限,同时又不受不同物理路由器的 DHCP 策略影响,NAT 模式显然是最好的办法。下面就来配置 NAT 模式的虚拟网卡和虚拟机静态 ip




- 阅读剩余部分 -

在虚拟机上搭建Hadoop+HBase集群

下图配置的虚拟机*3,来搭建集群

Snipaste_2019-06-28_16-49-10.jpg

之前是在我吃灰的公网服务器上搭的,服务器网络环境比较复杂:共有三台公网服务器,两台处于同一内网,第三台单独在外网

搭建的时候Hadoop监听ip0.0.0.0,没有问题,集群可以正常访问,3台DataNodes全部在线;

但是搭建HBase的时候,如果Master监听0.0.0.0,就无法作为clinet访问hdfs://0.0.0.0:9000;如果Master监听127.0.0.1,就无法作为server向外网(这里指除loopback之外)广播本机端口导致zookeeper通信失败。如果都配置为外网ip,则根本无法监听。。。

笔者使用的腾讯云服务器类似亚马逊的EC2,问题详见

Hadoop Wiki - BindException

以及:

腾讯云论坛 - 【已解决】ifconfig看不到外网ip

搞了两天最后发现是这个NAT公网ip的问题,tears~

服务器上即使全写公网ip也不行,因为这种奇葩的NAT转换会导致服务无法直接监听自己的公网ip,换虚拟机正常的局域网ip就没问题,祭奠这两天来对着黑窗口看过的所有日志😭

如果头铁的话,应该也可以配置这种带NAT的复杂的内外网网络集群,只是针对每台主机需要单独配置hosts和对应的监听/访问地址配置。

- 阅读剩余部分 -