通过迁移学习建立一个易于使用的图像分割工具

在Jupyter notebook中为图像添加标签,预测新图像并可视化神经网络(并使用Docker Hub共享它们!)

作者|Jenny Huang 编译|Flin 来源|towardsdatascience

作者:Jenny Huang, Ian Hunt-Isaak, William Palmer

GitHub Repo: https://github.com/ianhi/AC295-final-project-JWI

介绍

在新图像上训练图像分割模型可能会令人生畏,尤其是当你需要标记自己的数据时。为了使此任务更容易,更快捷,我们构建了一个用户友好的工具,可让你在Jupyter notebook中构建整个过程。在以下各节中,我们将向你展示我们的工具如何使你:

  1. 手动标记自己的图像

  2. 通过迁移学习建立有效的分割模型

  3. 可视化模型及其结果

  4. 以Docker映像形式共享你的项目

该工具的主要优点是易于使用,并且与现有的数据科学工作流程很好地集成在一起。通过交互式小部件和命令提示符,我们构建了一种用户友好的方式来标记图像和训练模型。

最重要的是,所有内容都可以在Jupyter notebook上运行,从而快速,轻松地建立模型,而没有太多开销。

最后,通过在Python环境中工作并使用Tensorflow和Matplotlib等标准库,可以将该工具很好地集成到现有的数据科学工作流程中,使其非常适合科学研究等用途。

例如,在微生物学中,分割细胞的显微镜图像是非常有用的。然而,随着时间的推移,跟踪细胞很可能需要分割成百上千的图像,这可能很难手动完成。在本文中,我们将使用酵母细胞的显微镜图像作为数据集,并展示我们如何构建工具来区分背景、母细胞和子细胞。

1.标签

现有许多工具可以为图像创建带标签的掩膜,包括Labelme,ImageJ甚至是图形编辑器GIMP。这些都是很棒的工具,但是它们无法集成到Jupyter notebook中,这使得它们很难与许多现有工作流程一起使用。

幸运的是,Jupyter Widgets使我们能够轻松制作交互式组件并将其与我们其余的Python代码连接。

要在笔记本中创建训练掩膜,我们要解决两个问题:

  1. 用鼠标选择图像的一部分

  2. 轻松在图像之间切换并选择要标记的类别

为了解决第一个问题,我们使用了Matplotlib小部件后端和内置的LassoSelector。

LassoSelector会处理一条线以显示你所选择的内容,但是我们需要一些自定义代码来将掩膜绘制为覆盖层:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import LassoSelector
from matplotlib.path import Path

class image_lasso_selector:
    def __init__(self, img, mask_alpha=.75, figsize=(10,10)):
        """
        img must have shape (X, Y, 3)
        """
        self.img = img
        self.mask_alpha = mask_alpha
        plt.ioff() # see https://github.com/matplotlib/matplotlib/issues/17013
        self
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值