機械学習のカタログモジュラ合成への利用—パートI


A 1080p version of the video is available on Cinnamon
これは、私の毎週のショーからとられるビデオです"ML for Everyone" あの放送live on Twitch every Tuesday at 2pm UK time .
これは、SI Metsonと私自身がモジュール学習者を含む個々のモジュールを認識して、識別するために機械学習モデルを訓練しようとする一連のライブコーディングセッションの最初の記録です.
このセッションでは、ほとんどデータを照合して、それを機械学習モデルに使用されるのに適した形式にしようとしました.このチュートリアルでは、TensorFlowオブジェクト検出APIについて、ほとんど以下のようにしました.
https://tensorflow-object-detection-api-tutorial.readthedocs.io/en/latest/
モデルのトレーニングデータを生成するには、次の手順を実行しました.
  • サイトをこすったModulargrid 各モジュールとそのメタデータ(名前など)の画像を収集する.
  • 合成シンセサイザパネルを生成するスクリプトを連結しますN (この場合、5)ランダムモジュール画像が並んでいる.この方法では、イメージ内の各モジュールの実際の座標を知ることができます.彼らが一緒に連結される前に、各々のイメージは共通の高さまで拡大されます.
  • 作成されたTensorFlowtfrecord メタデータとイメージの効率的なバイナリパック(Protobufsに基づく)を含んだファイル.
  • 私たちは、協調の計算の周りのいくつかのロジックをデバッグしようとして、ストリームの終わりに時間がなくなった.我々は、はるかに簡単な方法を後にし、この方法にコードをリファクタリングを実現しました.
    オブジェクト検出APIはデータがある形式であると予想しますtfrecord インスタンス.この形式は、処理するのに非常に効率的であり、マシンを学習するパイプラインに大量の情報を注入する必要があるときには、データをできるだけ高速にロードする必要があります.
        tf_example = tf.train.Example(features=tf.train.Features(feature={
            'image/height': dataset_util.int64_feature(image.height),
            'image/width': dataset_util.int64_feature(image.width),
            'image/filename': dataset_util.bytes_feature(filename.encode('utf-8')),
            'image/source_id': dataset_util.bytes_feature(filename.encode('utf-8')),
            'image/encoded': dataset_util.bytes_feature(open(filename, "rb").read()),
            'image/format': dataset_util.bytes_feature( b'jpg'),
            'image/object/bbox/xmin': dataset_util.float_list_feature(xmins),
            'image/object/bbox/xmax': dataset_util.float_list_feature(xmaxs),
            'image/object/bbox/ymin': dataset_util.float_list_feature(ymins),
            'image/object/bbox/ymax': dataset_util.float_list_feature(ymaxs),
            'image/object/class/text': dataset_util.bytes_list_feature(classes_text),
            'image/object/class/label': dataset_util.int64_list_feature(classes),
        }))
    
    ウェブサイトからscrapeするメタデータは次のようになります.
     {
        "id": "29365",
        "image": "https://www.modulargrid.net/img/modcache/29365.f.jpg",
        "info": [
          "CV Modulation",
          "Drum",
          "Envelope Generator",
          "Utility"
        ],
        "size": "10 HP",
        "name": "Dual Trig Conditioner",
        "manufacturer": "Analog Ordnance",
        "description": "Gate to trig + decay env"
      },
    
    そして、我々が生産する複合'偽のイメージは、以下のように見えます:

    スクリプトを実行するには、我々の訓練データのために使用するレコードの数を生成することができますし、訓練モデルの精度をテストするために使用する数
    (venv) matt@Matts-MBP modulair % python randomise.py
    100%|████████████████████████████████████████| 1000/1000 [01:47<00:00,  9.34it/s]
    Successfully created the TFRecord file with 1000 records: train.record
    100%|██████████████████████████████████████████| 100/100 [00:10<00:00,  9.10it/s]
    Successfully created the TFRecord file with 100 records: test.record
    (venv) matt@Matts-MBP modulair % 
    
    このセッションのコードはすべて次のとおりです.

    IbmDeveloperuk / 変調器



    変調器


    これらはモジュールのsythesizerからモジュールのイメージをフェッチして、オブジェクト検出モデルのトレーニングのためにそれらをフォーマットするスクリプトです.

    ここでは、このミニプロジェクトについてすべてを読むことができます.
    View on GitHub
    次のセッションでは実際にトレーニングパイプラインを設定し、データをトレーニングします.
    私はあなたがそれらをライブしたい場合は、ビデオを楽しんだことを願って、私は一般的に午後2時英国時間午後2時火曜日、各ストリームIBM Developer Twitch channel