C5-fasterrcnn-小象cv-code
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的更多相关文章
- 用Spingboot获得微信小程序的Code以及openid和sessionkey
这篇文章主要写的是怎么用spingboot来获取微信小程序的Code以及openid和sessionke,我觉得已经很详细了 我们要获得openid和sessionkey,就必须先要获得code, ...
- CV code references
转:http://www.sigvc.org/bbs/thread-72-1-1.html 一.特征提取Feature Extraction: SIFT [1] [Demo program][SI ...
- 微信小程序通过CODE换取session_key和openid
微信小程序的用户信息获取需要请求微信的服务器,通过小程序提供的API在小程序端获取CODE,然后将CODE传入到我们自己的服务器,用我们的服务器来换取session_key和openid. 小程序端比 ...
- 微信小程序登录 code 40029 天坑
微信登录时 code 大坑(服务端返回如下代码) {"errcode":40029,"errmsg":"invalid code, hints: [ ...
- lesson4-图像分类-小象cv
CNN网络进化:AlexNet->VGG->GoogleNet->ResNet,深度8->19->22->152GoogleNet:Lsplit->trans ...
- 微信小程序传code 拿token 后台报40029 状态吗,是为什么?
看看是不是code用了两次,还有种可能,检查一下后台的appid
- lesson8-图像问答-小象cv
QA即图像问答:覆盖最全面的AI,ai完备性 动态模型:不同任务需要不同模型 or 不同细分任务需要不同模型参数 数据集: 1)VQA,显示图片+抽象场景:每个问题给10个不同答案:含有无图片答案(考 ...
- lesson7-图像描述 -小象cv
2018-04-25朴素rcnn - 梯度消失严重LSTM长短时记忆模型,有效捕捉长时记忆包含四个神经元组:一个记忆神经元三个控制门神经元:输入.忘记.输出 注意:输入调制门.输出调制门 3个输入:前 ...
- lesson5-图像检测-小象cv
R-CNN: 2014,cnn为Alexnet 训练流程: 1)在imagenet上对cnn模型pre-train 2)使用所有ss生成区域对1)进行fine-tune ~softmax改为21维度 ...
- resNet代码-小象/cv
C:\yyy\ml\dengsong\ChinaHadoop\ChinaHadoop_C4-master\ChinaHadoop_C4-master\C4_ResNet_TF http://blog. ...
随机推荐
- linux shell 编程参考
#!/bin/bash my_fun() { echo "$#" } echo 'the number of parameter in "$@" is '$(m ...
- 1-1Controller之Request
laravel5.5版本 //路由: Route::any('request1',['uses'=>'StudentController@request1']); //控制器中的方法: publ ...
- learning hdmi edid protocol
referenc: https://en.wikipedia.org/wiki/Extended_Display_Identification_Data
- 尚学堂java 参考答案 第八章
一.选择题 1.BD 解析:B:Integer是对象,所以默认的应该是null对象.D使用的是自动装箱 2.A 解析:String类的对象是final型,是不能修改的,concat()方法是生成一个新 ...
- compile openjdk7 in ubuntu OS
success: openjdk version "1.7.0-internal"OpenJDK Runtime Environment (build 1.7.0-internal ...
- MATLAB 批量处理图片
function resizephotos(directory, wh, isrecursive, isoverwrite, savetopath, supportFormat) % resizeph ...
- lnmp 基础设置
1.设置ci.tp.laravel重写,去掉index.php location / { try_files $uri $uri/ /index.php?$query_string; } 2.开启ph ...
- Cracking The Coding Interview 4.6
//原文: // // Design an algorithm and write code to find the first common ancestor of two nodes in a b ...
- Android : 添加apk私有权限
一.Android的系统权限: apk在安装时,Android 为每个软件包提供唯一的 Linux 用户 ID.此 ID 在软件包在该设备上的使用寿命期间保持不变.在不同设备上,相同软件包可能有不同的 ...
- Android : 修改内核源码 and 编译、打包成新的boot.img
一.Android内核源码的下载: 1.Google GIT地址: $ git clone https://android.googlesource.com/kernel/common.git $ g ...