機械学習用のデータの撮影・保存についてリモートストレージにデータを保存する自作のツールを作ったので概略の考え方を示す。
理由
- 学習用画像を選択してアノテーションをすることとは別に、撮影したデータにユニークな名前を付けて保存しておきたい。
- データは、リモートストレージに置きたい。
- リモートストレージにおいてあるデータの要約を簡単に知りたい。
持つべき機能
--uniq
撮影した時点でユニークな名前になっていない場合に、ユニークな名前に変更する。
--show_local
ローカルデータのディレクトリを示す。
--show
リモートストレージにおいてあるディレクトリを示す。
--push ローカルデータのディレクトリ
ローカルデータのディレクトリ をリモートストレージにコピーする。
--safe_remove ローカルデータのディレクトリ
リモートストレージに該当のデータがあることを確認して、ローカルデータのディレクトリを削除する。
--get 該当のシーンのフォルダ
リモートストレージの該当のシーンのフォルダをローカルにコピーする。
実装上留意したこと
- クライアントのPCの側に全てのデータをコピーしてしまうなどの、大量のディスクスペースを使う方式にしてはならない。
- バージョン管理をしない。
- データはリモートストレージに追加するだけであって、改変もしないし、削除もしない。
- そのような単純さを持ち込むことで、管理を楽にする。
- フォルダのデータの特徴を知る手段を提供すること
画像データの場合
- フォルダにある画像の要約を、ランダムに選択した画像を時系列順序で縮小して並べて表示する。(ちょうどネガフィルムの小さなまま表示する。)
- そうすることで、そのデータの時系列を見やすくする。
手作業でcsvファイルを作らない。
- データがどこに何があるかをcsvファイルを主体として手作業で作成するのはやめよう。
- どうせ、どこかでメンテナンスされなくなるんだ。
データレイク・データウェアハウスなどを説明している書籍の例
ビッグデータ分析の システムと開発がこれ1冊でしっかりわかる教科書
個人単位で機械学習をしてきたエンジニアの場合、ビッグデータの扱いに不慣れな場合があります。
いま扱おうとするデータが大量にあって、今後とも組織で引き継ぎをしていく必要があれば、
データの管理に対してもっと労力をさく必要を生じます。