赞
踩
在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中构建整个过程。在以下各节中,我们将向你展示我们的工具如何使你:
手动标记自己的图像
通过迁移学习建立有效的分割模型
可视化模型及其结果
以Docker映像形式共享你的项目
该工具的主要优点是易于使用,并且与现有的数据科学工作流程很好地集成在一起。通过交互式小部件和命令提示符,我们构建了一种用户友好的方式来标记图像和训练模型。
最重要的是,所有内容都可以在Jupyter notebook上运行,从而快速,轻松地建立模型,而没有太多开销。
最后,通过在Python环境中工作并使用Tensorflow和Matplotlib等标准库,可以将该工具很好地集成到现有的数据科学工作流程中,使其非常适合科学研究等用途。
例如,在微生物学中,分割细胞的显微镜图像是非常有用的。然而,随着时间的推移,跟踪细胞很可能需要分割成百上千的图像,这可能很难手动完成。在本文中,我们将使用酵母细胞的显微镜图像作为数据集,并展示我们如何构建工具来区分背景、母细胞和子细胞。
现有许多工具可以为图像创建带标签的掩膜,包括Labelme,ImageJ甚至是图形编辑器GIMP。这些都是很棒的工具,但是它们无法集成到Jupyter notebook中,这使得它们很难与许多现有工作流程一起使用。
幸运的是,Jupyter Widgets使我们能够轻松制作交互式组件并将其与我们其余的Python代码连接。
要在笔记本中创建训练掩膜,我们要解决两个问题:
用鼠标选择图像的一部分
轻松在图像之间切换并选择要标记的类别
为了解决第一个问题,我们使用了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/17
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。