本文在ChatGPT 3.5的辅助下对CARPK数据集和PUCPR+数据集进行了预处理,包括划分数据集和将数据集内的框标注转换为点标注。
1 数据集介绍
在简书上找到了它们的下载地址:https://www.jianshu.com/p/f1b32e948136
CARPK数据集和PUCPR+数据集由Hsieh等人[1]在2017年中提出,其中CARPK数据集包含使用无人机拍摄的989张训练图像和459张测试图像,包含89777辆汽车的信息。PUCPR+数据集是原始PUCPR数据集的修订版本,由fxe相机捕获,包含100张训练图像和25张测试图像,共有17000辆汽车信息。上述数据集涉及车辆照明、黑暗程度和背景等方面的显著变化,部分展示图见图1和图2。

图1 CARPK数据集展示

图2 PUCPR+数据集展示
CARPK数据集和PUCPR+数据集内部结构一样,分为三个文件夹Annotations、Images和ImageSets。Annotations存放了各个图像的车辆框标注信息,与图像同名;Images中存放了图像;ImageSets存放了训练集和测试集的图像名,如图3所示。

图3 数据集结构图
2 划分数据集
根据ImageSets里的训练集和测试集信息将对应图片和txt提取出来便可将数据集进行划分。
首先询问ChatGPT:python实现,根据txt里存储的文件名称(无后缀)将一个文件夹中的文件提取到新的文件夹中。
答复如下:
要实现根据txt文件中存储的文件名称(无后缀)将一个文件夹中的文件提取到新的文件夹中,你可以使用Python的shutil库来完成。下面是一个示例代码,假设txt文件中每行包含一个文件名(无后缀),文件夹中的文件也都是以这些文件名命名的。
import os
import shutil
def extract_files(source_folder, destination_folder, txt_file_path):
with open(txt_file_path, 'r') as txt_file:
for line in txt_file:
file_name = line.strip() # Remove newline characters or spaces
source_file_path = os.path.join(source_folder, file_name)
destination_file_path = os.path.join(destination_folder, file_name)
try:
shutil.move(source_file_path, destination_file_path)
print(f"Moved {
file_name} to {
destination_folder}")
except FileNotFoundError:
print(f"File {
file_name} not found in {
source_folder}")
except shutil.Error as e:
print(f"Error moving {
file_name}: {
e}")
# 示例用法
source_folder = '/path/to/source_folder'
destination_folder = '/path/to/destination_folder'
txt_file_path = '/path/to/file_names.txt'
extract_files(source_folder, destination_folder, txt_file_path)
请注意,在运行代码之前,确保替换/path/to/source_folder、/path/to/destination_folder和/path/to/file_names.txt为实际的文件夹路径和txt文件路径。此代码将逐行读取txt文件中的文件名,并将相应的文件从源文件夹移动到目标文件夹。如果文件名对应的文件不存在或移动过程中出现错误,将会显示相应的错误消息。
然后本文根据ChatGPT提供的复制语法实现了将图片和标注文件提取到训练集文件夹和测试集文件夹的语法,详情看注释即可,值得注意的是本文将图片和标注文件分到两个文件夹中了。
# 根据给定的train.txt 和 test.txt提取图片
import os
import shutil
def select_and_copy_images(txt_file, source_folder, destination_folder_img,destination_folder_ann):
# 创建目标文件夹(如果不存在)
if not os.path.exists(destination_folder_img):
os.makedirs(destination_folder_img)
if not os.path.exists(destination_folder_ann):
os.makedirs(destination_folder_ann)
# 读取txt文件中的图片名
with open(txt_file, 'r') as file:
image_names = file.read().splitlines()
# 从源文件夹中选择并复制图片到目标文件夹
for image_name in i

本文介绍了如何利用ChatGPT辅助下对CARPK和PUCPR+数据集进行预处理,包括数据集划分、图片和标注文件提取,以及将框标注转换为点标注,通过Python脚本实现操作过程。
最低0.47元/天 解锁文章
6952





