C5-fasterrcnn-小象cv-code

时间:2022-09-27 08:07:48

1、# Path to Shapes trained weights
SHAPES_MODEL_PATH = os.path.join(ROOT_DIR, "mask_rcnn_shapes.h5")

https://blog.csdn.net/u011574296/article/details/79903232    -- 训练自己的数据集
# Save weights,Typically not needed because callbacks save after every epoch,Uncomment to save manually
# model_path = os.path.join(MODEL_DIR, "mask_rcnn_shapes.h5")
# model.keras_model.save_weights(model_path)

2、cv2.copyMakeBorder(image, top=0, bottom=h-height, left=0, right=w-width,
                               borderType= cv2.BORDER_REFLECT101, value=[0,0,0] )
https://jingyan.baidu.com/article/e73e26c096074e24adb6a736.html
扩充图像的边界

3、去文本中句子开头与结尾的符号的。因为在文本中每行开头都有个"/n",代表换行。
for line in file:
line.strip().split()
这样就把每行的每个字符一个个分开,变成一个list。

4、
x = FixedBatchNormalization(axis=bn_axis, name='bn_conv1')(x)
https://blog.csdn.net/qq_34564612/article/details/79089482
公式如下:
y=γ(x-μ)/σ+β
其中x是输入,y是输出,μ是均值,σ是方差,γ和β是缩放(scale)、偏移(offset)系数。
一般来讲,这些参数都是基于channel来做的,比如输入x是一个16*32*32*128(NWHC格式)的feature map,那么上述参数都是128维的向量。其中γ和β是可有可无的,有的话,就是一个可以学习的参数(参与前向后向),没有的话,就简化成y=(x-μ)/σ。而μ和σ,在训练的时候,使用的是batch内的统计值,测试/预测的时候,采用的是训练时计算出的滑动平均值。
https://www.cnblogs.com/hrlnw/p/7227447.html

5、
python中的super( test, self).__init__()
首先找到test的父类(比如是类A),然后把类test的对象self转换为类A的对象,然后“被转换”的类A对象调用自己的__init__函数

6、
from __future__ import print_function
from __future__ import absolute_import
Python提供了__future__模块,把下一个新版本的特性导入到当前版本,于是我们就可以在当前版本中测试一些新版本的特性。

7、
考虑一批32个样本,其中每个样本是一个由16个维度组成的10个向量的序列。该层的批输入形状然后(32, 10, 16)。
可以这么理解,输入数据是一个特征方程,X1+X2+...+X10=Y,从矩阵的角度看,拿出未知数,就是10个向量,每个向量有16个维度,这16个维度是评价Y的16个特征方向。
TimeDistributed层的作用就是把Dense层应用到这10个具体的向量上,对每一个向量进行了一个Dense操作,假设是下面这段代码:
model = Sequential()model.add(TimeDistributed(Dense(8), input_shape=(10, 16)))
输出还是10个向量,但是输出的维度由16变成了8,也就是(32,10,8)。
事实上,TimeDistributed层给予了模型一种一对多,多对多的能力,增加了模型的维度。
https://blog.csdn.net/u012193416/article/details/79477220

8、

手工设置递归调用深度,方式为 import sys sys.setrecursionlimit(1000000) #例如这里设置为一百万

9、

https://yq.aliyun.com/articles/44851

from optparse import OptionParser
parser = OptionParser()
Python  有两个内建的模块用于处理命令行参数:一个是  getopt,另一个是  optparse,它功能强大,而且易于使用,可以方便地生成标准的、符合Unix/Posix 规范的命令行说明。

10、

https://blog.csdn.net/sxingming/article/details/52164249

pickle.dump(obj, file[, protocol])
序列化对象,并将结果数据流写入到文件对象中。参数protocol是序列化模式,默认值为0,表示以文本的形式序列化。protocol的值还可以是1或2,表示以二进制的形式序列化。
pickle.load(file)
反序列化对象。将文件中的数据解析为一个Python对象。
其中要注意的是,在load(file)的时候,要让python能够找到类的定义,否则会报错

11、

numpy.random.randint(low, high=None, size=None, dtype='l')
size : int or tuple of ints, optional
Output shape. If the given shape is, e.g., (m, n, k), then m * n * k samples are drawn. Default is None, in which case a single value is returned.

12、

