重要提示
您正在查看 NeMo 2.0 文档。此版本对 API 和一个新库 NeMo Run 进行了重大更改。我们目前正在将 NeMo 1.0 中的所有功能移植到 2.0。有关先前版本或 2.0 中尚不可用的功能的文档,请参阅 NeMo 24.07 文档。
美学分类器#
概述#
美学分类器可用于评估图像的主观质量。NeMo Curator 集成了 改进的美学预测器,该预测器输出 0-10 的分数,其中 10 表示美观。
用例#
按美学质量过滤在生成图像管道中很常见。例如,Stable Diffusion 在训练期间逐步按美学分数进行过滤。
先决条件#
请务必查看图像管理入门页面,以安装您需要的一切。
用法#
美学分类器是一个线性分类器,它将 OpenAI CLIP ViT-L/14 图像嵌入作为输入。此模型可通过 vit_large_patch14_clip_quickgelu_224.openai
标识符在 TimmImageEmbedder
中获得。首先,我们可以计算这些嵌入,然后我们可以执行分类。
from nemo_curator import get_client
from nemo_curator.datasets import ImageTextPairDataset
from nemo_curator.image.embedders import TimmImageEmbedder
from nemo_curator.image.classifiers import AestheticClassifier
client = get_client(cluster_type="gpu")
dataset = ImageTextPairDataset.from_webdataset(path="/path/to/dataset", id_col="key")
embedding_model = TimmImageEmbedder(
"vit_large_patch14_clip_quickgelu_224.openai",
pretrained=True,
batch_size=1024,
num_threads_per_worker=16,
normalize_embeddings=True,
)
aesthetic_classifier = AestheticClassifier()
dataset_with_embeddings = embedding_model(dataset)
dataset_with_aesthetic_scores = aesthetic_classifier(dataset_with_embeddings)
# Metadata will have a new column named "aesthetic_score"
dataset_with_aesthetic_scores.save_metadata()
主要参数#
batch_size=-1
是可选的批大小参数。默认情况下,它将一次处理碎片中的所有嵌入。由于美学分类器是线性模型,因此通常可以。
性能注意事项#
由于美学模型非常小,您可以将其与嵌入模型同时加载到 GPU 上,并在计算嵌入后直接执行推理。查看此示例
from nemo_curator import get_client
from nemo_curator.datasets import ImageTextPairDataset
from nemo_curator.image.embedders import TimmImageEmbedder
from nemo_curator.image.classifiers import AestheticClassifier
client = get_client(cluster_type="gpu")
dataset = ImageTextPairDataset.from_webdataset(path="/path/to/dataset", id_col="key")
embedding_model = TimmImageEmbedder(
"vit_large_patch14_clip_quickgelu_224.openai",
pretrained=True,
batch_size=1024,
num_threads_per_worker=16,
normalize_embeddings=True,
classifiers=[AestheticClassifier()],
)
dataset_with_aesthetic_scores = embedding_model(dataset)
# Metadata will have a new column named "aesthetic_score"
dataset_with_aesthetic_scores.save_metadata()