具有挑战性背景的图像分割

数据挖掘 Python 分类 神经网络 scikit-学习 图像分类
2022-03-05 07:55:26

我正在研究一个动物分类问题,数据是从视频提要中提取的。录音是用钢笔制作的,所以这个问题在深色背景和许多阴影下非常具有挑战性:在此处输入图像描述

最初我尝试了 scikit-image,但后来有人帮助我使用了一个名为 crf-rnn ( http://crfasrnn.torr.vision/ ) 的高级工具,它可以很好地分割和标记图像中的对象。我做了以下事情:

import caffe
net = caffe.Segmenter(MODEL_FILE, PRETRAINED)
IMAGE_FILE = '0045_crop2.png'
input_image = caffe.io.load_image(IMAGE_FILE)
from PIL import Image as PILImage
image = PILImage.fromarray(np.uint8(input_image))
image = np.array(image)
mean_vec = [np.mean(image[:,:,vals]) for vals in range(image.shape[2])]
im = image[:, :, ::-1]
im = im - reshaped_mean_vec
cur_h, cur_w, cur_c = im.shape
pad_h = 750 - cur_h
pad_w = 750 - cur_w
print(pad_h, pad_w, "999")
im = np.pad(im, pad_width=((0, max(pad_h,0)), (0, max(pad_w,0)), (0, 0)), mode = 'constant', constant_values = 255)
segmentation = net.predict([im])
segmentation2 = segmentation[0:cur_h, 0:cur_w]

生成的图像分割相当差(尽管正确识别了两头奶牛): 在此处输入图像描述

我使用训练有素的 crf-rnn (MODEL_FILE, PRETRAINED),它适用于其他问题,但这个更难。我将不胜感激有关如何预处理此类图像以提取大多数奶牛形状的任何建议。

1个回答

如果您能准确解释您的目标是什么,我们将不胜感激:

  1. 你想识别你照片中的动物是什么?
  2. 你想数动物的数量吗?
  3. 你想得到图片中每只动物的位置吗?

无论如何,我知道你可以从谷歌或其他任何地方获得一些已经训练好的神经网络。这个神经网络可以与 caffe 一起使用,就像在 github 上的这个 google deepdream stuff 中一样(查看):

https://github.com/google/deepdream/blob/master/dream.ipynb

然后,如果您想突出显示或识别动物的位置,您会发现这篇文章很有启发性:

http://www.matthewzeiler.com/pubs/cvpr2010/cvpr2010.pdf

它解释了如何反转卷积网络来识别图像的哪一部分有助于识别内部的内容。找到的投影为您提供与第二张图片类似的东西(称为蒙版),但取决于您使用的神经网络,您可以获得更好的结果。