물체 인식용 데이터 세트 파일 이름 변경 프로그램
11331 단어 KerasPython3YOLOv3TensorFlowssd
목적
오브젝트 인식 데이터 세트에서 파일 이름을 적절하게 설정하면 어떤 이미지에 어떤 오브젝트가 있는지 알 수 없으므로 데이터 세트를 관리하기가 어렵습니다.
또한, 라벨링 후 물체 인식 데이터 세트의 이름을 변경할 때에는 이미지 이름, 주석 파일 이름 및 주석 파일의 내용의 세 가지를 변경해야합니다. 특히 주석 파일의 내용은 쉽게 변경할 수 없습니다.
이번에는, 이 3개를 단번에 변경하는 프로그램을 작성한다.
어노테이션 파일
주석 파일의 내용
사용한 것
라벨링 소프트웨어
물체 인식 알고리즘
[YOLO]htps : // 기주 b. 이 m / q q ぇ ええ / 케라 s- 3
[SSD]htps : // 기주 b. 코 m / ry 코 v8 / SD_ 케라 s
처리 흐름
라벨링 소프트웨어
물체 인식 알고리즘
[YOLO]htps : // 기주 b. 이 m / q q ぇ ええ / 케라 s- 3
[SSD]htps : // 기주 b. 코 m / ry 코 v8 / SD_ 케라 s
처리 흐름
다음은 ../dataset 내에 존재하는 파일을 object라는 이름으로 변경한 예이다.
결과
어노테이션 파일명, 이미지명, 어노테이션 파일의 내용의 3개를 동시에 변경할 수 있었다.
画像
주석 파일의 내용
결론
라벨링 후의 파일명 변경이라고 하는 귀찮은 작업을 자동화할 수 있었다.
또, 이번은 예로서 object라는 이름으로 변경했지만, dog, cat과 같은 이름으로 변경하는 것으로 한눈에 데이터 세트를 관리할 수 있게 된다.
프로그램
이 프로그램은 github에 게시되었습니다 htps : // 기주 b. 코 m / pt 야스 / Rename_i mg_an
물체 인식의 데이터 세트의 형식에 맞추어 JPEGImages와 Annotations에 존재하는 동일명 파일(확장자를 제외한)의 파일명을 입력한 것으로 변경하고 있다. 또, 어노테이션 파일의 내용은 path 태그와 filename 태그만을 변경하고 있다.
이름이 같은 것이 없으면 프로그램이 종료됩니다.
rename_img_ann.pyimport os
import argparse
import xml.etree.ElementTree as ET
class rename(object):
def __init__(self,root,name):
self.root = root
self.name = name
self.Annotations = os.path.join(root,'Annotations')
self.JPEGImages = os.path.join(root,'JPEGImages')
def get_files(self):
#ファイル一覧取得
file_list_ = os.listdir(self.Annotations)
#拡張子を抜いてファイル一覧作成
file_list = list(map(lambda x: os.path.splitext(x)[0],file_list_))
file_list.sort()
#jpgとxmlを対応づけたまま名前変更
for i in range (len(file_list)):
file_name = self.name + str(i)
img_path_ = self.JPEGImages + "/" + file_list[i]+".jpg"
img_path = self.JPEGImages + "/" + file_name+".jpg"
ann_path_ = self.Annotations + "/" + file_list[i]+".xml"
ann_path = self.Annotations + "/" + file_name+".xml"
if img_path_ != img_path:
os.rename(img_path_,img_path)
if ann_path_ != ann_path:
os.rename(ann_path_,ann_path)
tree = ET.parse(ann_path)
tag_path = tree.find("path")
tag_path.text = img_path
tag_name = tree.find("filename")
tag_name.text = file_name + ".jpg"
tree.write(ann_path,"utf-8",True)
def main():
path = input("Please input file path : ")
name = input("please input new name : ")
rn = rename(path,name)
rn.get_files()
if __name__ == '__main__':
main()
라벨링 후의 파일명 변경이라고 하는 귀찮은 작업을 자동화할 수 있었다.
또, 이번은 예로서 object라는 이름으로 변경했지만, dog, cat과 같은 이름으로 변경하는 것으로 한눈에 데이터 세트를 관리할 수 있게 된다.
프로그램
이 프로그램은 github에 게시되었습니다 htps : // 기주 b. 코 m / pt 야스 / Rename_i mg_an
물체 인식의 데이터 세트의 형식에 맞추어 JPEGImages와 Annotations에 존재하는 동일명 파일(확장자를 제외한)의 파일명을 입력한 것으로 변경하고 있다. 또, 어노테이션 파일의 내용은 path 태그와 filename 태그만을 변경하고 있다.
이름이 같은 것이 없으면 프로그램이 종료됩니다.
rename_img_ann.pyimport os
import argparse
import xml.etree.ElementTree as ET
class rename(object):
def __init__(self,root,name):
self.root = root
self.name = name
self.Annotations = os.path.join(root,'Annotations')
self.JPEGImages = os.path.join(root,'JPEGImages')
def get_files(self):
#ファイル一覧取得
file_list_ = os.listdir(self.Annotations)
#拡張子を抜いてファイル一覧作成
file_list = list(map(lambda x: os.path.splitext(x)[0],file_list_))
file_list.sort()
#jpgとxmlを対応づけたまま名前変更
for i in range (len(file_list)):
file_name = self.name + str(i)
img_path_ = self.JPEGImages + "/" + file_list[i]+".jpg"
img_path = self.JPEGImages + "/" + file_name+".jpg"
ann_path_ = self.Annotations + "/" + file_list[i]+".xml"
ann_path = self.Annotations + "/" + file_name+".xml"
if img_path_ != img_path:
os.rename(img_path_,img_path)
if ann_path_ != ann_path:
os.rename(ann_path_,ann_path)
tree = ET.parse(ann_path)
tag_path = tree.find("path")
tag_path.text = img_path
tag_name = tree.find("filename")
tag_name.text = file_name + ".jpg"
tree.write(ann_path,"utf-8",True)
def main():
path = input("Please input file path : ")
name = input("please input new name : ")
rn = rename(path,name)
rn.get_files()
if __name__ == '__main__':
main()
import os
import argparse
import xml.etree.ElementTree as ET
class rename(object):
def __init__(self,root,name):
self.root = root
self.name = name
self.Annotations = os.path.join(root,'Annotations')
self.JPEGImages = os.path.join(root,'JPEGImages')
def get_files(self):
#ファイル一覧取得
file_list_ = os.listdir(self.Annotations)
#拡張子を抜いてファイル一覧作成
file_list = list(map(lambda x: os.path.splitext(x)[0],file_list_))
file_list.sort()
#jpgとxmlを対応づけたまま名前変更
for i in range (len(file_list)):
file_name = self.name + str(i)
img_path_ = self.JPEGImages + "/" + file_list[i]+".jpg"
img_path = self.JPEGImages + "/" + file_name+".jpg"
ann_path_ = self.Annotations + "/" + file_list[i]+".xml"
ann_path = self.Annotations + "/" + file_name+".xml"
if img_path_ != img_path:
os.rename(img_path_,img_path)
if ann_path_ != ann_path:
os.rename(ann_path_,ann_path)
tree = ET.parse(ann_path)
tag_path = tree.find("path")
tag_path.text = img_path
tag_name = tree.find("filename")
tag_name.text = file_name + ".jpg"
tree.write(ann_path,"utf-8",True)
def main():
path = input("Please input file path : ")
name = input("please input new name : ")
rn = rename(path,name)
rn.get_files()
if __name__ == '__main__':
main()
Reference
이 문제에 관하여(물체 인식용 데이터 세트 파일 이름 변경 프로그램), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ptxyasu/items/572063ad54bacdd1662d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)