ようこそ。ご覧いただきありがとうございます。本日は、JMPのワークフローに画像を組み込む方法についてお話しします。JMPとJMP Proの機能を組み合わせて使用し、JMP Proの機能を使用する場合は必ずその旨を明記します。JMPのワークフローに画像を組み込むという話になると、ワークフローは実に広範囲にわたります。画像をデータソースとして使用することから分析に使用すること、そしてもちろん出力に組み込むことまで、ワークフローのほぼあらゆる場面で画像を扱うことができます。
ということで、今日は少しケーススタディを取り上げたいと思いますが、まずは簡単にプレビューを行い、これからお話しする内容を順を追って説明したいと思います。JMPで画像を作成する方法、例えば別のソースから画像を取得した場合、それをデータテーブルに取り込む方法などを説明します。静止画像から動的なJMPレポートに情報を抽出する必要があるかもしれません。いくつかの例を使って、その方法を説明します。繰り返しますが、静止画像から実際に操作できるものまで、様々な例を挙げて説明します。
次に少し方向を変えて、これらの画像を使って、例えばヒートマップをJMPの機能データエクスプローラーで使える曲線に変換してみましょう。また、画像を使って気温のモデルも作成します。色々なことを行う予定ですし、作成したモデルをリアルタイムでモニタリングすることも考えています。
ということで、このセッションはこれで終わりにして、早速始めましょう。ケーススタディという観点からお話しするのが一番うまくいくと思いました。少し物語性があります。この話はほとんど私が作ったものなので、あまり深読みしないでください。物語性を持たせるためだけのものです。
ケイシー・スパークスになりきって、レッド・トライアングル・ウィジェット工場のウィジェット製造工程に不可欠な機械の製造を担当する電気プロセスエンジニアになりきってみましょう。機械の試作品を作ったのですが、機械がオーバーヒートし続けています。このオーバーヒートの原因を、機械に搭載されている特定の社内製回路基板1つにまで突き止めることができました。社内製というのは、この回路基板を社内で製造していることを意味します。これは非常にありがたいことです。なぜなら、基板に修正を加えることができるからです。実際、会社はこれを昨日中に完成させる必要があります。生産準備を整える必要があります。生産部門はこの新製品の需要に追いつくのに苦労しており、この機械は皆の作業をはるかに楽にしてくれるでしょう。皆の士気に影響を与えるでしょう。もちろん、この回避策のために残業予算は圧迫されています。
個人的な話になりますが、このペルソナ、ケイシーはレッドトライアングルで働くのは初めてで、インパクトを与えたいと思っています。私たちも皆、自分が働いている場所でインパクトを与えたいと思っています。今回は、画像を使って、問題を理解し、解決し、そして解決できたことを検証するプロセスを段階的に進めていきます。理解のプロセスを一緒に進めていきます。実験のプロセスも一緒に進め、そして検証のプロセスを一緒に進めていきます。基本的には、このプロセスを段階的に進めていくだけです。
まずはデータテーブルから始めましょう。リサーチ中にグラフをいくつか作成する、というのはよくあることだと思います。これらのデータをテーブルにまとめて、何か操作できたら本当に便利ですよね。とても簡単にできるのですが、この「編集」メニューの中に隠れています。
JMPで任意の画像を右クリックし、「編集」メニューを開くと、「このようなグラフの表を作成」というオプションが表示されます。必要なのはこれだけです。このレポートには同じグラフが複数あるため、JMPが自動的に表を作成し、グラフはフルサイズ、フル解像度で表示されています。
この問題について話し合っているうちに、それぞれのファイルにメモを取り始めることができます。Caseyは4つの潜在的な問題を発見しました。彼女はこれについてメモを取り、このファイルをプロジェクトフォルダに保存したいと考えています。そうすれば、将来、誰かがこの問題を調べる際に、メモとグラフを参照できるようになります。これは本当に素晴らしいですね。
繰り返しになりますが、グラフを右クリックして「編集」メニューを開き、このようにグラフの表を作成するだけで、非常に簡単に作成できます。これはまさに驚きの機能の一つです。後ほど、お持ちの画像をデータ表に非常に素早く取り込む方法をお見せしますが、これもほぼ同じくらいの速さです。
少し方向を変えてみましょう。初期因子のグラフはすでにあります。これはケイシーが実験しようとしている4つの潜在的な因子です。彼女はデータの取得に必要な画像もいくつか見つけました。
ここで少し寄り道します。このジャーナルにJMPマーケットプレイスの拡張機能「Image to Table」へのリンクがあり、皆さんにも共有します。正直に言うと、このアドインは私が作ったものなので、もちろん素晴らしいと思っています。無料でダウンロードしてJMPにインストールすれば、画像をインポートできるようになります。ここで、その方法の例をいくつか示します。まずはこの最初の例を見てみましょう。
ケイシーが…会社の過去の実験ライブラリをくまなく調べていたら、10年前に誰かが作ったグラフを見つけました。それは、あるX因子に対する任意の単位の累乗で表したものです。これは本当に素晴らしいグラフです。ケイシーは、このグラフが因子の一つを理解するのに役立つかもしれないと、とても興奮しています。しかし、彼女は実際に推定値を得て、それが上昇し続けるかどうかを確認したいと考えています。特に、Xが7になるところが、彼女が本当に興味を持っているところです。
線を引いて統計的に厳密に見るだけでなく、Xが7になるところまで外挿することはできないのでしょうか?もちろん、答えはイエスです。とても簡単です。アドインをインストールしたら、それを選択するだけで、「画像ファイルはどこにあるか」と尋ねられます。それでは、そのファイルを指定します。失礼しました。
画像の画像と、ここに小さなコンソールが表示されます。これをプッシュして白いピクセルを削除すると、インポートする行数が27万行から5万行に減ることがわかります。画像はテーブルにするとかなりサイズが大きくなってしまう傾向があります。時間を節約できるなら、それは素晴らしいことです。
このボタンを押すと、データテーブルといくつかのグラフが表示されます。白黒グラフの方が見やすい場合もあれば、カラーグラフの方が見やすい場合もあります。今回はカラーグラフの方が見やすいと思います。では、インポートした50,000ピクセルのデータテーブルを見てみましょう。これを下に移動して、次に何をすべきか考えてみましょう。Xが7になるまで外挿するために、いくつかの手順を実行したいのですが。
まず最初に、X軸とY軸を再調整します。選択範囲を作成します。これはグラフビルダーなので、インタラクティブに選択するのは非常に簡単です。グラフ上の領域を選択しました。「X軸とY軸の再調整」をクリックします。X軸は0から5、Y軸は0から1に設定されています。これを0から5、0から1に入力するだけです。
「OK」をクリックすると、「新しい列を作成しました。使ってみてください」と表示されます。ええ、そのアイデアは気に入りました。毎回この操作に驚かされます。こんなに簡単なのに、画像を見つけてから何度も「もっと早く使えばよかった」と思ったものです。これでスケールが揃いました。本当に素晴らしいですね。
次のステップは、真ん中の青い線だけを残すことです。他の色は不要です。JMPにデータが入っているので、これは簡単な作業になります。「クラスタリング」メニューを開きます。K平均法クラスタリングは、このようなかなり大規模なデータセットでも非常に高速です。
JMPに指示するだけです。色のクラスターを作って、いくつかの色に分けます。グラフを見ながら指で数えてみましょう。黒とグレーが2色、そして青があります。つまり4色です。ここに4色入れたくなるかもしれません。
でも、コンピューターは画像を作る際に色を混ぜ合わせてしまうことに気づきました。見える色の数を倍にすると、本当に良い結果が得られることがわかりました。「Go」を押します。繰り返しますが、これはインタラクティブなので、キーボードの下矢印キーを使って操作していくだけです。
クラスター1ではありません。ああ、ワンクリックでそこに行けそうです。クラスター2です。もっと続けられます。やりたいことは、クラスター2以外のすべてを選択して、データテーブルに移動してそれらの行を削除することです。これで青いトレースが表示され、正しい単位になっています。これで、この曲線をキャリブレーションした単位でフィッティングするのがとても簡単になりました。
これは上下に動いているので…Altキーを押しながらクリックします。上下に動いているので、おそらく双指数関数的な動きをしていると思いますが、4なのか5なのかは分かりません。覚えておくべきだったかもしれません。一番上にあるのが5なので、双指数関数的な5のパラメータなので、これを削除しましょう。
突然、ここで外挿できるようになりました。R2乗は0.99と非常に良好です。プロファイラーを見てみましょう。7のあたりが分かります。この値を取得できます。このように画像からJMPにデータを取り込むのは本当に簡単です。少し整理して、別の例を見てみましょう。これをやってみましょう。
ケイシーはXが7のところまで外挿できるでしょうか?ええ、かなり簡単です。数ステップで済みます。こちらはケイシーが見つけた別のグラフです。これは学術誌から引用したものだと仮定してみましょう。2つの異なるグループが描かれているのが分かりますが、これは単なるグラフ、いやグラフと言うべきではないかもしれません。グラフのイメージです。
彼女が本当にやりたいのは、黄色の点と緑の点について、それぞれ異なる近似直線を得ることです。彼女はデータを持っておらず、これはインターネットから入手したデータです。各グループの近似直線を得ることはできるでしょうか?もちろん、答えは「はい」です。この画像から表を作成するために、このアドインを再び使います。このサンプルの散布図を選択します。
ちなみに、言い忘れていましたが、このジャーナルをダウンロードすると、すべてのファイルにアクセスできます。ボタンを押すと、必要なファイルがすべて作成されます。
先ほどと同じことをするだけです。まず、白いピクセルを削除します。「インポート」ボタンを押します。インポートしたら、先ほどと同じように軸の再調整を行います。つまり、境界が分かっている領域を選択します。X軸は50から70、Y軸は60から180の範囲になっているようです。この再調整ボタンを押して、50から70、そして60から180の範囲で調整できます。「OK」を押します。これで新しい軸ができました。素晴らしいですね。
次に、これらのデータポイントを色で分類します。グラフビルダーで、重要な項目を選択します。次に、ここに来て、色調整を行います。いくつかオプションがあります。これはカテゴリ別の凡例で、テキストまたは文字を選択できます。
これを押すとJMPが…データテーブルを邪魔にならないようにしておくべきだったかもしれません。できました。緑色の部分がハイライト表示されました。これに関連付けられたテキストを入力するように促されています。これがAです。次はBです。コンピューターがブレンド処理をすると言ったように、余分な色がいくつか見つかる傾向があります。他に現れる色はスキップします。できました。背景には、あまり気にしない余分な色が3つありました。
でも、ここにすごく面白い機能があります。データテーブルを開いて、Aを選択すると緑色になり、Bを選択すると黄色/オレンジ色になります。でも、もっと重要なのは、他のすべてのデータがあるということです。他のデータについては気にしないので、削除します。すると、ここに凡例の残りが残っているので、これも削除します。
これでデータが取り込まれました。しかし、まだ個々のポイントが1つも取得できていません。ポイントは46個あります。もしこの近似直線を作ろうとすると、各データグループのポイント数が異なるため、精度があまり良くないのではないかと心配です。まだ準備が整っていないようです。代わりに、各ポイントの中心を取得したいと考えました。前回と同じツール、K平均法クラスタリングを使います。
色でクラスタリングする代わりに(既に色は設定済みです)、XとYのグループでクラスタリングします。つまり、JMPに「クラスターをいくつか作成してください」と指示していることになります。さて、これは問題です。クラスターの数は? わかりません。30から40の間くらいでしょうか。自分で数えてもいいのですが、この範囲のクラスターを指定すれば、JMPに「どうやら38個のクラスターがあるようだ」と教えてくれます。手で数えるより、こちらのほうがずっといいですね。
38 に来て、もう一度確認します。色をテーブルに保存します。これでグラフビルダーの色が変わります。データポイントが半分に切れてしまっていなければ、正しい数値を取得できたことになります。これらのクラスターをテーブルに保存します。これで、データテーブルに必要な作業はほぼすべて完了です。クラスターとラベルが含まれています。
これらすべてを簡単にまとめると、それぞれのクラスターがどのグループに属しているかを知りたい、そしてXとYの中間点、つまり平均値を知りたいということです。これをデータテーブルにすれば、グラフビルダーに取り込むことができ、ようやくこの質問に答えることができます。つまり、ここまで全部で約2分かかりました。すごいですね。
これで、これを探して、あの式を求めることができます。最初の質問に戻りますが、ケイシーは各グループの適合線を計算できますか?もちろんできます。画像から情報を簡単に取得できます。その情報を操作し、JMPのツールも使えます。本当に素晴らしいですね。JMPでこれほど多くのことができるなんて、本当に感心します。
ここをきれいにしてから、次の段階に進みます。この背景情報から、ケイシーは実験のいくつかの要素を絞り込みました。繰り返しますが、ここでは部品の温度を下げようとしています。彼女はいくつかの要素を絞り込み、20枚のテストボードを作成しました。
その後、彼女は各ボードに20分間のストレステストを実施しましたが、出力は数値ではありませんでした。出力は熱画像で、おそらくこんな感じのものです。この画像を使って、最も熱い部分だけでなく、ボード全体の温度を下げる方法はあるでしょうか?もちろん、答えはイエスです。私たちは既にこの方法を試していて、画像を表にしているので、ここでは省略します。
基本的に、彼女の検査の各画像について、このデータに少し処理を施す必要があります。おそらくよく見えないかもしれませんが、ここに薄い灰色の境界線があります。これを選択して削除し、次に最も熱い点(ここにあります)を選択します。そして、その最も熱い点と同じY軸を選択し、他の点を削除します。すると、Y軸をその1つのトレースだけから温度そのものに変更でき、これを使用できます。
複雑に思えるかもしれませんが、私も同じワークフローを作成しました。これはJMPで一度だけ実行した様子を録画したものです。少しズルをしてスクリプトも作りましたが、それは選択のためだけです。ワークフローは「これは何番目の実行だったっけ?」と尋ねてきて、そのデータテーブルを保存します。
人生って本当に素晴らしいですね。20枚の画像でこれをやるのは大したことではありません。同じワークフローを20回も繰り返すのが本当に嫌なら、スクリプトを書いて実行することもできます。ここではその手順は紹介しませんが、興味があればそちらも記載しておきます。この手順は実際に実行できます。Caseyはこの手順を使って温度を測定できます…X位置ごとに1つずつ実行する方法を見てみましょう。
各実行ごとにDOEが複数回反復されているのがわかります。これで20回実行のDOEを作成し、画像情報を組み込むことができました。つまり、機能データエクスプローラーを使えるということです。ちなみに、機能データエクスプローラーはJMP Proの機能ですが、これらのトレースすべてに使用できます。すみません、ここで手順を1つ省略しました。このデータテーブルの方がもう少し分かりやすいかもしれません。
全てのテストボードから全ての実行データと全てのトレース、そして実行ゼロ、つまり理想値も取得しました。JMP Proの機能データエクスプローラに「さあ、全てのトレースがここにあります。目標値も設定しました。この目標値を最適化できますか?」と尋ねると、目標値を達成するために必要な因子設定が示されます。また、それを使って実験を行い、温度トレースにどのような変化が起こるかを確認することもできます。
回路基板とその温度の画像から、表面全体の温度を最小化するDOE設定や係数設定まで、他のデータポイントを犠牲にして1つのデータポイントだけを改善するのではなく、あらゆる角度から設定できるのは本当に素晴らしいです。本当に素晴らしいですね。
ケイシーはその実験を終え、理想的なスイートスポット回路基板を製作し、最終製品を生産する準備が整いました。しかし、彼女はそれをモニタリングしたいと考えていました。DOE(実験計画法)を実行してスイートスポットを見つけるのは一つのことですが、そのスイートスポットを生産段階に導入し、実際に良好なパフォーマンスを発揮しているかどうかを検証し、確実にするのは別の話だからです。
ここで問題となるのは、試験装置には校正済みの温度センサーとサーマルカメラが搭載されていることです。彼女は両方にアクセスできましたが、生産機にはサーマルカメラしか搭載されておらず、そのサーマルカメラは既に設置されているため、温度測定に関しては何も交換したくありません。それでも、最高温度が何度なのかを知りたいのです。
いくつか質問があります。画像を温度計として使うことはできますか?もう少し踏み込んで、気温が上がりすぎたら通知が届くようにすることはできますか? わかりません。もし彼女が気温が気になるなら、スマートフォンで確認できるでしょうか? まずは、これらの画像を温度計として使うところから始めましょう。繰り返しますが、このボタンを押すと、このフォルダも自動的に作成されます。
画像を含むすべてのDOEファイルを見ると、実行番号1の方が実行番号2よりも少し明るく、したがって少し高温になっていることがわかります。これらの画像をすべてJMPに素早く取り込み、基本的にデータセットを作成したいのですが、とても簡単です。「複数のファイルをインポート」というファイルにあります。まさにそこにあります。JMPにこの操作を実行する場所を指定するだけです。もちろん、JMPは前回使用した時点を記憶しているので、既にそこに設定されています。
拡張子でファイルを選択します。PNGファイルがたくさんありますが、JMPファイルはインポートしたくないので、画像だけをインポートします。「ファイル名を追加」列をクリックすると、JMPが自動的に「ああ、画像がたくさんあるんですね。画像の処理方法は分かっています。データテーブルにまとめておこうと思います」と教えてくれます。
コピー&ペーストは一切不要でした。基本的に3クリックで完了です。本当に素晴らしいです。画像はすぐに使える状態で届きます。少しコーディングし直せば、ファイル名を実行番号だけにすることができます。
ケーススタディでは、ケイシーがこの作業を行ったと仮定します。彼女は実行回数と実際の最高温度を取得しています。これは、彼女のマシンにセンサーとサーモグラフィーが搭載されているためです。彼女はこれを用いて、画像に基づいて温度を予測できるかどうかをテストし、基本的にモデルを作成するだけです。これは少し計算負荷がかかります。これもJMP Proの機能です。JMP Proのアドインですが、基本的には画像を使用してモデルを作成する方法です。とても便利ですね。
この場合、予測を行うモデルがあります。モデルから除外されたデータに対するR2は約0.8です。Caseyは引き続きこのモデルを取得し、Pythonコードを生成し、そのPythonコードを取得します。もちろん、本番環境のマシンにいくつかのモジュールをインストールする必要があると思います。このPythonコードを本番環境のマシンにインストールしてください。
すると、本番マシンはJMPで作成されたモデルを使用できますが、Pythonバージョンを使用します。世界中のすべてのマシンにJMPをインストールする必要はありません。JMPを使ってモデルを作成し、マシンでそのモデルを実行できるのです。本当に素晴らしいですね。データベースに出力するためのコードもいくつか追加し、JMP Liveを使って自動的に更新して温度の変化を確認しています。
彼女はあらゆる警告に登録しています。もし制御不能になったら、すぐに分かりますし、スマートフォンでも確認できます。スマートフォンでどのように表示されるかを見せた方がいいかもしれません。彼女はスマートフォンで確認できます。はい、すべて順調です。質問の答えは、気温が上がりすぎたら通知が届くか、スマートフォンで気温を確認できるかということですが、はい、はい、はい。ここで一番すごいのは、データテーブル内の画像を使って気温のモデルを作成し、そのモデルが非常に正確に予測している点です。
少し振り返ってみましょう。今日は何をしましたか?JMPから画像をいくつか取得しました。すみません。JMPに画像を作成させました。画像を表に取り込みました。グラフや画像だけなど、JMPに含まれる情報をJMPに取り込み、操作したり、活用したりしました。
これらの情報を使って、画像から外挿した曲線を使った実験を行い、さらに画像自体をモデル構築の要素として利用することができました。ご視聴ありがとうございました。画像を使って次に何ができるのか、とても楽しみです。ありがとうございました。