Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Localization 如何用卷积神经网络对噪声圆进行分类和定位[tensorflow]_Localization_Tensorflow_Geometry_Conv Neural Network - Fatal编程技术网

Localization 如何用卷积神经网络对噪声圆进行分类和定位[tensorflow]

Localization 如何用卷积神经网络对噪声圆进行分类和定位[tensorflow],localization,tensorflow,geometry,conv-neural-network,Localization,Tensorflow,Geometry,Conv Neural Network,我的任务是通过神经网络在医学图片(x射线)中找到并定位圆圈(标记)。 图片[800x600,灰度图像]非常嘈杂,包含骨骼和圆圈/标记等结构 首先,我构建了一个用于训练分类器的图片数据集。 我从800x600图片中保存包含大小为28x28(标签=标记)的圆圈的区域。圆圈本身具有不同的强度级别()有时圆圈部分被骨骼覆盖。此外,我还保存了一些不包含圆的区域(label=NoMarker)。 每个训练图像的大小均为28x28。 (数据库100'000张图片大小为28x28,一半带圆圈,另一半不带圆圈)。

我的任务是通过神经网络在医学图片(x射线)中找到并定位圆圈(标记)。 图片[800x600,灰度图像]非常嘈杂,包含骨骼和圆圈/标记等结构

首先,我构建了一个用于训练分类器的图片数据集。 我从800x600图片中保存包含大小为28x28(标签=标记)的圆圈的区域。圆圈本身具有不同的强度级别()有时圆圈部分被骨骼覆盖。此外,我还保存了一些不包含圆的区域(label=NoMarker)。 每个训练图像的大小均为28x28。 (数据库100'000张图片大小为28x28,一半带圆圈,另一半不带圆圈)。我将所有这些[28x28]图像和标签保存为与minst数据集(idx3/idx1)相同的格式

我开始基于tensorflow mnist_softmax示例构建分类器,获得了大约90%的准确率

代码如下所示:

# Read my  Datasets, code adapted from tensorflow.examples.tutorials.mnist:
# train_image [28x28] pixel, and the labels
mnist = read_data_sets(FLAGS.data_dir, one_hot=True)
sess = tf.InteractiveSession()

# Create the model
x = tf.placeholder(tf.float32, [None, 784])
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
y = tf.nn.softmax(tf.matmul(x, W) + b)
# Define loss and optimizer
y_ = tf.placeholder(tf.float32, [None, 10])
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(cross_entropy)

# Train
tf.initialize_all_variables().run()
for i in range(2000):
  batch_xs, batch_ys = mnist.train.next_batch(2000)
  train_step.run({x: batch_xs, y_: batch_ys})

# Test trained model
correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
print("Accuracy"+ str(accuracy.eval({x: mnist.test.images, y_: mnist.test.labels})))
在此之后,我尝试定位圆中的像素。 对于本地化,我采用滑动窗口方法。这意味着,我运行另一个800x600图片,始终拍摄滑动窗口(28x28)中的区域,作为训练神经网络的输入。NN的结果是该窗口可能包含一个圆。此结果保存在矩阵/图片中:

本地化结果:

[已编辑]:我已将图片中正确分类的圆圈标记为红色。灰度的强度表示圆的概率[黑色像素=圆内的100%,白色像素=像素内的0%]。所以在最好的情况下,应该只有红点,图片的其余部分应该是白色的

在我看来,学习过程中似乎不涉及圆的几何/曲线。 我是机器学习领域的新手。是否有可能/模式我可以用于此任务。 顺致敬意,
凯特,你能澄清一下吗?如果您的问题基本上是“有更好的方法吗?”那么请明确您当前解决方案中的不足之处。当前方法中的问题是,例如,骨骼的边界也被检测为圆形(即使骨骼的形状是直线)。也许你知道一个比mnist更好的神经网络,它可以学习更多关于圆的几何知识?使用一个网络,例如使用更多层(卷积、最大池)可以帮助解决这个问题吗?我只是对这个问题进行了一般性的评论,因为它看起来很有趣,但在当前的形式下,它可能不适合StackOverflow的Q&a形式。也许你可以编辑这篇文章,包括一些你的代码,或者在图片上指出假阳性区域。是的,你能详细描述一下你拥有的数据集吗?你说你有800*600张图像,但训练数据由28*28张图像的补丁组成,其中有一个标签指示补丁是否包含一个圆?当你写
y=tf.placeholder(tf.float32,[None,10])
时,我想你没有10个标签,只有2个?你能澄清一下吗?如果您的问题基本上是“有更好的方法吗?”那么请明确您当前解决方案中的不足之处。当前方法中的问题是,例如,骨骼的边界也被检测为圆形(即使骨骼的形状是直线)。也许你知道一个比mnist更好的神经网络,它可以学习更多关于圆的几何知识?使用一个网络,例如使用更多层(卷积、最大池)可以帮助解决这个问题吗?我只是对这个问题进行了一般性的评论,因为它看起来很有趣,但在当前的形式下,它可能不适合StackOverflow的Q&a形式。也许你可以编辑这篇文章,包括一些你的代码,或者在图片上指出假阳性区域。是的,你能详细描述一下你拥有的数据集吗?你说你有800*600张图像,但训练数据由28*28张图像的补丁组成,其中有一个标签指示补丁是否包含一个圆?当你写
y=tf.placeholder(tf.float32,[None,10])
时,我想你没有10个标签,只有2个?