[項目1−画像処理]2.データ#データ#


項目1-データ
  • データ前処理
  • データセットとデータローダ
  • [データプリプロセッシング]
    バニラデータをモデルに適したデータセットに加工します.
    ケゲルらの試合で与えられたデータの大部分は異常や騒音のない美しいデータである.しかし、実際にデータを収集すると、異常値やnull値が多く発生します.
    異常データを特定したり、モデルに適合させるために加工したりするには、前処理が必要です.前処理はプライマリ・キーではありませんが、タスクに応じて適切な前処理を行うと、パフォーマンスが向上します.

  • Bounding box
    画像に含まれる情報が必要以上である場合があります.必要な部分だけを切り取って勉強に使うと、欲しい情報に集中し、より良い性能を期待することができます.しかしながら、boundingboxを検索および配置するプロセスには、アルゴリズム(過去の方法)またはboundingboxナビゲーションモデルが必要である.

  • Data augmentation
    データを汎用化するための方法.これは、輝度、回転輝度、反転輝度、傾斜輝度、ノイズ付与等を調整することにより、データが持つ状態を多様化させ、データセット数を増やす方法である.これはパフォーマンスの向上に役立つ方法ですが、問題が発生した背景、モデルの用途、およびデータが持つ可能性のある状態を理解し、使用する必要があります.EDA!!! データによる変形ができないこともあります!(MNISTデータの数字6および9、2および5など)torchvision.transformsモジュールには、拡張のために使用できる複数の関数があります.外部ライブラリAlbumentationsを使用する場合、torchvision.transformよりも高速で多様な拡張技術を使用することができる.
  • [データセットとデータ・ローダ]torch.utils.dataモジュールのDatasetクラスを継承し、独自のカスタムデータセットクラスを作成できます.Datasetは、所望の形態でバニラデータを出力できるクラスである.
    class MyDataset(Dataset):
        def __init__(self, img_paths, transform):
            self.img_paths = img_paths
            self.transform = transform
    
        def __getitem__(self, index):
            image = Image.open(self.img_paths[index])
    
            if self.transform:
                image = self.transform(image)
            return image
    
        def __len__(self):
            return len(self.img_paths)
    カスタムデータセットクラスを作成する場合は、DataLoaderに連絡して使用すると便利です.データレコーダは、torch.utils.data.DataLoaderに含まれるデータセットをよく書き込むことができるユーティリティです.データレコーダを使用すると、データを配置サイズで簡単にグループ化できます.num_workerのオプションを設定すると、複数のスレッドを使用できます.drop_lastオプションを使用すると、未配置の残りのデータを破棄するかどうかを設定できます.データ・ロード・プログラムは、複数のDatasetを作成し、それぞれ異なる処理を行う場合に特に有用である.Dataset台を交換してデータロード機に入り、それぞれ処理すればいいです!
    transform = transforms.Compose([
    				ToTensor(),
                    		Normalize(mean=(0.5, 0.5, 0.5), std=(0.2, 0.2, 0.2)),
        				# 그 밖의 augmentation들 
                        		])
    
    trainSet = MyDataset(imgPaths, transform) # 위에서 만든 MyDataset에서 imgPaths를 요구한다
    trainLoader = DataLoader(trainSet, shuffle=False, num_workers=2, drop_last=True)
    [ピアセッション]
    ピアセッション時間に後で適用する方法について議論した.思いもよらなかったアイデアがあり、性能を向上させるアイデアもいくつかありました.

  • すべてのデータに同じ増分を適用するのではなく、データをいくつかのグループに分け、グループごとに異なる増分をランダムに適用します.

  • Albumentationモジュールは本当に速いです

  • データには何種類か変なものがあります!仮面をかぶった人やハンカチをかぶった人など

  • 顔データだけ使うとどうなりますか?顔が入らない領域は少しカットしても大丈夫です

  • 学習データでは、クラスごとのデータ数が非常に不均衡であり、検証セットを構成する際に、平均的なクラス分布を作成して検証精度を測定することで、より正確な測定を実現することができる.

  • 学習データの割合が不均衡であるため,より多くの마스크 정상 착용データを増やさずに不足したデータにのみ適用するとどうなるか.

  • 一度に1つ(性別のみ、マスクのみ、年齢のみ)のモデルの複数の組み合わせを作ってみてはいかがでしょうか?

  • モデルを作成した後、学習データを分類し、モデルが考えているラベルと実際のラベルをそれぞれ散点図で表すと、モデルが何を混同しているのかがわかります.では、ヘッドライトでそちらのデータをもう少し作れば、解決できるかもしれません!