2024.12.10
“放置系”なのにサイバー攻撃を監視・検知、「統合ログ管理ツール」とは 最先端のログ管理体制を実現する方法
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.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
2024.12.09
10点満点中7点の部下に言うべきこと 部下を育成できない上司の特徴トップ5
2024.12.09
国内の有名ホテルでは、マグロ丼がなんと1杯「24,000円」 「良いものをより安く」を追いすぎた日本にとって値上げが重要な理由
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.12.10
職場であえて「不機嫌」を出したほうがいいタイプ NOと言えない人のための人間関係をラクにするヒント
2024.12.12
今までとこれからで、エンジニアに求められる「スキル」の違い AI時代のエンジニアの未来と生存戦略のカギとは
PR | 2024.11.26
なぜ電話営業はなくならない?その要因は「属人化」 通話内容をデータ化するZoomのクラウドサービス活用術
PR | 2024.11.22
「闇雲なAI導入」から脱却せよ Zoom・パーソル・THE GUILD幹部が語る、従業員と顧客体験を高めるAI戦略の要諦
2024.12.11
大企業への転職前に感じた、「なんか違うかも」の違和感の正体 「親が喜ぶ」「モテそう」ではない、自分の判断基準を持つカギ