Help us understand the problem. What is going on with this article?

機械学習用の画像切り出しツールを作る

More than 3 years have passed since last update.

OSX向けに画像切り出しツールを作りました。
https://github.com/t-ae/ImageTrimmer

動機

  • 近々こういうのが必要な案件が来そうな気がした
  • OSX向けアプリを作ったことがないのでやってみたかった
  • SwiftやRxSwiftのバージョンアップへのキャッチアップ
  • 仕事がなくて暇だった

要件

30分ほど手動で切り出しをして要件を洗い出しました。

  • 一枚の画像中にPositiveな箇所が複数あり、Negativeも同一画像から取ることを想定
  • 二値分類のための画像をできるだけ早くたくさん作る
  • 切り出し部分がわかりやすいように
  • とりあえず案件特化で汎用性は後々

できたもの

こんなの
https://github.com/t-ae/ImageTrimmer
GIMPでちまちまやってるとサイズ揃えるの面倒だなーというのがあったのでサイズ固定での切り抜きは真っ先に実装しました。
あとNegative画像なんて手で切り出さなくてもいいだろ!とは思っていたのでランダム切り出し機能も付けてみました。
使い方やその他はreadmeの英語を解読してください。

Positiveっぽいの探索機能

ランダムだとNegativeばっかり集まるので、サンプルデータを入れてPositiveを探せるような機能もつけてみました。特徴量とかよくわかんないので輝度値をそのまんまSVMにつっこむ簡単仕様です。
パラメータは適当な範囲で探索させており、とりあえずテストに使った48x48のデータでは上手く見つけられていましたが、一般的に上手くいくかはわからないです。
(そもそもこれで見つかるPositiveが汎化性能に寄与するのか、という疑問があります。むしろある段階でPositiveっぽいNegativeを集めるのに役立つかもしれません。)

感想

OSXアプリについて

iOSと変わらんだろうと思っていたら全然違うので大変でした。
これからやろうという人は体系的にまとまってるのを先に読むほうが(どうでもいいことでイライラしないで済むという意味で)捗りそうな気がします。

RxSwiftについて

単一の値に入出力は複数あるケース(今回はxの値等)はReactiveに書くと恐ろしくスッキリしますね。マルチウインドウだとデリゲートでのやり取りが結構ありそうなのでそこをRxに置き換えていくのも良いかもしれません。
3になって~OnNext系に丸括弧が必要になったのはう~んどうなんでしょう。命名規則やなんかが変わっただけなので2からの移行で迷うことはなかったです。
deprecatedなsubscribeNextなんかを自動変換するとsubscribe(Event)に変換されるのだけ注意。

EasyImagyについて

先輩社員(@koher)の作成したライブラリです。最近は画像処理が要るものを作る時はだいたい使わせていただいています。
今回はOSXであることと処理が比較的単純なせいか十分な速度が出ていると思います。遅かったらCで書き直しも考えていたので良かったです。
詳しくは以下の記事を読んで、使ってみてください(宣伝)。
Swiftで画像をめちゃくちゃ簡単にあつかえるライブラリ

できたものについて

マウス+キーボードショートカットで切り出しできるようにしたので百枚くらいならサクッと集められるようになり、当初の目的は達成できました。キーボードショートカットの設定が予想以上に簡単だったのが幸い。

これからやりたいこと

  • マルチクラス用に拡張
  • メニューの使い方がよくわからなかったので調べる
  • 切り抜き枠と実際の切り抜き画像がズレてる感があるのでどーにかする
  • OpenCV勉強してなんか機能つけるとか

その他

機械学習にも画像処理にも縁のない半生だったので、知らないだけで便利なツールがある気がしてます。専門でやってる方は日頃どんなツールを使っているのか教えてください。あったらさっさと乗り換えます。

機械学習案件は地味に増えて来ていて使う機会も多そうなので、改善点などあったらバンバン指摘してください。

t-ae
qoncept
リアルタイム画像認識を専門にした会社です。近年はスポーツにおける認識技術の応用に力を入れています。
https://qoncept.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした