我正在使用TensorFlow的全新Object Detection API,并决定在其他一些公开的数据集上进行训练.
我偶然偶然发现这个杂货数据集,其中包括超市货架上各种品牌香烟盒的图像,以及一个文本文件,其中列出了每个图像中每个香烟盒的边界框.数据集中已标注10个主要品牌,所有其他品牌均属于第11个"杂项"类别.
我按照他们的教程设法在这个数据集上训练模型.由于处理能力的限制,我只使用了数据集的三分之一,并进行了70:30分割,用于训练和测试数据.我使用了faster_rcnn_resnet101模型.配置文件中的所有参数与TF提供的默认参数相同.
在16491个全局步骤之后,我在一些图像上测试了模型,但我对结果不太满意 -
我遇到的另一个问题是模型从未检测到除标签1之外的任何其他标签
未从训练数据中检测到产品的裁剪实例
即使在负像中,它也可以99%的置信度检测香烟盒!
有人可以帮我解决问题吗?我该怎么做才能提高准确度?为什么它会检测到属于第1类的所有产品,尽管我已经提到总共有11个类?
编辑添加了我的标签贴图:
item {
id: 1
name: '1'
}
item {
id: 2
name: '2'
}
item {
id: 3
name: '3'
}
item {
id: 4
name: '4'
}
item {
id: 5
name: '5'
}
item {
id: 6
name: '6'
}
item {
id: 7
name: '7'
}
item {
id: 8
name: '8'
}
item {
id: …
Run Code Online (Sandbox Code Playgroud) python classification machine-learning object-detection tensorflow
在相应的多集包含元素的类型对象上应用next()
和prev()
函数的时间复杂度是多少?multiset<int>::iterator
N
据我所知,在STL中,多集合被实现为一个平衡的二进制搜索树,因此我希望每次操作时的复杂度为O(log N)(在最坏的情况下),以防我们遍历树直到找到合适的价值,但我有预感,这应该是平均O(1).
但是,如果树实现如下 - 当x
在平衡二叉搜索树中插入元素时,我们还可以检索树中小于x的最大数字,并且树中的最小数字大于x
O(log N).因此在理论上,我们可以让树中的每个节点都保持指向它next
和prev
元素的指针next()
,prev()
然后在每个查询的恒定时间内运行.
什么人可以分享一些关于什么的光?
我正在 Tensorflow 中通过不同长度的数字序列数据集训练循环神经网络,并且一直在尝试使用tf.data
API 来创建高效的管道。但是我似乎无法让这件事发挥作用
我的数据集是一个形状的 NumPy 数组,[10000, ?, 32, 2]
它以该.npy
格式作为文件保存在我的磁盘上。这里的?
表示元素在第二维中具有可变长度。10000 表示数据集中小批量的数量,32 表示小批量的大小。
我正在使用np.load
打开此数据集,并尝试tf.data.Dataset
使用该from_tensor_slices
方法创建一个对象,但似乎这仅在所有输入张量具有相同形状时才有效!
我试着阅读文档,但他们只给出了一个非常简单的例子。
所以 numpy 文件已经生成如下 -
dataset = []
for i in xrange(num_items):
#add an element of shape [?, 32, 2] to the list where `?` takes
# a random value between [1, 40]
dataset.append(generate_random_rnn_input())
with open('data.npy', 'w') as f:
np.save(f, dataset)
Run Code Online (Sandbox Code Playgroud)
下面给出的代码是我尝试创建一个tf.data.Dataset
对象
# dataset_list is a list …
Run Code Online (Sandbox Code Playgroud) 我在Ubuntu 14.04上使用PyPy 2.2.1。
我想xlrd
为我的程序使用模块,但是用pypy运行程序会导致导入错误。我该如何解决?
从这里学习OCaml .
我想验证我是否已经理解了这段OCaml代码是如何工作的
List.fold_left (fun acc x -> acc + x) 0 [ 1; 2; 3; 4 ]
Run Code Online (Sandbox Code Playgroud)
我有一种直觉,认为这相当于reduce
Python中的函数.具体来说,我认为它相当于
reduce(lambda x, y: x + y, [1, 2, 3])
Run Code Online (Sandbox Code Playgroud)
匿名函数接受两个参数- acc
和x
并返回一个值acc + x
.我理解,最初,第一个参数acc
将为0,但它如何知道第二个参数必须是列表的第一个元素?
我认为正在发生的是fold_left
为匿名函数提供两个参数,然后使用新参数递归调用自身,直到列表变空.
为了证实这一点,我看到了.
当我定义一个像let inc x = x + 1
我这样的函数val inc : int -> int = <fun>
但是在这种情况下签名是: ('a -> 'b -> 'a) -> 'a -> 'b list -> 'a …
OCaml中以下Python代码的等价物是什么?
lst = [0] * N
在我看来,OCaml没有超载*
列表.
我写了以下功能
let makeList i = if i = 0 then [] else 0 :: makeList (i-1)
Run Code Online (Sandbox Code Playgroud)
我可以使用for
循环执行某些操作或缩短代码吗?
我遇到了下面用C++编写的这个函数.trace()
使用任意数量的参数调用函数会打印每个参数的值以及格式中参数的名称
name1:value1 | name2:value2等等.
我想了解这段代码是如何工作的,什么有的像双&符号的语法&&
,__VA_ARGS__
意思.谢谢!
#define tr(...) trace(#__VA_ARGS__, __VA_ARGS__)
template <typename Arg1>
void trace(const char* name, Arg1&& arg1){
cout << name << " : " << arg1 << endl;
}
template <typename Arg1, typename... Args>
void trace(const char* names, Arg1&& arg1, Args&&... args){
const char* comma = strchr(names + 1, ',');
cout.write(names, comma-names) << " : " << arg1 << " | " ;
trace(comma+1, args...);
}
Run Code Online (Sandbox Code Playgroud)