一个检查图片和标注是否匹配的python脚本

5 篇文章 1 订阅
5 篇文章 0 订阅

在进行深度学习的时候,有时候图片进行标注的时候,可能会因为漏标或者其他原因导致图片和标注文件不匹配。这个工具就用来解决这个问题。
例如使用labelImg进行PascalVOC格式标注,图片(jpg格式)和标注文件(xml格式)分别处于不同的文件夹。本工具可以列出哪个图片文件缺少标注,或者哪个标注文件缺少图片。
本工具假设图片文件统一为jpg格式。

先看效果:
在这里插入图片描述
代码:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
###
# File: /Users/simonliu/Documents/python/clean_annotation/clean_annotation_files.py
# Project: /Users/simonliu/Documents/python/clean_annotation
# Created Date: 2022-06-03 23:18:09
# Author: Simon Liu
# -----
# Last Modified: 2022-06-04 17:02:33
# Modified By: Simon Liu
# -----
# Copyright (c) 2022 SimonLiu Inc.
# 
# May the force be with you.
# -----
# HISTORY:
# Date      	By	Comments
# ----------	---	----------------------------------------------------------
###
import sys,os
import glob

    
def check(path1,path2):
    filelist1 = glob.glob(f"{path1}/*.*")
    filelist2 = glob.glob(f"{path2}/*.*")
    filelist1_ext = os.path.splitext(os.path.basename(filelist1[0]))[1]
    # filelist1_ext = os.path.splitext(os.path.split(filelist1[0])[1])[1] //这种方式也可以
    print("filelist1_ext:",filelist1_ext)
    filelist1 = [os.path.splitext(os.path.basename(f))[0] for f in filelist1 if os.path.isfile(f)]

    filelist2_ext = os.path.splitext(os.path.basename(filelist2[0]))[1]
    # filelist2_ext = os.path.splitext(os.path.split(filelist2[0])[1])[1] //这种方式也可以
    print("filelist2_ext:",filelist2_ext)
    filelist2 = [os.path.splitext(os.path.basename(f))[0] for f in filelist2 if os.path.isfile(f)]
    
    for f in filelist1:
        if f in filelist2:
            pass
        else:
            print(f"{f}{filelist1_ext}在 {path2} 中找不到对应的文件")
    
    for f in filelist2:
        if f in filelist1:
            pass
        else:
            print(f"{f}{filelist2_ext}在 {path1} 中找不到对应的文件")
    
    

def main():
    img_path = input('请输入图片文件夹位置(输入Q或q退出):')
    if img_path == "Q" or img_path == 'q':
        sys.exit()
    # img_path = "~/Movies/cat_video_frames_picked_224x224"
    img_path = os.path.expanduser(img_path)
    annotation_path = input('请输入标注文件夹位置(输入Q或q退出):')
    if annotation_path == "Q" or annotation_path == 'q':
        sys.exit()
    annotation_path = os.path.expanduser(annotation_path)
    check(img_path,annotation_path)


if __name__ == '__main__':
    main()

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,在做一个 AI 问答网站时,你需要考虑以下几个步骤: 1. 选择一个领域:首先,你需要确定你想要让 AI 问答网站回答哪类问题。这可能是技术问题、历史问题、科学问题等等。 2. 收集数据:接下来,你需要收集足够多的数据来训练你的 AI 模型。这些数据可以来自网络或其他资料,但要确保数据质量较高且与你的领域相关。 3. 训练 AI 模型:使用 Python 中的机器学习库,如 TensorFlow、PyTorch 等,来训练一个 AI 模型。你可以使用问题和答案之间的对应关系来训练模型,以使它学会回答问题。 4. 构建网站:最后,你可以使用 Python 中的 Web 框架,如 Flask、Django 等,来构建一个网站。在网站中,你可以让用户输入问题,然后使用你的 AI 模型来生成答案。 希望这些信息能帮到你! ### 回答2: Python可以用来构建一个AI问答网站,实现智能问答的功能。下面我将介绍一些实现该功能的主要步骤。 首先,我们需要建立一个问题库,其中包含常见问题及其对应的答案。可以通过手动添加问题和答案,或从已有的知识库中提取问题和答案。可以使用Python编写脚本来处理和预处理问题库的数据。 接下来,我们需要使用自然语言处理(NLP)技术来处理用户输入的问题。可以使用Python中的NLP库,如NLTK、spaCy等来进行文本处理和分析,如分词、POS标注、语法分析等。这些处理步骤有助于理解用户的问题。 然后,我们需要为问题库中的每个问题和用户输入的问题计算相似度。可以使用NLP中的词向量模型(如Word2Vec、BERT)来计算文本之间的相似性。利用Python中的相似度计算库,如scikit-learn、gensim等来实现。 接着,我们需要选择一个合适的算法来匹配用户输入的问题和问题库中的问题,并返回最匹配的答案。可以使用基于规则的匹配算法、基于词向量相似度的匹配算法、基于BERT的匹配算法等。Python具有强大的机器学习和深度学习库,如scikit-learn、TensorFlow、PyTorch等,可以用来实现这些算法。 最后,我们需要将回答展示给用户。可以使用前端开发技术(如HTML、CSS、JavaScript)和Python中的Web框架(如Flask、Django)实现网站的展示和交互。可以将问题库中的答案与相关问题一起展示给用户,以提供更好的用户体验。 总而言之,利用Python编写一个AI问答网站需要用到自然语言处理、相似度计算、匹配算法、机器学习和前端开发等技术。Python作为一种强大的编程语言,提供了丰富的库和框架,使得构建一个智能问答网站成为可能。 ### 回答3: Python可以用来构建一个AI问答网站。首先,我们可以使用Python的Web框架(如Django或Flask)搭建一个简单的网站。然后,利用Python中的自然语言处理(NLP)库(如NLTK或Spacy)来处理用户输入的问题和回答。 在AI问答网站的后台,我们可以构建一个问题回答系统。这可以通过使用基于机器学习的方法,如文本分类或序列到序列模型来实现。使用Python中的深度学习框架(如TensorFlow或PyTorch),我们可以训练一个模型来根据用户输入的问题提供相关的答案。 为了让网站更加智能和准确,我们可以将模型与知识图谱或其他AI技术相结合。例如,可以使用Python中的图数据库(如Neo4j)来存储和查询知识图谱,以便提供更详细和有组织的答案。 此外,还可以利用Python中的其他功能来增强AI问答网站的用户体验。例如,可以使用Python的数据可视化库(如Matplotlib或Plotly)来呈现图表或结果,从而更直观地展示答案。同时,利用Python的自然语言生成(NLG)库(如NLTK或GPT)可以生成更人性化和流畅的回答。 综上所述,Python为构建一个AI问答网站提供了强大的功能和工具。通过使用Python的Web框架、NLP库、深度学习框架和其他相关技术,我们可以开发出一个智能、准确且具有良好用户体验的AI问答网站。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值