from keras import backend
backend.set_image_dim_ordering('th')
检查 ~/.keras/keras.json文件
if "image_dim_ordering": is "th" and "backend": "theano", your input_shape must be (channels, height, width)
if "image_dim_ordering": is "tf" and "backend": "tensorflow", your input_shape must be (height

13、
https://blog.csdn.net/qq_16949707/article/details/53418912
python numpy.expand_dims的用法

14、

https://blog.csdn.net/qq_34564612/article/details/78881689
RPN
https://blog.csdn.net/sloanqin/article/details/51545125
首先,输入图片大小是 224*224*3(这个3是三个通道,也就是RGB三种)然后第一层的卷积核维度是 7*7*3*96 (所以大家要认识到卷积核都是4维的,在caffe的矩阵计算中都是这么实现的);
-->注意图片的第三个维度与卷积核第三个维度的关系
https://zhuanlan.zhihu.com/p/28585873
把bbox中的x1,x2,y1,y2分别通过缩放匹配到resize以后的图像。这里记做gta,尺寸为(num_of_bbox,4)。
-》对应resize后的bbox/bbox = resize之后的图/原图

for ix in range(output_width):     
   # x-coordinates of the current anchor box 
   x1_anc = downscale * (ix + 0.5) - anchor_x / 2
-》ix对应特征图上的每一个像素点,x1—anc对应到resize后的图的像素点

gt是预测出来的原图上的bbox在resize后图片上的bbox  -- 原图与resize后图片的比例
anchor是特征图上的anchor在resize后图片上的anchor  -- 特征图与resize后图片的比例

生成了num_anchors数量的channel,每个channel包含特征图(w*h)个sigmoid激活值,表明该anchor是否可用,与我们刚刚计算的y_rpn_cls对应。同样的方法,得到x_regr与刚刚计算的y_rpn_regr对应。

if len(neg_locs[0]) + num_pos > num_regions:
 val_locs = random.sample(range(len(neg_locs[0])), len(neg_locs[0]) - num_pos)
 y_is_box_valid[0, neg_locs[0][val_locs], neg_locs[1][val_locs], neg_locs[2][val_locs]]
-》neg远大于pos,所以将随机抽样到的neg-pos个的bbox设置为0

https://blog.csdn.net/JNingWei/article/details/78847696
RPN之后,proposal 成为 RoI (感兴趣区域) ,被输入 RoIPooling 或 RoIAlign 中进行 size上的归一化。当然,这些都是 RPN网络 之后 的操作了,严格来说并 不属于 RPN 的范围 了。

.k个proposal即k个reference boxes,每一个reference box又可以用一个scale,一个aspect_ratio和sliding window中的锚点唯一确定.所以,我们在后面说一个anchor,你就理解成一个anchor box 或一个reference box.作者在论文中定义k=9,即3种scales和3种aspect_ratio确定出当前sliding window位置处对应的9个reference boxes, 4*k个reg-layer的输出和2*k个cls-layer的score输出.对于一幅W*H的feature map,对应W*H*k个锚点.

y_rpn_cls = np.concatenate([y_is_box_valid, y_rpn_overlap], axis=1)
y_rpn_regr = np.concatenate([np.repeat(y_rpn_overlap, 4, axis=1), y_rpn_regr], axis=1)

这里是因为region proposal过程针对每一个锚点的每一个anchor都是有输出的,其实有很多anchor是不可用的,在y_is_box_valid那个array里面有记录。那么我们在计算loss时,也是不计算这些anchor的。因此我们在输出时,将与输出等形状的y_is_box_valid array拼接起来,计算loss时做一个对应元素的乘法,就可以舍去这些anchor产生的loss了。所以regr那里要将y_is_box_valid repeat 4倍,再与输出concatenate起来。

15、

https://blog.csdn.net/Seven_year_Promise/article/details/69360488  Resnet图片加参数

16、

ap = average_precision_score(T[key], P[key])
        print('{} AP: {}'.format(key, ap))
        all_aps.append(ap)
    print('mAP = {}'.format(np.mean(np.array(all_aps))))
--https://blog.csdn.net/u011501388/article/details/77962401  mAP的概念~序列

17、

problems:
padding的深度
from keras.models import Model

C5-fasterrcnn-小象cv-code的更多相关文章

  1. 用Spingboot获得微信小程序的Code以及openid和sessionkey

    ​ 这篇文章主要写的是怎么用spingboot来获取微信小程序的Code以及openid和sessionke,我觉得已经很详细了 我们要获得openid和sessionkey,就必须先要获得code, ...

  2. CV code references

    转:http://www.sigvc.org/bbs/thread-72-1-1.html 一.特征提取Feature Extraction:   SIFT [1] [Demo program][SI ...

  3. 微信小程序通过CODE换取session_key和openid

    微信小程序的用户信息获取需要请求微信的服务器,通过小程序提供的API在小程序端获取CODE,然后将CODE传入到我们自己的服务器,用我们的服务器来换取session_key和openid. 小程序端比 ...

  4. 微信小程序登录 code 40029 天坑

    微信登录时 code 大坑(服务端返回如下代码) {"errcode":40029,"errmsg":"invalid code, hints: [ ...

  5. lesson4-图像分类-小象cv

    CNN网络进化:AlexNet->VGG->GoogleNet->ResNet,深度8->19->22->152GoogleNet:Lsplit->trans ...

  6. 微信小程序传code 拿token 后台报40029 状态吗,是为什么?

    看看是不是code用了两次,还有种可能,检查一下后台的appid

  7. lesson8-图像问答-小象cv

    QA即图像问答:覆盖最全面的AI,ai完备性 动态模型:不同任务需要不同模型 or 不同细分任务需要不同模型参数 数据集: 1)VQA,显示图片+抽象场景:每个问题给10个不同答案:含有无图片答案(考 ...

  8. lesson7-图像描述 -小象cv

    2018-04-25朴素rcnn - 梯度消失严重LSTM长短时记忆模型,有效捕捉长时记忆包含四个神经元组:一个记忆神经元三个控制门神经元:输入.忘记.输出 注意:输入调制门.输出调制门 3个输入:前 ...

  9. lesson5-图像检测-小象cv

    R-CNN: 2014,cnn为Alexnet 训练流程: 1)在imagenet上对cnn模型pre-train 2)使用所有ss生成区域对1)进行fine-tune ~softmax改为21维度 ...

  10. resNet代码-小象/cv

    C:\yyy\ml\dengsong\ChinaHadoop\ChinaHadoop_C4-master\ChinaHadoop_C4-master\C4_ResNet_TF http://blog. ...

