3x6 セル配列である MATLAB 変数があります。cell 配列の列の 1 つは、最大 150 ~ 200 個の小さな RGB イメージ (16x20 ピクセル サイズなど) を保持します (これも最大)。残りの列は次のとおりです。
3 文字または 4 文字の文字列である同数のラベル
約 350x200 のイメージ マスク
3 つの整数
なんらかの理由で、このオブジェクトの保存に非常に長い時間がかかっているか、少なくともオブジェクトのサイズの分だけ時間がかかっています。既に 10 分が経過しています (これはそれほど悪くはありませんが、オブジェクトのサイズを拡張して数千の小さな画像を保持する予定です)、MATLAB は何の進歩もしていないようです。実際、変数を含むディレクトリを開くと、そのサイズは 0 バイトから約 120kB の間で循環しています。(つまり、30 または 40 kB ずつ 120 まで増加してから再起動します)。
これは正常な動作ですか?MATLAB 変数は常に保存に時間がかかりますか? 何が起きてる?
間違い: AllData
SVM 変数ではなく、 を保存しています。AllData
実際の SVM 自体と 1 つの整数を除いて、SVM キーパーと同じデータを持ちます。
これを解決するために、コードのどの特定のポイントを示すのに役立ちますか? コード自体は数百行で、いくつかの関数に分かれています。これをトラブルシューティングするために考慮すべき重要なことは何ですか? 変数はいつ作成されますか? いつ保存されますか?小さな画像を作成する方法は?
デスクトップの写真を撮る初心者になるのは嫌いです。しかし、私が作業しているマシンにはスクリーンショットを撮るのに問題があります。とにかく、ここにあります
Alldata/curdata
は 3x7 配列のサブセットにすぎません...実際には 3x8 ですが、最後のint
.
興味深い点: 保存プロセスを中断したところ、変数は正常に保存されたように見えました。svm
保存されたデータで新しいトレーニングを行ったところ、問題なく動作しました。今後は絶対にしないでいただきたいのですが。
whos の使用:
Name Size Bytes Class Attributes
AllData 3x6 473300 cell
Image 240x352x3 253440 uint8
RESTOREDEFAULTPATH_EXECUTED 1x1 1 logical
SVMKeeper 3x8 2355638 cell
ans 3x6 892410 cell
curData 3x6 473300 cell
dirpath 1x67 134 char
im 240x352x3 1013760 single
s 1x1 892586 struct
更新情報: 1.これは常に発生しますか、それとも 1 回だけですか?
- それはいつも起こる
2.別の(ローカル)ドライブに保存する場合、同じ時間がかかりますか?
-そのコンピューターに戻ったら、これをさらに調査します
3.500kb のマトリックスをそのフォルダに保存するのにどのくらいの時間がかかりますか?
-ほぼ瞬時に
4.上で尋ねられたように、あなたが使用する関数呼び出しは何ですか?
- 以下にコードを追加
(Image is a rgb image)
MaskedImage(:,:,1)=Image(:,:,1).*Mask;
MaskedImage(:,:,2)=Image(:,:,2).*Mask;
MaskedImage(:,:,3)=Image(:,:,3).*Mask;
MaskedImage=im2single(MaskedImage);
....
(I use some method to create a bounding box around my 16x20 image)
(this is in a loop of that occurs about 100-200 times)
Misfire=input('is this a misfire?','s');
if (strcmpi(Misfire,'yes'))
curImageReal=MaskedImage(j:j+Ybound,i:i+Xbound,:);
Training{curTrainingIndex}=curImageReal; %Training is a cell array of images
Labels{curTrainingIndex}='ncr';
curTrainingIndex=curTrainingIndex+1;
end
(the loop ends)...
SaveAndUpdate=input('Would you like to save this data?(say yes,definitely)','s');
undecided=1;
while(undecided)
if(strcmpi(SaveAndUpdate,'yes,definitely'))
AllData{curSVM,4}=Training;
AllData{curSVM,5}=Labels;
save(strcat(dirpath,'/',TrainingName),'AllData'); <---STUCK HERE
undecided=0;
else
DontSave=input('Im not going to save. Say YESNOSAVE to NOT SAVE','s')
if(strcmpi(DontSave,'yesnosave'))
undecided=0;
else
SaveAndUpdate=input('So... save? (say yes,definitely)','s');
end
end
end