主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

セマンティックセグメンテーションのためのピクセルラベルの拡張

この例では,セマンティックセグメンテーションワークフローののとしてイメージピクセルピクセルののため种类の拡を行うためmatlab®,计算机Vision工具箱™,および图像处理工具箱™をを用法法

セマンティックセグメンテーションの学习データ,数码行列でれるイメージ,および分类行为で表さピクセルラベルででささますますますをを拡するするするする。この例ではませませ。

-データストア内のセマンティックセグメンテーション用学習データに対する拡張の適用を実行する方法を说明します。

拡张した学习データを使しネットワークネットワーク习させることができ。深層学習を使用したセマンティックセグメンテーション(计算机视觉工具箱)を参照してください。

。

サンプルイメージを読み取ります。

filenameImage =“kobi.png”;I = imread (filenameImage);

ピクセルラベルイメージを読み取ります。イメージには2つのクラスがあります。

FilenameLabels =.“kobiPixelLabeled.png”;L = imread (filenameLabels);类= [“地板”“狗”];IDS = [1 2];

ピクセルラベルイメージを直言データ型に変換します。

C =分类(L、id、类);

関数labeloverlayをを用して,ラベルをイメージの上に重ね表示します。“楼”のラベルが付いたは青みがかっており,“狗”ののラベルががたピクセルシアン调にになっていいいピクセルははシアン调调にいい

