Stable Yogi Leather-Dress-Collection数据预处理教程:准备高质量训练数据集
Stable Yogi Leather-Dress-Collection数据预处理教程准备高质量训练数据集想用Stable Diffusion微调出专属于你的皮革连衣裙模型第一步也是最关键的一步就是准备一个高质量的数据集。很多人觉得模型训练很神秘其实成败的70%都取决于你喂给它的数据质量。一个杂乱、标注不清的数据集再强大的模型也学不出好效果。今天我就带你手把手走一遍数据预处理的完整流程从零开始为你的“皮革连衣裙”模型准备一份干净、精准的训练食粮。整个过程就像给食材做预处理清洗、切配、调味每一步都决定了最终菜肴的成败。我们不需要高深的数学跟着步骤做就行。1. 环境准备与工具安装工欲善其事必先利其器。我们先来把需要用到的工具装好。整个过程在普通的电脑上就能完成主要用到Python和一些图像处理库。首先确保你的电脑上已经安装了Python建议3.8或以上版本。然后我们通过pip来安装几个核心的安装包。打开你的命令行终端Windows上是CMD或PowerShellMac/Linux上是Terminal输入以下命令pip install pillow pandas tqdm opencv-python简单解释一下这几个包是干什么的Pillow (PIL)Python里最常用的图像处理库用来打开、保存、调整图片尺寸。Pandas处理表格数据的神器我们用它来管理图片和文本标签的对应关系。tqdm给循环加个进度条让你清楚知道处理到哪一步了避免干等着心慌。OpenCV-python功能强大的计算机视觉库这里我们主要用它来做一些更复杂的图像检查和去重。安装过程通常很快。如果遇到网络问题可以尝试在后面加上-i https://pypi.tuna.tsinghua.edu.cn/simple来使用国内的镜像源加速下载。2. 第一步收集你的原始图片数据集的质量源头是关键。你需要收集尽可能多的、高质量的皮革连衣裙图片。去哪里找电商平台这是最丰富的来源。可以在各大电商网站搜索“皮革连衣裙”、“皮裙”收集商品主图、详情图、模特图。注意尽量选择背景干净、主体突出的图片。开源数据集像Hugging Face、Kaggle上有时会有时尚品类数据集可以看看有没有符合要求的子集。自有图片如果你自己就是设计师或商家那你的产品图库就是最好的资源。收集时要注意什么多样性尽量涵盖不同款式A字、包臀、长款、短款、颜色黑色、棕色、彩色、材质光泽哑光、亮面以及穿着场景。高质量优先选择高清、无大量水印、非拼接的图片。分辨率最好在512x512像素以上。合法性确保你拥有图片的使用权或者使用明确标注可商用的开源图片避免侵权风险。建议先在电脑上建立一个项目文件夹比如叫做leather_dress_dataset然后在里面创建一个raw_images子文件夹把所有收集到的原始图片都放进去。3. 第二步清洗与整理图片收集来的图片往往鱼龙混杂这一步就是“摘菜洗菜”把坏的、没用的挑出去。3.1 统一格式与基础清洗我们写一个简单的Python脚本来做第一批次自动化处理。在项目文件夹下创建一个名为01_clean_images.py的文件并输入以下代码import os from PIL import Image import hashlib from tqdm import tqdm # 设置路径 raw_image_dir “./raw_images” cleaned_image_dir “./cleaned_images” os.makedirs(cleaned_image_dir, exist_okTrue) # 支持的图片格式 valid_extensions (.png, .jpg, .jpeg, .webp, .bmp) # 用于记录图片哈希值以便发现完全相同的重复图片 image_hashes {} duplicates_removed 0 print(“开始清洗图片...”) for filename in tqdm(os.listdir(raw_image_dir)): filepath os.path.join(raw_image_dir, filename) # 1. 检查文件格式 if not filename.lower().endswith(valid_extensions): print(f”跳过非图片文件: {filename}”) continue try: # 2. 打开并验证图片完整性 with Image.open(filepath) as img: img.verify() # 验证文件是否损坏 # 需要重新打开因为verify()会关闭文件 img Image.open(filepath) # 3. 计算图片哈希一种“指纹” with open(filepath, rb) as f: file_hash hashlib.md5(f.read()).hexdigest() # 4. 去重如果哈希值已存在则是完全相同的图片 if file_hash in image_hashes: print(f”发现重复图片已跳过: {filename} (与 {image_hashes[file_hash]} 重复)”) duplicates_removed 1 continue image_hashes[file_hash] filename # 5. 转换为RGB模式避免RGBA等模式导致问题 if img.mode ! RGB: img img.convert(RGB) # 6. 保存到清洗后的文件夹 new_filename f”image_{len(image_hashes):04d}.jpg” # 统一重命名为 image_0001.jpg 格式 save_path os.path.join(cleaned_image_dir, new_filename) img.save(save_path, JPEG, quality95) except Exception as e: print(f”处理图片 {filename} 时出错: {e}已跳过。”) print(f”清洗完成共处理 {len(image_hashes)} 张唯一图片移除了 {duplicates_removed} 张重复图片。”)运行这个脚本它会把raw_images里的图片统一转换成RGB模式的JPG格式自动去掉损坏的和完全相同的图片并按照顺序重命名方便后续管理。3.2 可选进一步视觉去重有时候两张图片内容几乎一样只是尺寸或压缩质量不同哈希值会不一样。我们可以用OpenCV进行更智能的相似度去重。创建一个02_deduplicate_similar.py文件import cv2 import os from tqdm import tqdm # 设置路径 image_dir “./cleaned_images” # 相似度阈值越高越严格1.0为完全相同 SIMILARITY_THRESHOLD 0.95 def extract_features(img_path): 提取图片的特征这里使用简单的直方图对比 img cv2.imread(img_path) if img is None: return None # 调整到统一小尺寸进行比较加快速度 img cv2.resize(img, (64, 64)) # 转换为HSV颜色空间并计算直方图 hsv cv2.cvtColor(img, cv2.COLOR_BGR2HSV) hist cv2.calcHist([hsv], [0, 1], None, [50, 60], [0, 180, 0, 256]) cv2.normalize(hist, hist) return hist print(“开始基于视觉相似度去重...”) image_files [f for f in os.listdir(image_dir) if f.endswith((.jpg, .png))] features [] valid_files [] # 提取所有图片特征 for f in tqdm(image_files, desc”提取特征”): feat extract_features(os.path.join(image_dir, f)) if feat is not None: features.append(feat) valid_files.append(f) to_remove set() # 比较每对图片 for i in tqdm(range(len(features)), desc”比较相似度”): if i in to_remove: continue for j in range(i1, len(features)): if j in to_remove: continue # 计算直方图相关性 similarity cv2.compareHist(features[i], features[j], cv2.HISTCMP_CORREL) if similarity SIMILARITY_THRESHOLD: to_remove.add(j) print(f”图片 {valid_files[j]} 与 {valid_files[i]} 高度相似相似度{similarity:.2f}将被移除。”) # 移动或删除相似图片 for idx in sorted(to_remove, reverseTrue): file_to_remove os.path.join(image_dir, valid_files[idx]) # 可以选择移动到另一个文件夹而不是直接删除 backup_dir “./duplicate_backup” os.makedirs(backup_dir, exist_okTrue) os.rename(file_to_remove, os.path.join(backup_dir, valid_files[idx])) print(f”去重完成移除了 {len(to_remove)} 张高度相似的图片。”)运行这个脚本后cleaned_images文件夹里剩下的就是经过初步清洗和去重的图片了。建议你花点时间人工快速浏览一遍手动剔除那些明显不相关比如根本不是连衣裙或质量极差的图片。4. 第三步撰写精准的文本描述Caption这是整个预处理中最重要、最费神但也最值得投入的一步。模型是通过“看图识字”来学习的你给的“字”描述越准它学得越好。什么是好的描述对于皮革连衣裙一个好的描述应该像给一个盲人朋友形容这件衣服主体一件黑色哑光皮质连衣裙款式细节修身包臀短款V字领长袖背部有隐形拉链材质与质感柔软的小羊皮材质表面有细微的纹理感场景与风格模特在都市街头拍摄搭配高跟鞋呈现简约酷飒风格撰写原则客观在前主观在后先描述图中客观存在的内容物体、属性再补充风格、氛围。从主体到细节先点明“皮革连衣裙”再描述款式、颜色、材质最后是场景、模特姿态等。使用自然语言就像你平时说话一样不要用一堆逗号分隔的关键词堆砌。保持一致性与特异性同一种款式描述方式尽量一致独特的细节一定要写出来。你可以用Excel、记事本或者专门的标注工具来写。这里我建议用一个简单的.csv文件来管理。创建一个captions.csv文件用Excel或文本编辑器打开格式如下image_namecaptionimage_0001.jpg一件黑色亮面皮质连衣裙修身短款方领无袖模特站立背景简洁时尚大片风格。image_0002.jpg棕色哑光皮质的A字型连衣裙中长款带有腰带模特在咖啡馆外坐着自然光线下显得质感柔软。……小技巧如果图片很多可以考虑使用图像描述Image Captioning模型先批量生成一个初稿然后再人工逐一校对和润色这能极大提升效率。比如使用BLIP等开源模型。5. 第四步统一图片尺寸与格式Stable Diffusion模型通常在固定的分辨率下训练效果最好比如512x512或768x768。我们需要把所有图片调整到统一尺寸。创建一个03_resize_images.py脚本from PIL import Image import os from tqdm import tqdm input_dir “./cleaned_images” output_dir “./final_images” target_size (512, 512) # 目标尺寸可根据你的需求修改 os.makedirs(output_dir, exist_okTrue) print(f”开始将图片统一调整至 {target_size}...”) for filename in tqdm(os.listdir(input_dir)): if not filename.lower().endswith((‘.jpg’, ‘.jpeg’, ‘.png’)): continue input_path os.path.join(input_dir, filename) output_path os.path.join(output_dir, filename) try: with Image.open(input_path) as img: # 调整大小使用LANCZOS高质量下采样滤波器 img_resized img.resize(target_size, Image.Resampling.LANCZOS) # 保存为jpg格式 if not filename.lower().endswith(‘.jpg’): output_path output_path.rsplit(‘.’, 1)[0] ‘.jpg’ img_resized.save(output_path, ‘JPEG’, quality95) except Exception as e: print(f”处理 {filename} 时出错: {e}”) print(“图片尺寸调整完成”)运行后所有图片都会变成512x512像素并保存在final_images文件夹中。6. 第五步划分训练集与验证集我们不能把所有数据都用来训练需要留出一小部分作为“期末考试卷”验证集在训练过程中检查模型是否真的学会了而不是死记硬背。创建一个04_split_dataset.py脚本按比例例如90%训练10%验证随机划分import pandas as pd import os import shutil from sklearn.model_selection import train_test_split # 读取标注文件 df pd.read_csv(‘captions.csv’) # 确保你的captions.csv文件在项目根目录 image_dir “./final_images” output_dir “./dataset” train_dir os.path.join(output_dir, “train”) val_dir os.path.join(output_dir, “validation”) os.makedirs(train_dir, exist_okTrue) os.makedirs(val_dir, exist_okTrue) # 划分数据集 train_df, val_df train_test_split(df, test_size0.1, random_state42) # 10%作为验证集 print(f”总样本数: {len(df)}”) print(f”训练集: {len(train_df)}”) print(f”验证集: {len(val_df)}”) # 复制图片到对应文件夹并保存新的标注文件 def copy_files(file_df, target_img_dir, target_csv_path): os.makedirs(target_img_dir, exist_okTrue) for _, row in file_df.iterrows(): img_src os.path.join(image_dir, row[‘image_name’]) img_dst os.path.join(target_img_dir, row[‘image_name’]) if os.path.exists(img_src): shutil.copy2(img_src, img_dst) else: print(f”警告图片 {row[‘image_name’]} 不存在于 {image_dir}”) file_df.to_csv(target_csv_path, indexFalse) copy_files(train_df, train_dir, os.path.join(output_dir, “train.csv”)) copy_files(val_df, val_dir, os.path.join(output_dir, “validation.csv”)) print(“数据集划分完成”) print(f”最终数据集结构已保存在 ‘{output_dir}’ 文件夹中。”)运行后你会得到一个dataset文件夹里面结构清晰dataset/ ├── train/ │ ├── image_0001.jpg │ ├── image_0002.jpg │ └── … ├── train.csv ├── validation/ │ ├── image_0089.jpg │ └── … └── validation.csv7. 总结好了到这里一份为Stable Diffusion微调准备的、高质量的皮革连衣裙数据集就准备好了。整个过程回顾一下其实就是四件核心事找好图、洗干净、说清楚、分好类。我自己的经验是在“说清楚”写描述这一步花的时间最多但回报也最大。你描述得越细致比如“带细微褶皱的哑光皮革”和“光滑如镜的亮面皮革”模型将来就能越精准地生成你想要的质感。刚开始可能觉得有点繁琐但处理完几十张图后你就会找到节奏。最后检查一下你的dataset文件夹确保图片和csv文件里的名字能对上验证集里确实有一些不同款式的图片。接下来你就可以带着这个精心准备的数据集去进行实际的模型微调训练了。记住好的数据是成功的一半这一步的耐心投入绝对会在你看到生成的第一张惊艳的皮革连衣裙图片时感到值得。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2461306.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!