2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
Juliaと画像処理(全1記事)
リンクをコピー
記事をブックマーク
Dsuke_KATO氏(以下、Dsuke_KATO):加藤大典と申します。「Juliaと画像処理」で、Juliaで画像処理をやろうとしたらそれ用のライブラリがあったのでちょっと触ってみたという話です。
自己紹介。大阪大学で視覚神経について大学で10年くらいやっていました。ソフトウェアのベンターにいって、今は医療機器のメーカーで働いています。
MATLABときどきCやってきました。仕事を始めてからやったPython触って、「お、これは便利だ」というのを始めて知って。そのあと須山さんの本でJuliaを知って、黒木さんに捕捉されるという馴れ初めです(笑)。
(会場笑)
現在の仕事はCとかC++を使っているだけなので、あんまりちょっと出番がなくなってどうしようと。
こんな画像とか撮るメーカーで働いています。
こういうのは分析もやらないといけないので、ここで画像処理をどうやってやろうかなということで、結局C+使うんですけど。コンパイルが面倒くさいなと。
PythonでAPI叩くだけならいいんですが、構文をぐるぐる回すのは嫌なので、何人かの方がおっしゃっているように速いということでちょっとJuliaを。
そもそもJuliaで画像を扱うのはどうなんだろうと思って調べてみたところ、JuliaImagesというところが今いろんなパッケージを包括的に扱っていて。ちょっとそれを触ってみたという感じです。
表示はわりとMATLABとかインターフェースに似ていて楽ちんです。
何個かJupyter Notebookを使って書いてみたので、それをちょっとだけ回してみたいと思います。(参考注:JuliaImagesSamples.ipynb)
これはTwitterでリンクを回しているんですが、サンプルの読み込みは、ここではTestImageを使っています。
インターフェースとしては線形フィルターでぼやかしたり。これはガウシアンフィルターですけど。まだAPIがいろいろと統一されていなかったり非効率なんですが、わかりやすいとか、効率的だけどわかりにくいとか。
まだAPIが整理されていませんが、整理されていない分ちょっとおもしろいところがあります。それがカーネルファクターとかそのへんです。
それから線形フィルター用のAPIも提供されています。アルゴリズムによってはもっと最適化できるとは思うんですけど、これはMAD関数だけ用意しておいて、それにどんな関数を掛けていきますかと。
この場合、メディアンフィルターをかけたらこうなります。汎用的なインターフェースが定義されていて。issueやプルリクを見ていたらメディアンフィルターはもっと効率的なアルゴリズムがあるぞとプルリクが投げられていたりするので、わりとそれ見ているのもおもしろいです。
画像の縮小をやりたいときは、自分で1回ダウンサンプリングするときにアンチエイリアスの対応をしてくれないので、なにかかまさないといけません。
あと、画像の回転とか。ひと通り画像処理に必要な分とか、物体検出もやりたいなと思っています。そもそも検出領域を描けるのかって、ImageDrawとかで長方形書いたりとかできます。わりと必要最低限の分は揃っているかなと思っています。OpenCVほどいろいろな関数が準備されているわけではないんですが。
あと、画像処理じゃないんですが、色空間の話も便利に扱えるようになります。これはJuliaじゃないですが、色空間でJPEGの圧縮に使われている表現なんですが、輝度情報と色差空間で画像を表現しましょうと。
いわゆる色相、彩度、明度とか、そういった変換をしてデータを扱う。それをすぐに簡単に表示することができるので、ディープラーニングとはぜんぜんつながってないんですが、そういったかたちで非常にデータが扱いやすい構造に準備されているという印象です。
データの扱い方がちょっとだけ特徴的です。基本的にデータは0、1の範囲で全部正規化して扱うそうです。
中のデータ構造は8ビットです。例えばuintとかcharとか、いわゆるC言語で使われていたものも0、1で扱います。
そのときに使われていたのが固定小数点数です。例えばN0f8とか、ノーマライズドの0。ちょっと赤色で、こういうことがあるので、赤色の部分。この場合16ビット分の2バイトのデータなんですけど。
例えば8ビットのデータを扱う人がほとんどだとは思うんですけど、ものによっては10ビットとか12ビットとか高解像度のものを扱うときにもそれ用のデータ構造が用意されています。
下は12ビットでそれを0、1の値で扱いますよといった固定小数点数でデータストレージを扱うというところがあります。
あともう1個だけ。イメージの画像でchannelviewの話もちょっとあったんですけれども。例えばこれで画像を1個作ってみて、それのサイズを見てやると普通はRGBなのでchannelの数字が出てきそうなんですけど、64×64という数字が返ってきてます。
これはちょっとJuliaの特徴的なところだと思います。実際にそれのデータを取ってこいというのはchannelviewという関数が用意されているので見てやると、そうしたらやっと3×64×64というよく見るデータが出てきます。
これはグレー画像とカラー画像を同じようなアルゴリズムで処理できるので便利だろうというのでこうしているみたいです。
ちょっといろいろと触ってみた感じなんですが、最初に始める分にはいいんですが、まだまだ成長途中なのでそれを追いかけながら自分で実装して楽しむというにはいいと思います。私が当初考えていたのは、どう使うかはまだまだです。以上です。ありがとうございました。
(会場拍手)
2024.12.20
日本の約10倍がん患者が殺到し、病院はキャパオーバー ジャパンハートが描く医療の未来と、カンボジアに新病院を作る理由
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.17
面接で「後輩を指導できなさそう」と思われる人の伝え方 歳を重ねるほど重視される経験の「ノウハウ化」
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05