」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 使用 Python 和 Tkinter 進行高效能影像標記:簡化 AI 資料集準備的指南

使用 Python 和 Tkinter 進行高效能影像標記:簡化 AI 資料集準備的指南

發佈於2024-11-08
瀏覽:313

Efficient Image Labeling with Python and Tkinter: A Guide to Simplifying Dataset Preparation for AI

训练人工智能模型时,特别是在计算机视觉等领域,最耗时的任务之一是数据集准备。无论您是为图像分类、对象检测还是任何其他任务构建模型,标记图像通常是确保模型能够准确识别模式所必需的。手动标记大型数据集可能会变得相当麻烦,这就是使用 PythonTkinter 包构建的 图像标签桌面应用程序 发挥作用的地方。

在本文中,我们将探讨该工具如何简化图像标记过程,使其更易于开发人员和数据科学家等使用。该工具是开源的,可在 GitHub 上获取,这对于任何研究需要标记图像数据集的 AI 模型的人来说都是宝贵的资源。

介绍

图像标记桌面应用程序旨在帮助用户更有效地标记大型图像数据集。该应用程序使用 Tkinter(Python 的标准 GUI 库)构建,提供了一个简单的图形界面来为图像分配标签并根据这些标签重命名文件。

无论您是开发用于识别人脸、检测物体还是对产品进行分类的 AI 模型,您可能都需要手动标记数据。该过程通常涉及打开图像文件、查看它们,然后对它们进行分类或标记,这可能需要大量时间。有了这个应用程序,您可以简化该过程。

该应用程序允许用户查看图像,从预定义列表中选择标签,并自动重命名图像文件以反映标签 - 所有这些都通过干净简单的界面进行。该项目可以轻松定制以适应特定的工作流程或数据集。

为什么图像标签很重要

在机器学习中,特别是在监督学习中,模型的性能取决于标记数据的质量。这使得标记过程成为开发高性能模型的关键部分。标记不良的数据可能会引入噪声,从而导致不正确的预测或错误分类,从而降低模型的准确性。

医学成像自动驾驶产品识别等领域,标记良好的数据集是必须的。因此,能够帮助标记和组织大型数据集的工具对于任何人工智能开发人员来说都是无价的。

图像标签应用程序的主要功能

图像标签桌面应用程序提供了多种功能,使其成为人工智能从业者的必备工具:

  1. 用户友好的界面:使用 Tkinter 构建,界面干净简单,使用户可以轻松浏览图像标签过程。
  2. 标签选择:用户可以预先定义一组标签,例如“猫”、“狗”、“车”等,并快速将这些标签应用到图像上。
  3. 自动重命名:标记后,图像文件名会自动更新以反映分配的标签。
  4. 自定义目录:用户可以为输入图像和标记输出指定目录,从而轻松管理数据集。
  5. 实时反馈:该工具通过显示标记图像并确认应用的标签来提供即时反馈。
  6. 批量标注:您可以按顺序标注多张图像,而无需事后手动整理文件。

设置应用程序

首先,您需要克隆 GitHub 存储库并安装必要的依赖项。该应用程序是使用 Python 3.xTkinter 构建的,并且您可以选择使用 PyInstaller 将其编译为独立的可执行文件。

第 1 步:克隆存储库

您可以通过运行以下命令从 GitHub 克隆存储库:

git clone https://github.com/imankarimi/image-labeling.git

第2步:安装依赖项

如果你没有安装Tkinter,你可以通过以下方式安装:

pip install tk

如果您打算将应用程序编译成可执行文件以便于分发,您还需要 PyInstaller:

pip install pyinstaller

应用程序如何工作

设置应用程序后,运行它将打开一个图形界面,您可以在其中加载包含图像的目录。然后,您可以循环浏览图像、应用标签,并让应用程序自动重命名文件。

以下是该过程如何工作的详细说明:

  1. 选择输入目录:选择包含要标记的图像的文件夹。
  2. 分配标签: 使用下拉菜单或按钮选择为每个图像分配预定义标签。
  3. 文件重命名:应用程序根据分配的标签重命名图像文件,以便为您的模型训练组织它们。
  4. 保存和组织:标记后,图像可以保存到新目录中,以便以后在模型训练或评估中使用。

图形用户界面示例:

主 GUI 窗口是使用 Tkinter Frame、Label 和 Button 小部件构建的,这些小部件允许用户导航应用程序并与应用程序交互。这是核心逻辑的片段:

import tkinter as tk
from tkinter import filedialog
import os

class ImageLabelingApp:
    def __init__(self, root):
        self.root = root
        self.root.title('Image Labeling App')
        self.image_label = tk.Label(root, text="No image loaded")
        self.image_label.pack()

        self.select_folder_button = tk.Button(root, text="Select Folder", command=self.select_folder)
        self.select_folder_button.pack()

        self.label_buttons = []
        for label in ["Cat", "Dog", "Car"]:  # Example labels
            btn = tk.Button(root, text=label, command=lambda l=label: self.apply_label(l))
            self.label_buttons.append(btn)
            btn.pack()

    def select_folder(self):
        folder_selected = filedialog.askdirectory()
        self.load_images_from_folder(folder_selected)

    def load_images_from_folder(self, folder_path):
        self.image_paths = [os.path.join(folder_path, f) for f in os.listdir(folder_path) if f.endswith(".png")]
        self.current_image = 0
        self.show_image(self.image_paths[self.current_image])

    def show_image(self, image_path):
        self.image_label.config(text=image_path)

    def apply_label(self, label):
        current_image_path = self.image_paths[self.current_image]
        new_image_name = f"{label}_{os.path.basename(current_image_path)}"
        new_image_path = os.path.join(os.path.dirname(current_image_path), new_image_name)
        os.rename(current_image_path, new_image_path)
        self.current_image  = 1
        if self.current_image 



在此代码中,显示选定文件夹中的图像,用户可以通过单击按钮分配预定义的标签。该应用程序通过附加所选标签来重命名图像。

为您的项目定制

该应用程序的优势之一是其灵活性。您可以通过编辑预定义标签列表、修改 GUI 布局或添加新功能(例如:

)轻松地为您的项目自定义它
  • 添加键盘快捷键以更快地分配标签。
  • 每个图像允许多个标签
  • 实现撤消功能以恢复错误标签。

未来的增强功能

有一些潜在的改进可以添加到应用程序中:

  • 与云存储集成:允许用户直接从AWS S3、Google Cloud Storage等云服务标记图像。
  • 高级图像预览: 提供放大和缩小功能以进行更详细的标记,特别适用于医学成像等数据集。
  • 数据增强选项:集成旋转、缩放或翻转等数据增强方法,以便在标记时使用,以增加数据集多样性。

结论

图像标签桌面应用程序简化并自动化了手动标记图像的繁琐过程,使其成为人工智能模型开发的宝贵工具。通过使用 Tkinter,该应用程序是轻量级的、跨平台的,并且可以轻松修改以适应各种用例。

有关更多信息并为该项目做出贡献,请查看 GitHub 存储库:GitHub 上的图像标签应用程序。

版本聲明 本文轉載於:https://dev.to/imankarimi/efficient-image-labeling-with-python-and-tkinter-a-guide-to-simplifying-dataset-preparation-for-ai-24od?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3