B = Labeloverlay(i,c);imshow (B)标题(“原始图像和像素标签”

图中包含一个坐标轴。具有标题原始图像和像素标签的轴包含类型图像的对象。

イメージとピクセルラベルのサイズ変更

関数imresizeを使用することで,数値イメージと直言イメージのサイズを変更できます。イメージとピクセルラベルイメージを同じサイズに変更し,ラベルをイメージの上に重ねて表示します。

targetSize = [300 300];resizedI = imresize(我targetSize);resizedC = imresize (C, targetSize);

。

b = Labeloverlay(已调整大小,调整大小);imshow (B)标题(“调整图像和像素标签的大小”

图中包含一个坐标轴。标题为“调整大小的图像”和“像素标签”的轴包含一个图像类型的对象。

イメージとピクセルラベルのトリミング

トリミングは,データのサイズをネットワークの力サイズに一致さための一定的なな手顺です手顺目目サイズサイズの出出出ををにサイズのの出出出をするにはははははにははははははははははははははにはははrandomCropWindow2d(图像处理工具箱)centerCropWindow2d(图像处理工具箱)を使用して,トリミングウィンドウのサイズと位置を指定します。イメージ内の目的の内容が確実に含まれるようにトリミングウィンドウを選択してください。次に,imcropを使用して,イメージとピクセルラベルイメージを同じウィンドウにトリミングします。

トリミングした领域の的ののサイズ,[高さ,幅]の形式の2要素のベクトルとして指定しますます。

targetSize = [300 300];

イメージの中心から,ターゲットサイズでトリミングします。

win = centercropwindow2d(大小(i),targetsize);croppedI = imcrop(我,赢);croppedC = imcrop (C,赢得);

トリミングしたイメージの上に,トリミングしたラベルを重ねて表示します。

B = labeloverlay (croppedI croppedC);imshow (B)标题('中心裁剪图像和像素标签'

图中包含一个坐标轴。具有标题中心裁剪图像和像素标签的轴包含类型图像的对象。

イメージ内のランダムな位置から,ターゲットのサイズにイメージをトリミングします。

赢得= randomCropWindow2d(大小(I), targetSize);croppedI = imcrop(我,赢);croppedC = imcrop (C,赢得);

トリミングしたイメージの上に,トリミングしたラベルを重ねて表示します。

B = labeloverlay (croppedI croppedC);imshow (B)标题('随机裁剪图像和像素标签'

图中包含一个坐标轴。具有标题随机裁剪图像和像素标签的轴包含类型图像的对象。

イメージとピクセルラベルのワープ

関数randomAffine2d(图像处理工具箱)は,回転,平行驾驶,スケーリング(サイズ変更),反転,せん断の组み合成からな2次元アフィン変换をを。imwarp(图像处理工具箱)を使用して,イメージとピクセルラベルイメージに変換を適用します。関数AffineOtputPudive.(图像处理工具箱)を使用して,ワープされた出力の空間の範囲と解像度を制御します。

[-50,50]

tform = randomAffine2d (“旋转”,[ -  50 50]);

ワープされたイメージとピクセルラベルイメージの出力表示を作成します。

溃败= affineOutputView(大小(I), tform);

imwarpを使用して,イメージとピクセルラベルイメージを回転させます。

rotatedi = imwarp(i,tform,“OutputView”,溃败);rotatedC = imwarp (C tform“OutputView”,溃败);

。

B = Labeloverlay(Rotatedi,RotatedC);imshow (B)标题(“旋转图像和像素标签”

图中包含一个坐标轴。具有标题旋转图像和像素标签的轴包含类型图像的对象。

データストア内のセマンティックセグメンテーション用学習データに対する拡張の適用

データストアは,イメージコレクションの読み取りや拡拡便利です。イメージとピクセルラベルののを格式するデータストアのをデータをのするストアををして拡拡拡拡拡します。

イメージとピクセルラベルイメージのデータを格納するデータストアの作成

サンプルデータストアのサイズを増やすために,イメージとピクセルラベルイメージのファイル名を複製します。

numObservations = 4;trainImages = repelem ({filenameImage} numObservations 1);trainLabels = repelem ({filenameLabels} numObservations 1);

学習用のイメージファイルからImageageAtastore.を作成します。学習用のピクセルラベルファイルからPixellabeldAtastore.を作成します。このデータストアには,同じデータの複数のコピーが格納されます。

IMDS = IMAGEDATASTORE(TRAINIMAGES);pxds = pixellabeldataStore(trainlebeles,classes,Ids);

イメージデータストアとピクセルラベルデータストアを結合し,イメージとピクセルラベルのペアを関連付けます。

pxds trainingData =结合(imd);

結合したデータストアから,最初のイメージとそれに関連付けられたピクセルラベルイメージを読み取ります。

data =阅读(trainingData);我={1}数据;C =数据{2};

イメージとピクセルラベルデータを表示します。

B = Labeloverlay(i,c);imshow(b)

图中包含一个坐标轴。轴包含一个image类型的对象。

データ拡张の适用

関数转变を使用して,学習データにデータ拡張を適用します。この例では2つの別個の拡張を学習データに適用します。

最初の拡張では,イメージの色にジッターを付加した後,イメージとピクセルラベルイメージのペアに対して,同一のランダムスケーリング,水平方向の反転,および回転を適用します。これらの演算は,この例の終わりにある補助関数jitterimagecolorandwarp.で定義されます。

augmentedTrainingData =变换(trainingData @jitterImageColorAndWarp);

拡张されたデータをすべて読み取ります。

data = readall (augmentedTrainingData);

拡張されたイメージとピクセルラベルデータを表示します。

rgb =细胞(numObservations, 1);k = 1: numobobservations I = data{k,1};C =数据{k, 2};rgb {k} = labeloverlay(我,C);结束蒙太奇(rgb)

图中包含一个坐标轴。轴包含一个image类型的对象。

2番目の拡張では,イメージとピクセルラベルイメージをターゲットサイズで中央トリミングします。これらの演算は,この例の終わりにある補助関数Centrcropimageandlabel.で定義されます。

targetSize = [800 800];preprocessedTrainingData =变换(augmentedTrainingData,...@(数据)centerCropImageAndLabel(数据、targetSize));

前处理されたデータをすべて読み取ります。

Data = Readall(预处理DTATA);

前処理されたイメージとピクセルラベルデータを表示します。

rgb =细胞(numObservations, 1);k = 1: numobobservations I = data{k,1};C =数据{k, 2};rgb {k} = labeloverlay(我,C);结束蒙太奇(rgb)

图中包含一个坐标轴。轴包含一个image类型的对象。

拡張の補助関数

补助关节jitterimagecolorandwarp.は,イメージデータにランダムなカラージッターを適用した後,イメージとピクセルラベルイメージのデータに同一のアフィン変換を適用します。変換は,[0.8 - 1.5]の範囲のスケール係数でのスケーリング,水平方向の反転,および[30]-30年,度の範囲での回転のランダムな組み合わせで構成されます。入力数据と出力出去は2要素の细胞配列で,最初の要素がイメージデータ,2番目の要素がピクセルラベルイメージデータです。

功能= jitterImageColorAndWarp(数据)%解压缩原始数据。我={1}数据;C =数据{2};%应用随机颜色抖动。我= jittercolorhsv(我,“亮度”,0.3,“对比”,0.4,“饱和”, 0.2);%定义随机仿射变换。tform = randomAffine2d (“规模”(0.8 - 1.5),“XReflection”,真的,“旋转”,[ -  30 30]);溃败= affineOutputView(大小(I), tform);变换图像和边框标签。Augmentedimage = Imwarp(I,Tform,“outputView”,溃败);augmentedLabel = imwarp (C tform“outputView”,溃败);%返回增强数据。Out = {AugmentedImage,Augmentedlabel};结束

补助关节Centrcropimageandlabel.は,イメージの中心にトリミングウィンドウを作成した後,このトリミングウィンドウを使用してイメージとピクセルラベルイメージの両方をトリミングします。入力数据と出力出去は2要素の细胞配列で,最初の要素がイメージデータ,2番目の要素がピクセルラベルイメージデータです。

功能OUT = COMETCROPIMAGEANDLABEL(数据,targetsize)win = centrcropwindow2d(大小(数据{1}),targetsize);{1} = imcrop(数据{1},Win);{2} = imcrop(数据{2},Win);结束

参考

(图像处理工具箱)|(图像处理工具箱)|(图像处理工具箱)

関連する例

詳細