ラベル付けされたta​bleをカウントする​方法について

こんにちは。
ディープラーニングで学習するためのデータにラベル付けをおこないました。
そこで、各カテゴリごとのラベルの数を数えたいのですが方法が思いつきません。カテゴリは22種類あり、ラベル付けされているものは座標と幅、高さが記入されており、ラベル付けしてないものは空白のままです。tableの列方向のラベルの付いている数を知りたいです。
1万枚以上あるため、手動で数えるのは大変なのでなるべくプログラミングで実行したいです。
アイディア、アドバイス等ありましたら宜しくお願い致します。

5 commentaires

源樹 上林
源樹 上林 le 21 Déc 2020
データはおおよそこんなイメージですか?
label = {'hoge';'hoge'; '';'hoge'};
zahyo = [ 1,2; 3,4;5,6; 7,8];
width = [ 1; 2; 3; 4];
height = [ 5; 6; 7; 8];
T = table(label, zahyo, width, height);
そして
T.label
のなかで、 '' と一致しない数の合計を数えたい。
という理解で合っていますか?
HY
HY le 23 Déc 2020
コメントありがとうございます。
T=17400×23 table
label1 label2 ....
1.jpg [2 2 22 33] [0]
2.jpg [0] [9 8 30 28]
3.jpg [5 6 90 87] [0]
...
このように1枚の画像に対して複数のラベルがついていて、[x座標 y座標 幅 高さ]が与えられています。 この時、列方向に対して[0]以外のラベルがいくつあるのかを調べたいです。 上の例で言えば、label1は2つラベルがついていて、label2は1つのラベルが付いていることがわかります。labelは22こあり、画像は1万7千枚あります。 何かアドバイス等ありましたら、宜しくお願い致します。
源樹 上林
源樹 上林 le 23 Déc 2020
例の提示ありがとうございます。
forで回せば何でも解決でき…1万7千枚はあまり回したくはないですね。遅くなりそうな気がする。
nameImg = { '1.jpg', '2.jpg', '3.jpg' }';
label1 = {[2 2 22 33], [0], [5 6 90 87]}';
label2 = {[0], [9 8 30 28], [0]}';
T = table( label1, label2, 'RowNames', nameImg)
% ゼロ以外のインデックス
i = not( cellfun( @(x) isequal(x,0), T.label1 ) );
% ゼロ以外が取り出せていることを確認
T.label1(i)
% ゼロ以外の数
sum(i)
こういう感じですか?あとはこれを22回繰り返すとか。
ちょっとすっきりしない。
HY
HY le 23 Déc 2020
丁寧にご回答頂き、ありがとうございます。 インデックスでゼロ以外のsumを取る方法を教えていただきありがとうございます。 参考になりました。 今は学習を始めてしまい、確認ができませんが終わり次第、是非やってみたいと思います。 大変ありがとうございました。
HY
HY le 24 Déc 2020
源樹様
すみません。なぜかわかりませんが、ベストアンサーを選べない状態です。
後日確認してみます。よろしくお願いいたします。

Connectez-vous pour commenter.

 Réponse acceptée

源樹 上林
源樹 上林 le 24 Déc 2020

0 votes

 解決されたようで何よりです。
 すみません、まだこの掲示板の使い方になれていないもので。選べないのはおそらく僕の書き込みがコメントだからです。回答の方に再投稿しておきます。
% ゼロ以外のインデックス
i = not( cellfun( @(x) isequal(x,0), T.label1 ) );
% ゼロ以外が取り出せていることを確認
T.label1(i)
% ゼロ以外の合計数
sum(i)
これで、ベストアンサーを選択できる状態になったと思います。よろしくおねがいします。

1 commentaire

HY
HY le 24 Déc 2020
ありがとうございました!

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!