ドレスコードの解読👗 自動ファッションアイテム検出のためのディープラーニング
Dress Code Deciphering Deep Learning for Automatic Fashion Item Detection
活気溢れる電子商取引の世界では、ファッション業界は独自のランウェイです。しかし、デザイナーの目ではなく、ディープラーニング(DL)の精度でこのランウェイのドレスコードを解読できたらどうでしょうか?今日は、この興味深い可能性の糸を解き明かします。事前学習済みモデルとPyTorch Lightning¹を使用して、製品のタグ付けプロセスを自動化し、時間のかかる作業を迅速かつ効率的なプロセスに変換します。これはファッションのDLの世界へのバックステージパスだけでなく、電子商取引の運用革命の第一列席にもなります。ですので、ディープラーニングがデジタルファッションのドレスコードを解読する方法を見たいと思ったら、準備を整えましょう!
このブログは、「事前学習済みモデルの微調整」と「推論」の2つの主要なパートに分かれています。「事前学習済みモデルの微調整」パートは次のセクションから始まり、PyTorch LightningのFine-tuningセクションまで続きます。ここでは、事前学習済みモデルを調整して特定のファッションアイテムの検出に適したものにする方法を詳しく説明します。一方、「推論」パートは、複数のファッションアイテムの検出にモデルをすぐに利用したい方に捧げられています。モデルを実際に動かしてみたい方は、直接「推論」セクションに進んでください。
ステージの準備
ファッションショーを始めるために、Python環境をPyTorch Lightning¹で設定する必要があります。PyTorch Lightningは、コードの管理を効率化し、モデルのトレーニングを加速するPyTorchのラッパーです。さらに、以下の必要なパッケージもトレーニングと推論に組み込まれます:
# パッケージをインストールpip install torch==2.0.0pip install pytorch-lightning==2.0.1pip install datasets==2.11.0pip install transformers==4.30.1pip install huggingface_hub==0.14.1
次に、以下のモジュールをインポートしましょう:
- 将来のアプリケーションを支える大規模言語モデル(LLM)の力
- AIハイパーソナライゼーションとは何ですか?利点、事例、倫理的懸念
- MPT-30B:モザイクMLは新しいLLMを使用して、NLPの限界を em>GPT-3を凌駕します
# データ操作と可視化のための必要なライブラリをインポートimport randomimport numpy as npimport matplotlib.pyplot as pltimport shutilimport globimport os# 画像処理のためのライブラリfrom PIL import Image, ImageDraw# Hugging Faceモデルハブからファイルをダウンロードするためのユーティリティfrom huggingface_hub import hf_hub_download# データをトレーニングセットとテストセットに分割するための関数from sklearn.model_selection import train_test_split# データセットの処理のためのライブラリimport datasetsfrom datasets import load_dataset, concatenate_datasets, DatasetDict# ハイパフォーマンストレーニングのためのPyTorch Lightningimport lightning as plfrom lightning import Trainer# ニューラルネットワークの構築とトレーニングのためのPyTorchimport torchimport torch.nn as nn# データセットをイテラブルに作成するためのDataLoaderfrom torch.utils.data import DataLoader# 画像変換のためのライブラリfrom torchvision import transformsfrom torchvision.transforms import ToPILImage, ToTensor# モデルの処理のためのTransformersライブラリfrom transformers import AutoModelForObjectDetectionfrom transformers import YolosFeatureExtractor, YolosForObjectDetection
データの読み込み
このプロジェクトのデータセットは、Hugging FaceにホストされているFashionpediaデータセット²で、複数のファッションオブジェクトのバウンディングボックスのアノテーションを含む46,000以上の画像が含まれています。このデータセットはFashionpedia³のサブセットであり、各画像にはセグメンテーションマスクと細かいファッション属性のアノテーションが付いています。ファッションアイテムの検出タスクにぴったりの豊富なデータセットです。
データセットを使用するために、Hugging Faceのデータセットライブラリを使用してロードしましょう。このプロジェクトでは、ファッションアイテムの検出タスクをデモンストレーションするためにデータセットの30%しか使用していません:
# トレーニングデータセットの30%をロードdataset = load_dataset("detection-datasets/fashionpedia", split='train[:30%]')# 分割指標を生成train_val_test_split = dataset.train_test_split(test_size=0.2, seed=42) # トレーニングデータ80%、検証とテストデータ20%val_test_split = train_val_test_split['test'].train_test_split(test_size=0.5, seed=42) # 20%を検証とテストに等分割# 分割結果をDatasetDictに保存final_splits = DatasetDict({ 'train': train_val_test_split['train'], 'val': val_test_split['train'], 'test': val_test_split['test']})# DatasetDictをトレーニング、検証、テストデータセットに分解train_dataset, val_dataset, test_dataset = final_splits['train'], final_splits['val'], final_splits['test']
私たちの訓練、検証、テストデータセットは以下のようになります:
(Dataset({ features: ['image_id', 'image', 'width', 'height', 'objects'], num_rows: 10949 }), Dataset({ features: ['image_id', 'image', 'width', 'height', 'objects'], num_rows: 1369 }), Dataset({ features: ['image_id', 'image', 'width', 'height', 'objects'], num_rows: 1369 }))
また、1つの画像の詳細を表示しましょう:
test_dataset[0]
{'image_id': 14991, 'image': <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=676x1024>, 'width': 676, 'height': 1024, 'objects': {'bbox_id': [117814, 117815, 117816, 117817, 117818], 'category': [23, 23, 6, 1, 14], 'bbox': [[174.0, 862.0, 299.0, 969.0], [309.0, 634.0, 420.0, 759.0], [127.0, 530.0, 380.0, 903.0], [226.0, 221.0, 420.0, 610.0], [254.0, 97.0, 395.0, 199.0]], 'area': [6797, 7354, 35017, 30388, 6175]}}
データセットの内容は、そのデータセットカード²に記載されている以下のフィールドを持っています:
{'image_id': Value(dtype='int64'),'image': Image(decode=True),'width': Value(dtype='int64'),'height': Value(dtype='int64'),'objects': Sequence(feature={ 'bbox_id': Value(dtype='int64'), 'category': ClassLabel(num_classes=46, names=['shirt, blouse', 'top, t-shirt, sweatshirt', 'sweater', 'cardigan', 'jacket', 'vest', 'pants', 'shorts', 'skirt', 'coat', 'dress', 'jumpsuit', 'cape', 'glasses', 'hat', 'headband, head covering, hair accessory', 'tie', 'glove', 'watch', 'belt', 'leg warmer', 'tights, stockings', 'sock', 'shoe', 'bag, wallet', 'scarf', 'umbrella', 'hood', 'collar', 'lapel', 'epaulette', 'sleeve', 'pocket', 'neckline', 'buckle', 'zipper', 'applique', 'bead', 'bow', 'flower', 'fringe', 'ribbon', 'rivet', 'ruffle', 'sequin', 'tassel']), 'bbox': Sequence(feature=Value(dtype='float64'), length=4), 'area': Value(dtype='int64')}, length=-1)}
データフィールド
このデータセットには、以下のフィールド²があります:
- image_id:各画像に割り当てられた一意の数値ID。
- image:画像を表すPIL.Image.Imageクラスのインスタンス。
- width:画像の幅。
- height:画像の高さ。
- objects:画像に存在するオブジェクトのバウンディングボックスに関連するメタデータを含む辞書。
- bbox_id:各バウンディングボックス注釈に割り当てられた一意の数値ID。
- category:オブジェクトのカテゴリ。
- area:バウンディングボックスによってカバーされる領域。
- bbox:オブジェクトのバウンディングボックスの座標(Pascal VOC形式)。
学習済みモデルと転移学習
前述のように、このブログでは学習済みモデルの力を利用します。これらのモデルは大規模なデータセットで訓練され、既に多くの特徴とパターンを学習しています。これらのモデルを使用することで、その学習結果を活用し、特定のタスクに適用することができます。これは、タスクのデータ量が限られている場合や時間と計算リソースを節約したい場合に特に有用です。
この場合、私たちはYOLOs-Fashionpedia⁴モデルを使用します。このモデルは、YOLO-Small⁵アーキテクチャで事前学習されています。このモデルは既に様々なファッションアイテムを検出することを学習しており、私たちのタスクのための完璧な出発点となります。
ヘルパー関数
このプロジェクトの実行中に、Valentina Feruere VegaのGitHubリポジトリ⁶で重要なリソースを発見しました。このリポジトリは、Fashionpediaデータセットのファインチューニングに関する包括的なガイドを提供しており、このプロジェクトにおいて重要なプロセスでした。私はデータセットの処理を合理化し、YOLO-Smallモデルと互換性のある形式にするために、いくつかのヘルパー関数をまとめました。これらの関数は、Fashionpediaデータセットで使用されるバウンディングボックス(bbox)の形式(x1、x2、y1、y2)とYOLO-Smallで必要な形式(x_center、y_center、width、height)の間の差異を調整するために特に設計されています:
def xyxy_to_xcycwh(box): x1、y1、x2、y2 = box.unbind(dim=1) width = x2-x1 height = y2-y1 xc = x1 + width*0.5 yc = y1 + height*0.5 b = [xc、yc、width、height] return torch.stack(b、dim=1)def cxcywh_to_xyxy(x): x_c、y_c、w、h = x.unbind(1) x1 = x_c - 0.5 * w y1 = y_c - 0.5 * h x2 = x_c + 0.5 * w y2 = y_c + 0.5 * h b = [x1、y1、x2、y2] return torch.stack(b、dim=1)
データセットからの画像の前処理には、PILImageオブジェクトとして格納されている画像をYOLOS Feature Extractor
を利用します。この特徴抽出器は、画像を数値値で構成されるテンソル形式に変換します。この前処理ステップは、YOLOSフレームワーク内での画像のさらなる分析や操作のために不可欠です。
# フィーチャーエクストラクタの読み込み:yolos-smallfeature_extractor = YolosFeatureExtractor.from_pretrained('hustvl/yolos-small', size=816, max_size=864)
これで、モデルと互換性のある以下の変換を適用できます:
def rescale_bboxes(out_bbox、size、down=True): img_w、img_h = size if down: b = torch.Tensor(out_bbox) / torch.tensor([img_w、img_h、img_w、img_h]、dtype=torch.float32) if not down: b = torch.Tensor(out_bbox) * torch.tensor([img_w、img_h、img_w、img_h]、dtype=torch.float32) return bdef transform(batch): inputs = {} inputs['pixel_values'] = feature_extractor(batch['image']、return_tensors='pt')['pixel_values'] labels = [] bbox = [rescale_bboxes(batch['objects'][i]['bbox']、(batch['width'][i]、batch['height'][i])) for i in range(len(batch['objects']))] bbox = [xyxy_to_xcycwh(torch.Tensor(bbox_i)) for bbox_i in bbox] labels.append({ "boxes": bbox、 "class_labels": [object['category'] for object in batch['objects']]、 "image_id": torch.Tensor([batch['image_id']]).int()、 "area": [object['area'] for object in batch['objects']]、 "iscrowd": torch.Tensor([0 for _ in batch['objects']]).int()、 "orig_size": torch.Tensor([(batch['width']、batch['height'])]).int()、 "size": torch.Tensor([inputs['pixel_values'].shape[1:]])[0].int()、 }) inputs['labels'] = labels return inputs
# モデルと互換性のあるように変換を適用するprepared_train = train_dataset.with_transform(transform)prepared_val = val_dataset.with_transform(transform)prepared_test = test_dataset.with_transform(transform)
バッチでトレーニングプロセスを合理化するために、コレータ関数が必要です。この関数は、通常はこの文脈で辞書型のリストを受け取り、そのデータをスタックされた単一の入力に変換します。言い換えれば、辞書型のリストが、各キーの値がベクトルになるように辞書に変換されます。このコレータ関数は、データをバッチに対応できる構造に整理することで、効率的にモデルをトレーニングする上で重要な役割を果たします。
def collate_fn(batch): collated = {} collated["pixel_values"] = feature_extractor.pad([item['pixel_values'] for item in batch]、return_tensors="pt")['pixel_values'] collated["labels"] = [] for item in batch: item['labels']['boxes'] = torch.stack(item['labels']['boxes'])[0] item['labels']['area'] = torch.Tensor(item['labels']['area']) item['labels']['class_labels'] = torch.Tensor(item['labels']['class_labels'])[0] item['labels']['class_labels'] = item['labels']['class_labels'].type(torch.LongTensor) collated["labels"].append(item['labels']) return collated
# モデルにバッチを読み込むために使用される以下のコードBATCH_SIZE = 1train_dataloader = DataLoader(prepared_train、collate_fn=collate_fn、batch_size=BATCH_SIZE)val_dataloader = DataLoader(prepared_val、collate_fn=collate_fn、batch_size=BATCH_SIZE)test_dataloader = DataLoader(prepared_test、collate_fn=collate_fn、batch_size=BATCH_SIZE)
PYTORCH LIGHTNINGを使用したファインチューニング
舞台が設定され、出演者が準備が整ったら、リハーサルの時間です。
ファインチューニングは、モデルのためのドレスリハーサルのようなものです。PyTorch Lightning¹を使用して、特定のタスクでモデルをトレーニングし、画像中のファッションアイテムから学習させます。これにより、実際のパフォーマンスの時には、モデルがファッションアイテムを正確に識別・分類する準備が整っています。
これを実現するために、PyTorch Lightning¹を使用します。PyTorch Lightning¹は、トレーニングプロセスを簡素化するPyTorchのラッパーです。PyTorch Lightning¹では、トレーニングループの定義、オプティマイザの設定、学習率スケジューラのセットアップなどを簡単に行うことができます。さらに、メトリクスのログ記録、チェックポイントの保存なども組み込まれています。
既にファッションアイテム検出タスクでファインチューニングされたモデル、YOLOs-Fashionpedia⁴をファインチューニングしてみましょう。以下に、ファインチューニングプロセスの簡略化されたバージョンを示します:
class Yolos(pl.LightningModule):
def __init__(self, lr, weight_decay):
super().__init__()
self.model = AutoModelForObjectDetection.from_pretrained("valentinafeve/yolos-fashionpedia",
num_labels=46,
ignore_mismatched_sizes=True)
self.lr = lr
self.weight_decay = weight_decay
def forward(self, pixel_values):
outputs = self.model(pixel_values=pixel_values)
return outputs
def common_step(self, batch, batch_idx):
pixel_values = batch["pixel_values"]
labels = [{k: v.to(self.device) for k, v in t.items()} for t in batch["labels"]]
outputs = self.model(pixel_values=pixel_values, labels=labels)
loss = outputs.loss
loss_dict = outputs.loss_dict
return loss, loss_dict
def training_step(self, batch, batch_idx):
loss, loss_dict = self.common_step(batch, batch_idx)
self.log("training_loss", loss)
for k,v in loss_dict.items():
self.log("train_" + k, v.item())
return loss
def validation_step(self, batch, batch_idx):
loss, loss_dict = self.common_step(batch, batch_idx)
self.log("validation_loss", loss)
for k,v in loss_dict.items():
self.log("validation_" + k, v.item())
return loss
def test_step(self, batch, batch_idx):
loss, loss_dict = self.common_step(batch, batch_idx)
self.log("test_loss", loss)
for k,v in loss_dict.items():
self.log("test_" + k, v.item())
return loss
def configure_optimizers(self):
optimizer = torch.optim.AdamW(self.parameters(), lr=self.lr, weight_decay=self.weight_decay)
return optimizer
def train_dataloader(self):
return train_dataloader
def val_dataloader(self):
return val_dataloader
def test_dataloader(self):
return test_dataloader
# ログを保存して後で表示するための設定
logger = CSVLogger("logs", name="detr_logs")
転移学習を使用してYOLO-Smallなどの事前学習済みモデルをファインチューニングする際には、低い学習率とウェイト減衰が利用され、モデルが既に学習した有用な特徴を保持し、新しいタスクでの過学習を防ぎます。低い学習率は、トレーニング中の重みの更新が増分的であり、既に学習したパターンを壊さずにモデルが新しいタスクに微妙に適応できるようにします。一方、ウェイト減衰は、小さな重みを維持することで、モデルが特定の特徴に過度に依存せずに一般化された状態を保つため、過学習を防ぎます。これらのパラメータは、事前学習済みモデルの力を最大限に活用し、新しいタスクに効果的に適合させるためのバランスを取ります。
# モデルを定義し、学習率とウェイト減衰を設定する
model = Yolos(lr=2.5e-5, weight_decay=1e-4)
説明のために、モデルを最大3ステップでトレーニングしました。
# PyTorch Lightningを使用してトレーニングする
trainer = pl.Trainer(max_epochs=3, logger=logger, accelerator="cuda", devices=1)
trainer.fit(model, train_dataloader, val_dataloader)
モデルのトレーニング後、保存して推論に使用することができます。
# モデルを保存する
trainer.save_checkpoint('./model/fashion_model.ckpt')
カテゴリのグループ化
モデルが微調整されたら、ショータイムです!ファッションアイテムをモデル化した人の画像が与えられると、モデルはそれらのアイテムを46の異なるクラスに検出し、分類します。
ただし、生のクラスラベルを出力することは、結果をユーザーフレンドリーな方法で表示するためには適していないかもしれません。そのため、これらのクラスを「トップスとアウターウェア」、「ボトムス」、「フットウェア」といったより広いカテゴリにグループ化することにしました。例えば、クラス「シャツ、ブラウス」と「トップ、Tシャツ、スウェットシャツ」は共に「トップスとアウターウェア」のカテゴリに属しています。
以下は、グループマッピングを作成するためのPythonコードです:
# タイプに基づいてカテゴリをグループ化するgroup_tops_outerwear = ['シャツ、ブラウス', 'トップ、Tシャツ、スウェットシャツ', 'セーター', 'カーディガン', 'ジャケット', 'ベスト', 'コート', 'ケープ', 'ドレス', 'ジャンプスーツ']group_bottoms = ['パンツ', 'ショートパンツ', 'スカート']group_footwear = ['靴', '靴下']group_accessories = ['眼鏡', '帽子', 'ヘッドバンド、頭部カバー、髪飾り', 'ネクタイ', '手袋', '時計', 'ベルト', 'レッグウォーマー', 'タイツ、ストッキング', 'バッグ、財布', 'スカーフ', '傘']group_clothing_details = ['フード', '襟', 'ラペル', 'エポレット', '袖', 'ポケット', 'ネックライン', 'バックル', 'ジッパー']group_embellishments = ['アップリケ', 'ビーズ', 'リボン', '花', 'フリンジ', 'リボン', 'リベット', 'フリル', 'シーケンス', 'タッセル']group_mapping = {}for category in group_tops_outerwear: group_mapping[category] = 'トップスとアウターウェア'for category in group_bottoms: group_mapping[category] = 'ボトムス'for category in group_footwear: group_mapping[category] = 'フットウェア'for category in group_accessories: group_mapping[category] = 'アクセサリー'for category in group_clothing_details: group_mapping[category] = '衣料品の詳細'for category in group_embellishments: group_mapping[category] = '装飾品'
これらのマッピングを使用することで、モデルの生の出力を理解しやすいカテゴリに変換することができます。ユーザーはファッションアイテムをモデル化した人の画像を入力し、モデルは検出されたアイテムを「トップスとアウターウェア」、「ボトムス」、「フットウェア」、「アクセサリー」、「衣料品の詳細」、「装飾品」といったカテゴリにグループ化して出力します。
以下は、出力の例です:
トップスとアウターウェア: トップ/Tシャツ/スウェットシャツ衣料品の詳細: ポケット、ネックラインボトムス: パンツ装飾品: リベットフットウェア: 靴
また、これらのカテゴリに対してカラーコーディングの機能も追加しました。これにより、結果は視覚的に魅力的で理解しやすくなります。
color_mapping = { 'トップスとアウターウェア': '#FFC1E0', # ライトピンク 'ボトムス': '#A7F7C0', # ライトグリーン 'フットウェア': '#E1BEE7', # ライトパープル 'アクセサリー': '#FFD8B1', # ライトオレンジ '衣料品の詳細': '#B3E5FC', # ライトブルー '装飾品': '#FFF9C4' # ライトイエロー}
推論
ファッションアイテムの検出および自動製品タグ付けのためにモデルを推論に使用するには、次の手順を実行するだけです:
# YOLO-smallモデルから事時間を見せて!
画像を処理しましょう。これには、process_images()
関数を使用します。
image_path
: 画像のパスのリストを受け入れます。画像のパスの文字列をリスト内に入れることができます。 例:["images/0.jpg"]。threshold
: デフォルトは70%または0.7です。最大の信頼スコアが閾値よりも大きい予測のみを保持するために使用されます。show_image
: デフォルトはTrueです。これは、ファッションアイテムがバウンディングボックス内で検出された画像を表示するか(True)、表示しないか(False)を制御するためのものです。
それで終わりです!単一の画像で試してみましょう:
# 単一の画像、show_image=TrueIMAGE_PATH = ["images/sample_01.jpg"]process_images(IMAGE_PATH, threshold=0.8, show_image=True);
自動化されたファッションアイテムのタグ付けと印刷結果のみを使用したい場合は、 show_image=False
を入力できます:
# 単一の画像、show_image=FalseIMAGE_PATH = ["images/sample_01.jpg"]process_images(IMAGE_PATH, threshold=0.8, show_image=False);
Output 2:images/sample_01.jpgアクセサリー:時計、眼鏡衣服の詳細:ポケット、袖トップスとアウターウェア:トップ/ Tシャツ/ スウェットボトムス:パンツ
最後に、複数の画像に使用する場合は、 image_paths
パラメータ内に複数の画像パスを指定するか、次の process_images_in_directory()
関数を使用して、画像ディレクトリのパスを入力してください。
オプション1:複数の画像パス
# 複数の画像、show_image=TrueIMAGE_PATH = ["images/sample_01.jpg", "images/sample_02.jpg", "images/sample_03.jpg", "images/sample_04.jpg"]process_images(IMAGE_PATH, threshold=0.8, show_image=False);
オプション2:画像ディレクトリのパスを使用する
def process_images_in_directory(directory='./images', threshold=0.70, show_image=True): # 関心のある画像ファイルの拡張子を定義します image_extensions = ['jpg', 'png', 'jpeg', 'JPG', 'PNG'] # 各拡張子のファイルのリストを作成し、これらのリストを結合します image_files = [glob.glob(f'{directory}/*.{ext}') for ext in image_extensions] image_paths = [item for sublist in image_files for item in sublist] # リストを平坦化します return process_images(image_paths, threshold=threshold, show_image=show_image)process_images_in_directory(directory='./images', threshold=0.8, show_image=True)
どちらのオプションも以下の結果を出力します:
まとめ
このプロジェクトの潜在的な影響は、eコマースの領域において重要です。自動化されたファッションアイテムの検出により、新製品のアップロードプロセスを迅速化し、業務効率を向上させることができます。これは単にファッションアイテムの識別に関することではありません。正確な製品説明の提供や効率的な製品検索を通じて、顧客体験の向上にもつながります。
さらに、この技術は在庫管理、トレンド分析、個別のショッピング体験など、他のアプリケーションにも拡張することができます。それはファッションの言語を理解し、その利点を活かすことに関わるものです。
結論
この探求の中で、ファッション業界のドレスコードを解読しました。私たちはDLの精度、事前学習モデル、およびPyTorch Lightningを使用して、ファッションアイテムの検出プロセスを自動化し、ディープラーニングを活用して自動的な製品タグ付けを行う方法を示しました。これにより、時間のかかる作業を迅速で効率的なプロセスに変えることができます。
ドレスコードを解読することで、eコマースの領域で可能性が広がりました。これはまだ始まりに過ぎません。これらの技術をさらに改善していくことで、将来的にはさらに革新的で効率的なソリューションが期待できます。
注意
このブログ投稿は教育目的であり、ファッション業界のオブジェクト検出のための事前学習モデルの使用プロセスの概要を提供することを目的としています。実際の実装には、プロジェクトの具体的な要件に応じて、追加の手順と考慮事項が必要な場合があります。ただし、タスクを自動化する利点を考えると、卒業後に継続することが非常に興味深い旅となります。
私のファイルには、GitHubリポジトリからアクセスできます:https://github.com/erikaglacson/Multiple_Object_Detection.git
参考文献
- [1] PyTorch Lightning. (n.d.). https://www.pytorchlightning.ai/から参照
- [2] Blin, J. (n.d.). Fashionpedia. Hugging Face. 2023年6月27日にhttps://huggingface.co/datasets/detection-datasets/fashionpediaからアクセス
- [3] Jia, M., Shi, M., Sirotenko, M., Cui, Y., Cardie, C., Hariharan, B., Adam, H., & Belongie, S. (2020). Fashionpedia: Ontology, Segmentation, and an Attribute Localization Dataset. European Conference on Computer Vision (ECCV)の論文による。
- [4] Feruere Vega, V. (n.d.). YOLOS-fashionpedia. Hugging Face. 2023年6月27日にhttps://huggingface.co/valentinafeve/yolos-fashionpediaからアクセス
- [5] Wang, X. (n.d.). YOLOS-small. Hugging Face. 2023年6月27日にhttps://huggingface.co/hustvl/yolos-smallからアクセス
- [6] Feruere Vega, V. (2023, June 13). Fine tunning YOLOs for fashion [ソースコード]. GitHub. https://github.com/valentinafeve/fine_tunning_YOLOS_for_fashion
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles