メインコンテンツ

splitEachLabel

ImageDatastore のラベルを比率で分割

説明

[imds1,imds2] = splitEachLabel(imds,p) は、imds 内のイメージ ファイルを 2 つの新しいデータストア imds1imds2 に分割します。新しいデータストア imds1 には各ラベルの最初から p 個のファイルが含まれ、imds2 には各ラベルの残りのファイルが含まれます。p には imds1 に割り当てる各ラベルのファイル数の比率を示す 0 ~ 1 の値、あるいは imds1 に割り当てる各ラベルのファイルの絶対数を示す整数を指定できます。

[imds1,...,imdsM] = splitEachLabel(imds,p1,...,pN) は、データストアを N+1 個の新しいデータストアに分割します。最初の新しいデータストア imds1 には各ラベルの最初から p1 個のファイルが含まれ、次の新しいデータストア imds2 には次の p2 個のファイルが含まれる、というように分割されます。p1,...,pN がファイル数を表す場合、その合計は元のデータストア imds の最小のラベル内にあるファイル数以下でなければなりません。

___ = splitEachLabel(___,'randomized') は、指定された比率のファイル数を各ラベルから新しいデータストアにランダムに割り当てます。

___ = splitEachLabel(___,Name,Value) は、1 つ以上の名前と値のペアの引数を使用して新しいデータストアのプロパティを指定します。たとえば、'Include','labelname' を使用して分割するラベルを指定できます。

すべて折りたたむ

ImageDatastore オブジェクトを作成し、イメージを含むフォルダーの名前に従って各イメージにラベルを付けます。結果のラベル名は folder1folder2 になります。

imds = imageDatastore(["cloudCombined.png","example.tif","landOcean.jpg","ngc6543a.jpg",...
    "corn.tif","street1.jpg","street2.jpg","peppers.png"],...
    LabelSource="foldernames",FileExtensions=[".jpg",".png",".tif"]);

imds.Labels
ans = 

     folder1 
     folder1 
     folder1 
     folder1 
     folder1 
     folder1 
     folder2
     folder2 

imds 内のファイルから新しいデータストアを 2 つ作成します。最初のデータストア imds60 には、folder1 ラベルをもつ最初から 60% のファイルと、folder2 ラベルをもつ最初から 60% のファイルが含まれます。2 番目のデータストア imds40 には、各ラベルの残り 40% のファイルが含まれます。ラベルに割合を適用した結果が整数のファイル数にならない場合、splitEachLabel は最も近い 0 または正の整数への切り捨てを行います。

[imds60,imds40] = splitEachLabel(imds,0.6)
imds60 = 

  ImageDatastore with properties:

      Files: {
             ' ...\folder1\cloudCombined.jpg';
             ' ...\folder1\example.tif';
             ' ...\folder1\landOcean.jpg'
              ... and 2 more
             }
     Labels: [folder1; folder1; folder1 ... and 2 more categorical]
    ReadFcn: @readDatastoreImage


imds40 = 

  ImageDatastore with properties:

      Files: {
             ' ...\folder1\street1.jpg';
             ' ...\folder1\street2.jpg';
             ' ...\folder2\peppers.png'
             }
     Labels: [folder1; folder2; folder2]
    ReadFcn: @readDatastoreImage

ImageDatastore オブジェクトを作成し、イメージを含むフォルダーの名前に従って各イメージにラベルを付けます。結果のラベル名は folder1folder2 になります。

imds = imageDatastore(["cloudCombined.png","example.tif","landOcean.jpg","ngc6543a.jpg",...
    "corn.tif","street1.jpg","street2.jpg","peppers.png"],...
    LabelSource="foldernames",FileExtensions=[".jpg",".png",".tif"]);

imds.Labels
ans = 

     folder1 
     folder1 
     folder1 
     folder1 
     folder1 
     folder1 
     folder2 
     folder2 

imds 内のファイルから新しいデータストアを 2 つ作成します。最初のデータストア imds1 には、folder1 ラベルをもつ最初のファイルと、folder2 ラベルをもつ最初のファイルが含まれます。2 番目のデータストア imds2 には、各ラベルの残りのファイルが含まれます。

[imds1,imds2] = splitEachLabel(imds,1)
imds1 = 

  ImageDatastore with properties:

      Files: {
             ' ...\folder1\cloudCombined.jpg';
             ' ...\folder2\street2.jpg'
             }
     Labels: [folder1; folder2]
    ReadFcn: @readDatastoreImage


imds2 = 

  ImageDatastore with properties:

      Files: {
             ' ...\folder1\example.tif';
             ' ...\folder1\landOcean.jpg';
             ' ...\folder1\ngc6543a.jpg'
              ... and 3 more
             }
     Labels: [folder1; folder1; folder1 ... and 3 more categorical]
    ReadFcn: @readDatastoreImage

ImageDatastore オブジェクトを作成し、イメージを含むフォルダーの名前に従って各イメージにラベルを付けます。結果のラベル名は folder1folder2 になります。

imds = imageDatastore(["cloudCombined.png","example.tif","landOcean.jpg","ngc6543a.jpg",...
    "corn.tif","street1.jpg","street2.jpg","peppers.png"],...
    LabelSource="foldernames",FileExtensions=[".jpg",".png",".tif"]);

imds.Labels
ans = 

     folder1 
     folder1 
     folder1 
     folder1 
     folder1 
     folder1 
     folder2 
     folder2 

imds 内のファイルから新しいデータストアを 3 つ作成します。最初のデータストア imds60 には、folder1 ラベルをもつ最初から 60% のファイルと、folder2 ラベルをもつ最初から 60% のファイルが含まれます。2 番目のデータストア imds10 には、各ラベルから次の 10% のファイルが含まれます。3 番目のデータストア imds30 には、各ラベルの残り 30% のファイルが含まれます。ラベルに割合を適用した結果が整数のファイル数にならない場合、splitEachLabel は最も近い 0 または正の整数への切り捨てを行います。

[imds60, imds10, imds30] = splitEachLabel(imds,0.6,0.1)
imds60 = 

  ImageDatastore with properties:

      Files: {
             ' ...\folder1\cloudCombined.jpg';
             ' ...\folder1\example.tif';
             ' ...\folder1\landOcean.jpg'
              ... and 2 more
             }
     Labels: [folder1; folder1; folder1 ... and 2 more categorical]
    ReadFcn: @readDatastoreImage


imds10 = 

  ImageDatastore with properties:

      Files: {
             ' ...\folder1\street1.jpg'
             }
     Labels: folder1
    ReadFcn: @readDatastoreImage


imds30 = 

  ImageDatastore with properties:

      Files: {
             ' ...\folder1\street2.jpg';
             ' ...\folder2\peppers.png'
             }
     Labels: [folder1; folder2]
    ReadFcn: @readDatastoreImage

ImageDatastore オブジェクトを作成し、イメージを含むフォルダーの名前に従って各イメージにラベルを付けます。結果のラベル名は folder1folder2 になります。

imds = imageDatastore(["cloudCombined.png","example.tif","landOcean.jpg","ngc6543a.jpg",...
    "corn.tif","street1.jpg","street2.jpg","peppers.png"],...
    LabelSource="foldernames",FileExtensions=[".jpg",".png",".tif"]);

imds.Labels
ans = 

     folder1 
     folder1 
     folder1 
     folder1 
     folder1 
     folder1 
     folder2 
     folder2 

imds 内のファイルから新しいデータストアを 3 つ作成します。最初のデータストア imds1 には、folder1 ラベルをもつ最初のファイルと、folder2 ラベルをもつ最初のファイルが含まれます。2 番目のデータストア imds2 には、各ラベルの次のファイルが 1 つ含まれます。3 番目のデータストア imds3 には、各ラベルの残りのファイルが含まれます。

[imds1, imds2, imds3] = splitEachLabel(imds,1,1)
imds1 = 

  ImageDatastore with properties:

      Files: {
             ' ...\folder1\cloudCombined.jpg';
             ' ...\folder2\street2.jpg'
             }
     Labels: [folder1; folder2]
    ReadFcn: @readDatastoreImage


imds2 = 

  ImageDatastore with properties:

      Files: {
             ' ...\folder1\example.tif';
             ' ...\folder2\peppers.png'
             }
     Labels: [folder1; folder2]
    ReadFcn: @readDatastoreImage


imds3 = 

  ImageDatastore with properties:

      Files: {
             ' ...\folder1\landOcean.jpg';
             ' ...\folder1\ngc6543a.jpg';
             ' ...\folder1\street1.jpg'
              ... and 1 more
             }
     Labels: [folder1; folder1; folder1 ... and 1 more categorical]
    ReadFcn: @readDatastoreImage

ImageDatastore オブジェクトを作成し、イメージを含むフォルダーの名前に従って各イメージにラベルを付けます。結果のラベル名は folder1folder2 になります。

imds = imageDatastore(["cloudCombined.png","example.tif","landOcean.jpg","ngc6543a.jpg",...
    "corn.tif","street1.jpg","street2.jpg","peppers.png"],...
    LabelSource="foldernames",FileExtensions=[".jpg",".png",".tif"]);

imds.Labels
ans = 

     folder1 
     folder1 
     folder1 
     folder1 
     folder1 
     folder1 
     folder2 
     folder2 

imds の各ラベルからランダムに抽出されたファイルから、新しいデータストアを 2 つ作成します。最初のデータストア imds1 には、folder1 のラベルをもつランダムなファイルが 1 つ、folder2 のラベルをもつランダムなファイルが 1 つ含まれます。2 番目のデータストア imds2 には、各ラベルの残りのファイルが含まれます。

[imds1, imds2] = splitEachLabel(imds,1,'randomized')
imds1 = 

  ImageDatastore with properties:

      Files: {
             ' ...\folder1\street2.jpg';
             ' ...\folder2\corn.tif'
             }
     Labels: [folder2; folder1]
    ReadFcn: @readDatastoreImage


imds2 = 

  ImageDatastore with properties:

      Files: {
             ' ...\folder1\cloudCombined.jpg';
             ' ...\folder1\example.tif';
             ' ...\folder1\landOcean.jpg'
              ... and 3 more
             }
     Labels: [folder1; folder1; folder1 ... and 3 more categorical]
    ReadFcn: @readDatastoreImage

ImageDatastore オブジェクトを作成し、イメージを含むフォルダーの名前に従って各イメージにラベルを付けます。結果のラベル名は folder1folder2 になります。

imds = imageDatastore(["cloudCombined.png","example.tif","landOcean.jpg","ngc6543a.jpg",...
    "corn.tif","street1.jpg","street2.jpg","peppers.png"],...
    LabelSource="foldernames",FileExtensions=[".jpg",".png",".tif"]);

imds.Labels
ans = 

     folder1 
     folder1 
     folder1 
     folder1 
     folder1 
     folder1 
     folder2 
     folder2 

imds 内のファイルから、folder1 ラベルをもつファイルのみを含む新しいデータストアを 2 つ作成します。最初のデータストア imds60 には、folder1 ラベルをもつ最初から 60% のファイルが含まれます。2 番目のデータストア imds40 には、folder1 ラベルをもつ残り 40% のファイルが含まれます。

[imds60, imds40] = splitEachLabel(imds,0.6,'Include','folder1')
imds60 = 

  ImageDatastore with properties:

      Files: {
             ' ...\folder1\cloudCombined.jpg';
             ' ...\folder1\example.tif';
             ' ...\folder1\landOcean.jpg'
              ... and 1 more
             }
     Labels: [folder1; folder1; folder1 ... and 1 more categorical]
    ReadFcn: @readDatastoreImage