随机推荐

  1. 如何清除朗逸保养提示标志INSP

    自己消除insp小扳手方法 具体步骤如下1.插入钥匙,不要转动.2.按住显示屏下方右边的黑圆柱按钮 3.钥匙转到2档,通电自检,期间按住按钮不要松手4.过10秒左右,INSP消失,小扳手自己去除 不用 ...

  2. 基于Microsoft Azure、ASP.NET Core和Docker的博客系统

    欢迎阅读daxnet的新博客:一个基于Microsoft Azure.ASP.NET Core和Docker的博客系统   2008年11月,我在博客园开通了个人帐号,并在博客园发表了自己的第一篇博客 ...

  3. django 学习-10 Django多对多关系模型

    1.vim blog/models.py class   Author(models.Model): name = models.CharField(max_length=30) def unicod ...

  4. iOS开发网络篇—XML数据的解析

     iOS开发网络篇—XML数据的解析 iOS开发网络篇—XML介绍 一.XML简单介绍 XML:全称是Extensible Markup Language,译作“可扩展标记语言” 跟JSON一样,也是 ...

  5. Oracle:grouping和rollup

    Oracle grouping和rollup简单测试 SQL,,,) group by department_id order by department_id; DEPARTMENT_ID SUM( ...

  6. Kindle使用技巧

    Kindle使用技巧 使用kindle也有几年了,但是好多kindle的使用技巧还不知道,在网上看到了一些,整理了一下. 1. 格式转换 把PDF发送到Kindle的时候,邮件主题写convert,这 ...

  7. mysqldump备份错误:诡异的#mysql50#.mozilla数据库

    今天测试mysql自动备份功能 在red_hat_linux5系统下安装了mysql_5.5 系统提示执行脚本抛错, 手动执行脚本, 返回错误:mysqldump: Got error: 1102: ...

  8. POJ 3414 Pots(BFS)

    Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu Description You are g ...

  9. 使用beanstalkd实现定制化持续集成过程中pipeline

    持续集成是一种项目管理和流程模型,依赖于团队中各个角色的配合.各个角色的意识和配合不是一朝一夕能练就的,我们的工作只是提供一种方案和能力,这就是持续集成能力的服务化.而在做持续集成能力服务化的过程中, ...

  10. Linux下安装opencv模块

    最近微信上流行的给自己的头像加一顶圣诞帽,想用python写一个程序自己实现一下,其中需要用到opencv import cv2 现在记录一下如何在Linux系统(ubutun)下安装该模块: 参考了 ...