imds40 = 

  ImageDatastore with properties:

      Files: {
             ' ...\folder1\street1.jpg';
             ' ...\folder1\street2.jpg'
             }
     Labels: [folder1; folder1]
    ReadFcn: @readDatastoreImage

同様に、folder2 ラベルを除外することにより、folder1 ラベルのみを分割できます。

[imds60, imds40] = splitEachLabel(imds,0.6,'Exclude','folder2')
imds60 = 

  ImageDatastore with properties:

      Files: {
             ' ...\folder1\cloudCombined.jpg';
             ' ...\folder1\example.tif';
             ' ...\folder1\landOcean.jpg'
              ... and 1 more
             }
     Labels: [folder1; folder1; folder1 ... and 1 more categorical]
    ReadFcn: @readDatastoreImage


imds40 = 

  ImageDatastore with properties:

      Files: {
             ' ...\folder1\corn.tif';
             ' ...\folder1\street1.jpg'
             }
     Labels: [folder1; folder1]
    ReadFcn: @readDatastoreImage

入力引数

すべて折りたたむ

入力データストア。ImageDatastore オブジェクトとして指定します。イメージ データから ImageDatstore を作成するには、関数 imageDatastore を使用します。

分割するファイルの比率。区間 (0,1) 内のスカラー、あるいは正の整数スカラーとして指定します。

  • p が区間 (0,1) 内にある場合は、各ラベルから imds1 に割り当てるファイルの割合を表します。p によりファイル数が 0 または正の整数にならない場合、splitEachLabel は最も近い 0 または正の整数に切り捨てます。

  • p が整数の場合は、各ラベルから imds1 に割り当てるファイルの絶対数を表します。各ラベルには p 個以上のファイルが関連付けられていなければなりません。

データ型: double

比率のリスト。区間 (0,1) 内のスカラー、あるいは正の整数スカラーとして指定します。比率が区間 (0,1) 内にある場合は、各ラベルから出力データストアに割り当てるファイルの割合を表します。比率が整数の場合は、各ラベルから出力データストアに割り当てるファイルの絶対数を表します。比率が割合を表す場合、その合計は 1 以下でなければなりません。比率がファイル数を表す場合、個々の比率を満たすために十分な数のファイルが各ラベルに関連付けられていなければなりません。

データ型: double

名前と値の引数

すべて折りたたむ

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。

例: [imds1 imds2] = splitEachLabel(imds,0.5,'Exclude','folder1')

含めるラベル。'Include' と、Labels プロパティと同じ型のラベル名のベクトル、cell 配列または string 配列で構成されるコンマ区切りのペアとして指定します。個々の名前は、データストアの Labels プロパティ内にあるいずれかのラベルと一致しなければなりません。

データ型: char | cell | string

除外するラベル。'Exclude' と、Labels プロパティと同じ型のラベル名のベクトル、cell 配列または string 配列で構成されるコンマ区切りのペアとして指定します。個々の名前は、データストアと関連付けられているラベルを定義し、Labels 内の名前と一致しなければなりません。このオプションを 'Include' オプションと共に使用することはできません。

データ型: char | cell | string

出力引数

すべて折りたたむ

出力データストア。ImageDatastore オブジェクトとして返されます。imds1 には imds の各ラベルから指定比率のファイルが含まれ、imds2 には残りのファイルが含まれます。

出力データストアのリスト。ImageDatastore オブジェクトとして返されます。リストの要素数は、リストされた比率の個数より 1 大きい数です。新しい各データストアは、imds の各ラベルを p1,...,pN で定義された比率で含みます。残りのファイルはすべて、M 番目のデータストアに割り当てられます。

拡張機能

すべて展開する

バージョン履歴

R2016a で導入