数値解析系

2022年12月31日 (土)

2022年まとめ

年末恒例の、1年間まとめ記事です。

今年(2022年)もいろいろありました。というわけで、月ごとに振り返ってみましょう。

【1月】

意外に長生きな百均ショップのディスプレイ関連品: EeePCの軌跡

1月はこれといって際立った記事がありませんでしたね。

強いて言うなら、この百均便利グッズ記事でしょうか。

なお、これらは今でも使ってます。便利なものは便利。

【2月】

iPad mini (第6世代)が来ました!: EeePCの軌跡

2月一番のビッグニュースはこれ。

iPad mini(第6世代)を買いました。

今にして思えば、この時買っておいて正解だったかなぁと。円安が進んだおかげで、この時はまだ約6万円だったiPad miniが、今や7万円越えですからねぇ。

バッテリーのもち、指紋認証、画面の大きさ、いろいろと便利です。

ケーブルがUSB-Cに対応したというのも、何かと大きな変化点。それまでLightningケーブル一筋だったのが、このiPad miniを機に大きく動きます。転送速度が速いことも、かなり衝撃的でした。

このiPad miniの存在が、iPhoneの使用頻度を下げる結果となるのですが……今年の後半に、それ以上の強敵が現れます。

OpenCVでサイゼリヤの間違い探しを解くやつ: EeePCの軌跡

なお、このOpenCVでサイゼリヤ間違い探しの記事も、実務的には役に立っております。

【3月】

HDMI端子付きUSB-C ハブを購入: EeePCの軌跡

USB-Cハブを買いましたが、公私ともによく使いますね。

モバイル系PC類を持ってる人なら、これは一つ持っておくと何かと便利です。

大須の「古墳」に行ってきました: EeePCの軌跡

そういえば、名古屋 大須の古墳に初めて行きました。

大須に足を踏み入れてかれこれ30年ほど経ちますが、この古墳の存在を知ったのは最近です。1500年前からあるのに……

まだまだ私の知らない大須が、たくさんありそうです。

【4月】

YouTubeライブなどでよく使われる「OBS Studio」を使ってみた: EeePCの軌跡

OBS Studioというソフトですが、最近活躍しました(業務にて)。

本来は生配信用ですが、動画とプレゼン資料を合成するのに使ってました。

なお、Zoom配信用のプラグインもあるようです。それはまた、いずれ使う予定。

【5月】

「小説家になろう 第10回 ネット小説大賞」の一次選考通過作品のタイトルで共起ネットワーク図を作る手順: EeePCの軌跡

Twitter上でプチバズったネタの解説記事です。

この手の分析ツールからは、いろいろと読み取ることができるため便利です。

「小説家になろう」の現状ってやつを知ることにもなります。だいぶ廃れつつあるとはいえ、「異世界」はまだ強いことが分かります。

UGREEN 急速充電器 65W 4ポート(USB-C×3、USB-A×1)をAmazonタイムセールで買いました: EeePCの軌跡

この充電器は、買ってよかったですね。

8月の旅行では活躍しました。

ノートPCでもUSB-C給電に対応してるものが多いですし、65W~100WクラスのUSB‐C電源を一つ持っておくと旅行時などで重宝する時代になりつつあります。

【6月】

大腸内視鏡検査を受けてきました: EeePCの軌跡

内視鏡デビューしました。

この直前に、かなり食べ物を規制したり、当日含め下剤を飲んで腸を綺麗にしたせいか、体重が67kg→65kg台までダウン。

以後、今に至るまで65kg台を維持してます。

【7月】

大阪出張ついでに大阪城 & 個室ワーキングスペースへ行ってみた: EeePCの軌跡

すげえ久しぶりに、新幹線に乗りました。2019年以来ですね。

午前は観光、午後はお仕事してました。

ワーキングスペースを借りたのも初めてですね。このリモートワーク時代になって一気に盛り上がった感のあるサービスですが、確かにこれは便利です。

mouseコンピューター製12800円の「GIGAスクール構想」PCを買ってみた: EeePCの軌跡

相変わらず(?)安物買いに走ってます。

噂の12,800円PCを買って遊んでみました。

個人的にはネットブック以来のワクワクする端末ということで、ちょっと盛り上がってました。

結論から言えば、使えると言えば使えるし、使い物にならないといえばそうだし。よほど派手なことをさせなければ、使えるんじゃないの?っていう端末です。

例えば、子供がYouTube見るのに使うとか。

1.3万円PCのmouse E10で「AI」を走らせてみた: EeePCの軌跡

ちなみに「AI」を走らせてみたりしました。無茶ですね。

結局このPCは、時々子供が使ってます。

【8月】

8月は、かなり濃い一か月でした。

まずは、画像生成AIが盛り上がり始めた月という印象です。

Midjournyというお絵描きAIを試してみた: EeePCの軌跡

最初に出てきたのは「Midjourny」というサービス。

こいつが作る画像のあまりの精密さに、ネット中が盛り上がりました。

実際、この記事へのアクセスがかなりありました。1日で一千近く。こんなの久しぶりです。

高精度な画像生成AI「Stable Diffusion」を自分のPCで動かす方法(+ google colab): EeePCの軌跡

が、間髪入れずに今度は「Stable Diffusion」が登場。

こちらはさらに洗練度が向上した上に、オープンソースときました。

つまり無料で使える。

これがさらに世間に画像生成AIの火を点けました。

東京へ行ってきました: EeePCの軌跡

と、世間が激動の時代の中、のんびりと東京旅行に行ってきました。

ディズニーランドとオフィシャルホテル、秋葉原、帝国ホテル、浅草寺、東京スカイツリーなどなど、いろいろと回りました。

久しぶりに訪れた秋葉原は、まだ眩しかった……

【9月】

話題の画像生成AI「Stable Diffusion」を自分PCのCPU環境で実行する方法: EeePCの軌跡

先のStable Diffusionをオンプレ環境で実行する環境を手に入れました。

やはりクラウドに頼るというのも、ちょっと気が引けます。こういうものはオンプレで動かしてなんぼと思ってるので。

これのおかげで、会社でもStable Diffusionを実行させることが可能になりました(社内では原則、クラウドサービスは利用禁止のため)。

Google Pixel 6aをセットアップしてみた: EeePCの軌跡

これが今年のベスト・バイ確定ですね。

ついにAndroidのフラグシップ端末であるGoogle Pixel 6aを買いました。

大須のイオシスで未使用品が安かったので、衝動買い。

結果として、これは買って大正解でした。ほんと、大正解。

どれくらい正解だったかと言えばiPhoneの利用頻度が激減するくらいです。そこまで使いこなすことになるとは思いもよらず。

ちょうど時を同じくしてリリースされたiOS 16があまりにクソ過ぎた上に、画面内指紋認証の使い勝手の良さもあってそっちばかり使うようになりました。

そろそろ、Androidへの乗り換えを考えた方がよさそうです。

【10月】

話題のAI迷彩セーターは本当に物体検出をだませているのか!?: EeePCの軌跡

あまり盛り上がりませんでしたが、ネット記事に疑問符が立ち、検証した記事です。

いわゆる「AI迷彩」というやつですが、記事中に「YOLOv2」では検出できなかったと書かれているのを見て、ピンときた次第。

他の方でも、このAI迷彩の有効性に疑問を抱いている人もいました。

試しに、うちでYOLOXで検出させてみたら、あっさりと検出できました。

この手のAI系のネット記事でも、信ぴょう性が疑われるものもあるのでは?と考えされられた出来事です。

【11月】

COCOAアプリを完全に消す方法(iPhone、Android): EeePCの軌跡

いよいよ、コロナ禍の終わりを告げるような、そんな記事です。

COCOAアプリの消し方、というやつです。

ただアプリを消してしまうのはまずいので、ちゃんと設定も直しましょう、という注意事項をまとめたものです。

iPhone、Androidの両方を持っていてよかった……と思わせた記事でした。

コロナの抗原検査キット使ってみた: EeePCの軌跡

そうそうコロナと言えば、この月には抗原検査キットを初めて使いましたね。

幸い陰性でした(妻が、です)が、これに頼る日がまさか来るとは……というのが正直な思いでした。

【12月】

512GBのmicroSDカードを買った: EeePCの軌跡

大容量な512GBのSDXCカードを買いました。

写真のバックアップ & Surface Goストレージの用途として購入。

容量偽装品でもなく、今も元気に動いております。

「DXに挑む!はじめの一歩 ~デジタルリテラシーを身につけよう~」にて登壇: EeePCの軌跡

何気に、私自身にも飛躍がありました。

2016年から、このブログで機械学習(ディープラーニング)を取り上げてきましたが、それが実を結んだような出来事でした。

雪の大須でXperia ace IIIを購入: EeePCの軌跡

今年のラスト・バイ・ガジェット。Xperia ace IIIです。

正直、可もなく不可もなくと言った端末ですが、これがたったの1.8万円ですからねぇ。普段遣いには特に支障なし。私的には、もはやiPhoneに10万かける価値はなさそうです。

気づけばすっかり、Androidに洗脳されつつありますね。iPhone、危うしです。

振り返れば今年は結構、端末を買いましたね。iPad mini、mouse E10、Google Pixel 6a、Xperia ace III……あれ、iPhoneがないぞ!?

来年はさすがにもう少し控えるかなぁと。

とはいえ、Google Pixel 7aあたりはちょっと気になってます。値段次第では、手を出す可能性大。

そろそろコロナ禍もおさまって、普通の暮らしを望みたいところ。でもまだ「普通」には戻れないかなぁ。

あまり良い展望を描けない2023年ですが、残りあと数時間でそれは訪れます。

来年こそ、いい年にしたいです。ということで皆さま、よいお年を。


Mr.PC (ミスターピーシー) 2023年2月号 [雑誌]

2022年12月16日 (金)

「DXに挑む!はじめの一歩 ~デジタルリテラシーを身につけよう~」にて登壇

身バレしちゃうので、こっそり?紹介。

昨日、こんなセミナーが行われました。

「DXに挑む!はじめの一歩 ~デジタルリテラシーを身につけよう~」セミナーを開催します|中部経済産業局

で、実はここで登壇しておりました。はい。

二人の内、もちろん、下の方です。

詳しくは書きませんが、他の方々が経営層向けの内容だったのに対し、こちらはどちらかというとボトムアップ的な話だったので、正直大丈夫かと心配になりました。が、意外と好評でしたね。

ちなみに、話の前座に出したのは、この記事の内容。

TensorFlowで「松本城」にすり寄ってくる自動運転カー作ってみた: EeePCの軌跡

私と機械学習の話として、切っても切れないエピソードなので。

会場には数十人、後日配信されるYouTubeにもかなりの人数が登録されていると聞きます。

つまり、デジタルというキーワードに、悩みを持たれている会社や団体が多いということは痛感します。

一方で、経済産業省、厚生労働省からも支援策があるという事実も知りまして、まさに国を挙げての課題だということも実感。

そんな方々相手に、こんな話して大丈夫だったんだろうか・・・?

ともかく、このブログでも2016年くらいから機械学習を学ぶ(遊ぶ)ネタを延々と続けてきましたが、それが結実したのかなぁという想いです。

とりあえず、疲れました。今日からまた、頑張ろう。


最短突破 データサイエンティスト検定(リテラシーレベル)公式リファレンスブック

2022年12月 4日 (日)

Interface 2023年1月号を買った

表題の通りです。Interface 2022年1月号を買いました

Pxl_20221203_064631075

もちろん、LiDARの記事も目当てではあったんですが。

Pxl_20221203_064639257

どちらかというと、この別冊の方に惹かれて購入。

ここのプログラムが、マジですごい。

Pxl_20221203_064817391

例えばこれ。てっきり数式で歌でも作るんかいな?と思っていたら、全然違います。

RSA暗号を使った暗号化の応用の話でした。

Pxl_20221203_064714975

例えば、画像ファイルを暗号化、復号するプログラムがついてます。

これ、ちょうどほしいと思っていた技術なんですよね。会社でよく使うので。

実は文字列をRSAで暗号化して秘密文章を送信するというのは作ってあるんですが、画像までできるのは初めて見ました。

他にも、かなり使えそうなネタが多いです、この別冊。

Pxl_20221203_065006534

もちろん、本体のLiDAR応用の部分もなかなかいい感じです。

気になる方はぜひ、ご購入してご覧になられることをお勧めいたします。


Interface(インターフェース) 2023年 01 月号 [雑誌]

2022年11月13日 (日)

ロビ君再始動!等

久しぶりに、こんなものを引っ張り出してみました。


Img_2811


ロビ君です。2014年、つまり今から8年前にはせっせと作ってたんですよね、これ。


完成時の記事は以下。


週刊ロビ第70号到着&製作 そして・・・ついに完成!!: EeePCの軌跡



このころはまだ、白かった。


今じゃすっかり、出番がありません。


Img_2814


で、久しぶりに動かそうとすると、これが動かず。どうやらバッテリーが過放電してしまったようで、充電できなくなってました。


で、予備のバッテリーを入れると、こちらも多少劣化している者の、とりあえず10分程度は動きます。


Img_2815


差しっぱなしがまずかったみたいで、こうやって抜いて保管しておかないと過放電になってしまう模様。


ということで、抜いておきました。


Img_2816


実は地元のコミュニティにて、手元にある「変なもの」をとあるところで展示することになりまして、それで急遽引っ張り出したというわけですが、これならなんとか展示に耐えそうです。


Img_2817


ちなみに、音声認識のコマンド表はコピーしておきました。


Img_2818


もう一体のロボットである「ロボザック」ですが、こちらは2つのバッテリーともに寿命を迎えてしまい、数歩歩いたところで電圧が落ちて挙動がおかしくなります。


こっちは2006~2007年なので、もう15年も前のもの。そりゃあ寿命を迎えるわけですわ。


Img_2813


変なもの展示と言えば、こういうものもあります。


Raspberry Pi 4を使った骨格推定アルゴリズム「mediapipe」を動かすやつ。


いかにもAIっぽい挙動を示すので、分かる人には分かるというものですが、ちょっと玄人向きかなぁと。


他にもいろいろとあるんですが、Raspberry Pi戦艦大和はバッテリーがなく、そのほか作ったRaspberry Pi工作類はすべて部品を抜いてしまったため、原形をとどめたものがありません。


にしても、振り返ってみればいろいろと作ってますね。その時はヒートアップしてるんですが、できてしまうと冷めてしまうため、いざ動かそうとすると動かなくなってるなど、そういうものが多過ぎです。


時々は、メンテナンスしてやらないといけませんね。


ディアゴスティーニ ロビ フルセット(サッカーボールだけなし)


2022年10月29日 (土)

話題のAI迷彩セーターは本当に物体検出をだませているのか!?

画像生成AIほどではありませんが、「AI迷彩なセーター」が少し話題になってますね。

監視カメラAIが認識できないセーターが開発され、ネット「新たな都市迷彩」 | マイナビニュース

御覧の通り、不思議な模様のセーターを着たら、物体検出に引っかからなかったというもの。

以前よりこのAI迷彩ってやつは存在するので、また新手のやつが出てきたのかなぁと思っていたんですが。

記事を読んでいて、少し違和感が。

この記事の後ろの方に「実験では、MicroSoft社が提供する画像データセット「COCO」で学習したYOLOv2という物体検出のアルゴリズムを用いた監視カメラを使用。」と書かれてまして、これを読んだ直後、

えっ、今さらYOLOv2ですか!?

となった次第です。

ガンダムで例えるなら逆襲のシャアで旧ザクが活躍してるような違和感とでも言えばわかっていただけるでしょうか?

あるいは、F-15やF-35が全盛の現代に紫電21型(紫電改)に乗った名パイロット菅野直大尉が無双する物語を読んでいる風にも感じます(いや、それは読みたいかも)。

YOLOv2なんて、いくら何でも古すぎるアルゴリズム。このブログでもその名前が出てきたのは2018年です。

TensorFlow+KerasでSSDを独自データで使えるようにしてみた: EeePCの軌跡

この業界で4年って、結構古いですよ。今どきv2なんて使ってる人を見たことがない。YOLOもv3ぐらいから実用レベルとなった感覚なので、v3以降ならばまだわかるんですけど。

で、さらにこんなツイートにも遭遇。

最近のアルゴリズム(Yolov5)でテストしたら、このAI迷彩に関わらず難なく検出したようです。

うーん、このAI迷彩、ますます怪しいぞ。。。

ということで、私もテストしてみることにしました。

ここでは、比較的新しいアルゴリズムである「YOLOX」を使います。

コードとモデルはこちらの記事を参照。

訓練済みYOLOXでサクッと推論したい場合に使える方法 | Shikoan's ML Blog

使っているのはYOLOX-sなので、比較的軽めのモデルです。めちゃくちゃ精度が高いというわけではない。

続いて、なるべく解像度のよさげな画像を入手。

着ると監視カメラでAIが認識しないセーター開発→「PSYCHO-PASSの世界にありそう」「AIと人間の戦いは始まっていた…」 - Togetter

画像はここからゲットしました。

ほんとうは枠無しのオリジナル画像でテストできれば良かったんですが。ネット上には見当たりませんでした。

で、結果です。

Aimeisai

これが

Pathtooutputimage

こうなりました。

あれ、ちゃんと検出できてるぞ。。。

解像度が低いからじゃないか、とも考えられますが、これを見る限り絶対ダメということではなさそう。

少なくともYOLOv2(≒旧ザク)に勝ったぐらいであらゆる物体検出AI(≒ガンダム)に勝てると宣言するのはちょっとやり過ぎではないかと。

そういえば、イスラエルあたりで人を捉えたら狙撃する機銃なんてのが作られたそうですが。

「AIが人間をロックし正確に狙う機関銃...」イスラエルが開発、パレスチナ難民キャンプに配備される(ニューズウィーク日本版) - Yahoo!ニュース

こいつがYOLOv2よりもずっと新しいアルゴリズムを採用していた場合、このAI迷彩セーターを着て「撃てるものなら撃ってみやがれAIめ!ヒャッハー!」と言って飛び出した人が撃たれちゃったら、どうするつもりなのでしょうか?

私の知る限りではYOLOv3、v4、YOLOXあたりは実装例が多い手法ですから、せめてこの辺りでテストすべきだったのでは?と思いました。


TensorFlowはじめました3 Object Detection ─ 物体検出 (NextPublishing)

2022年10月26日 (水)

ある意味「AI」の正しい使い道!? 味の素のAIによるパッケージデザイン

「AIでパッケージデザイン」って言われたら、

「ああ、また画像生成AIか」

と思いました。はい。

が、それとは全然異なるアプローチに、ちょっと興味そそられます。

味の素、AIによるパッケージデザイン開発で「マッケンチーズ」の売上は計画比1.5倍に

株式会社プラグが提供するパッケージ評価サービス「パッケージデザインAI」を味の素が用いて、「マッケンチーズ」という製品のパッケージデザインを作成したところ、売り上げが想定の1.5倍に達したというニュースです。

「パッケージデザインAI」とは、1020万人の消費者調査を教師データとして学習されたモデルで、消費者がデザインをどう評価するかを判定する「評価AI」と、デザインを実際に生成する「生成AI」とがあるそうですが、今回用いたのは前者の「評価AI」とのこと。

いくつかのデザイン案と、その製品に求めるキーワードとを組み合わせて、最も評価の高いデザインに寄せていくというもののようです。

結果的に、デザイン開発コストも半減したそうですが、そちらは置いておき。

デザインって、本当にその製品の売り上げを左右します。車なんかだと、それが顕著に現れますね。バカにできません。

で、そのデザインそのものは人が作って、AIに判定させる。その値をみて、目的の製品イメージに寄せていく……デザインそのものを自動的に作らせるのではなく、意思決定の補助にとどめるというのが上手い使い方だなぁと個人的には思います。

AIの発達と、人の創造レベルの向上。一見すると相反する両者に見えますが、互いをうまく補い合うというのがAIのもっとも現実的な使い方じゃないかなと。

でないと、人がバカになってしまいますからね。

画像生成AIが流行ってますけど、これもそのまま使うのではなく、支援的な使われ方が現実解ではないかと思ってます。実際、そういう使い方をしている方もいらっしゃるようです。

発達しすぎた技術が人を不幸に追い込む、そういう方向の科学的発展は、あってはいけないことだと思いますね。自称「データエンジニア」としては、それを忘れないようにしたいと思ってます。


味の素 マッケンチーズ 1食分×8個 【マカロニチーズ】 【マカロニ&チーズ】

2022年10月24日 (月)

画像生成AIは人類を脅かすほどの存在となりうるか?(いや、そうはならんやろ)

昨今、Midjournyを始め、Stable Diffusion、NobelAIなどの画像生成AIが話題沸騰中です。

で、そのあまりの高クオリティな画像に、絵師さん廃業か?などと言われたり、おそらくは作者に無断で漫画やイラストを教師データとして用いたことへの倫理的な問題点が指摘されております。

が、今回はそれらとは別の視点で、画像生成AIの欠点ともいうべき部分をまとめてみたいと思います。

話の発端は、こちら。NobelAIに「ラーメンを食べる」というイラストを要求すると、おかしな画像ばかりが返ってくるという話題をまとめたサイトです。

【AI画像生成】お絵描きAIでラーメンを食べる絵が描けないと話題だったので、Novel AIを使って試してみたら、想像以上にヤバかった件・・・!#NovelAI #NovelAIDiffusion : 超絶"厳選"ニュースまとめch

なんていうか、手づかみだったりスイーツやドリンク風にラーメンを摂取?する画像が出てきます。

うーん、これはちょっとシュール過ぎる。

これ以外にも、画像生成AIが苦手なジャンルというのがあるようです。

考えてみれば、ラーメンを食べるイラスト画像ってあまりないですよね。教師データの少なさが、この悲劇?を招いているものと思います。

私などは銀河英雄伝説風の宇宙戦艦などを描かせたいんですが、これも教師データとなりうる画像が少ないジャンルのためか、あまりいい絵ができたためしがありません。なんだか古臭いタイプの宇宙船ばかりが出てきます。

202210231254092a_space_battleship_that_f

さて、綺麗な画像ができたからと言って、細部を見るとやっぱりどこか不自然というのが、画像生成AIの特徴でもあるようです。

イラスト系でかなり高精度な画像を返すNobelAIでも、よくできたイラストであっても細かく見るとどこか変、というのがあって、それをまとめた記事は以下。

 画像生成AIによって生成されたイラストの見分け方 | おいもログ

で、Stable Diffusionで実写系の画像を作らせても、なんだかおかしな画像を返してくることもあります。

例えばステーキ肉のような画像は相当数の教師画像があるためか、わりと高クオリティな画像が生成されます。

20220922194025191662340333scale1000ddim1 

ですが、やはり欠点も見えてきます。

例えば、この画像。

20220922193131121662340326scale1000ddim1

一見すると悪くない画像に見えますが、よく見ると変です。

一枚肉なのに、焦げ目が不連続です。

おそらく、カットステーキの画像が一枚肉として表現されてしまったものと思われます。

AIはカット肉と一枚肉との区別が付けられないため、こういうことが起きるのでしょう。

似たような事例として、文字表記がおかしいというのもありますね。

202209201429531331126655scale1000ddim1

特に日本語は酷いものです。ひらがな、カタカナ、漢字とは似ても似つかないものが出てきます。

これは文字を「模様」としてしか認識しておらず、それっぽい見た目のものを返した結果、こうなるのでしょう。

ところで、画像生成AIに対して一つ、理解されていないかなぁと思うことがあるんですが。

よく「AIに作らせてみた」系の投稿がTwitterなどで見られますが、あの画像を一枚作り上げるために、数枚ほど作って良いものをチョイスしていることはよくあることです。

例えば最近、「飲み会」の画像を作らせてみたんですが、

202210102029565a_scene_of_the_movie_that

一見すると悪くなさそうですが、よく見ると右側の男性の顎がちょっと怖い。不自然すぎます。

ランダムノイズを付加してそこからデコードした信号を画像として整えていくようなアルゴリズムですから、不自然なものが出てきてもおかしくないです。

こういうものを何枚か出力させてみて、まともな奴をチョイスして表示させていることが多い、というのが現状かと思います。

(NobelAIは試してませんが、ラーメンの画像を見る限りは、やはりまだまだ失敗作も多いんじゃないかと推測してます)

正直言って、人類を脅かす(?)ほどの存在にはまだまだ遠く及びませんね。

今後改善されることを期待はしたいですが、教師データとなる既存のものを参考に画像を生み出しているという性格上、人間の想像力を超えるものを作り出すことは不可能です。

ゆえに、絵師さんの役割が消えることはないと考えます。

この画像生成AIですが、例えばアニメやイラストを描く人の負担低減としてベース絵や背景画像を作らせるのに使うという活用法が、もっとも良いAIとの付き合い方になるのではないか、と個人的には考えてます。


MSI GeForce RTX 3050 VENTUS 2X 8G OC グラフィックスボード VD7986

2022年10月 4日 (火)

NovelAI diffusionがヤバい

ここ数か月の間に、画像生成系AIが急激な進歩を遂げております。

Midjournyに始まり、Stable Diffusion、それ以外にもいくつもの画像生成AIが話題になりましたが、極めつけとして「NovelAI diffusion」なるものが出てきました。

【解説】NovelAIで超ハイクオリティな二次元イラストを生成してみる #NovelAI #NovelAIDiffusion|さいとう|note

このNovelAI、一言で言えば「二次元特化型画像生成AI」とでもいうんでしょうかね。マンガや小説の表紙絵のような画像をほいほいと作成してくれるようです。

例えば、こんな感じの画像が作れるようで。

なお、今のところ無料での利用はできない模様。

先のリンク先に、利用方法が書かれています。

で、このNovelAIが今、物議を醸しだしているみたいです。

【大炎上】NovelAIが無断画像転載サイトdanbooruの絵を学習データに使用にネット民大紛糾「絵師は詰んだな!」「他人の絵で勝手に商売しとるんか!」#NovelAIDiffusion #NovelAI #Danbooru : 超絶"厳選"ニュースまとめch

曰く、無断画像転載サイトにある画像データを教師データとして作られたAIな模様、とのこと。

いや、それを言い出したら今までの画像生成AIすべてがその転載サイトの画像データをつかっているらしい、との話だそうで。

確認のしようがないので何とも言えませんけど、でもおそらく間違いないでしょうね。ついでに言えば、実写画像も無断で使われている可能性だってあります。

ちょっと厄介なのは、教師データに使った画像そのものが生成されるというわけではないため、著作権的な問題を問えないというもの。

ですが、この手のAIには「画像の生成精度が向上 = どこかで見たような絵が出来上がる」という構図もあって、高精度な画像が作り出せるようになったがゆえの問題というものが噴出し始めたようですね。

しかも、オープンソースで配布するならまだしも、有料サービスとしてしか使わせないとなると、それってつまり他人の才能を勝手に流用して商売をしているようなものだと言われても仕方がないわけで……

画像生成AIが急速に発達したがゆえに生じた、倫理的な問題ともいえます。

さて、そんな高精度なAIですが、実はこの手のAIにも盲点があります。

簡単にいうと「航宙戦闘艦を上手く描いてくれるAIがまだ存在しない」ことです。

いわゆる漫画やラノベの表紙絵・挿絵は特有の娘の絵が使われているがゆえに、大量の教師データが存在します。

が、私が「小説家になろう」で書いているような砲艦やら強襲艦やらは、ほとんど教師データが存在しません。

新鋭艦隊のポンコツ旗艦の提督と戦乙女たち

てことで、この手のAIには期待することは多いんですけど、残念なことに私を満足させる画像は作ってくれそうにありません。

宇宙戦艦ヤマト、ガンダム The Origin、銀河英雄伝説くらいですからねぇ、この手の画像は。

つまりまだAIには未知のフロンティアがたくさん存在するわけです。

ということで、AIが人の仕事を奪うことは、まだまだ当面の間は起こりそうにないですね。

AIに仕事を奪われそうだと懸念されている絵師様、この未知のフロンティアならばまだまだ活躍の場が残されております。なんとなれば、私の作品につながるような絵を描いていただければ、などと考えないこともありませんが(チラチラ)


世界の終わり 【画像生成AI 生成画像集】

2022年9月17日 (土)

話題の画像生成AI「Stable Diffusion」を自分PCのCPU環境で実行する方法

このブログでも紹介した単語から画像を生成するAI「Stable Diffusion」を、NVIDIA製GPU+CUDAの環境がなくても実行できる方法を見つけましたので、紹介します。

きっかけは、以下のツイート。

ここをたどった先にあるリンク

[ONNX] Stable Diffusion exporter and pipeline by anton-l · Pull Request #399 · huggingface/diffusers · GitHub

を参考に進めます。

なお、ここではWindows 10/11とWindows版Python(我が家のPythonのバージョンは3.7.9)で使うことを想定してます。

(1) 前準備

前回の記事(高精度な画像生成AI「Stable Diffusion」を自分のPCで動かす方法(+ google colab): EeePCの軌跡)にも載せた内容と重複しますが、まず以下のサイトに入ってHuggingFaceのアカウントを作成。

Hugging Face – The AI community building the future.

確認メールのやり取りなどが発生しますが、その辺りは順次実行します。

アカウント作成後、ログインしつつ以下のページにアクセス。

CompVis/stable-diffusion-v1-4 · Hugging Face

するとここで、以下のような文章が出てきます。

Stablediffushion01

一番下にあるチェックを入れて、”Access repository”ボタンをクリック。

その後に右上にある丸いアイコンをクリックして、以下のようなメニューを出します。

Stablediffushion01a

その中の「Settings」をクリックし、現れるメニューの中から「Access Tokens」をクリック。

Stablediffushion01b

この画面で横の「Show」というボタンをクリックして文字列を表示させて、出てきたトークンをテキストファイルにでも貼り付けておきます。

これは後ほど、使います。

(2) ONNX版Stable Diffusionモデル変換

まずWindows PowerShellを開き、必要なライブラリを入れておきます。

> pip install torch torchvision torchaudio

> pip install diffusers matplotlib

> pip install onnxruntime

最低限、この辺りを入れておけば動くものと思われます。

続いて以下のサイトに行き、コードをダウンロードします。

GitHub - huggingface/diffusers: 🤗 Diffusers: State-of-the-art diffusion models for image and audio generation in PyTorch

右上の方の緑色の「Code」の中の「Download ZIP」をクリックしてダウンロードしておきます。

落ちてきたZIPファイルを展開し、それをどこか適当なところに置きます。

(「diffusers-main」というフォルダが現れてるはずです)

で、まずこの「diffusers-main」フォルダの下にある「scripts」フォルダの中から「convert_stable_diffusion_checkpoint_to_onnx.py」というコードがあるので、これをエディタで開きます。

で、こいつの69行目付近に、

def convert_models(model_path: str, output_path: str, opset: int):
    pipeline = StableDiffusionPipeline.from_pretrained(model_path, use_auth_token=True)
    output_path = Path(output_path)

というのがあるので、これの「user_auth_token=True」の「True」の部分を、先ほどのトークンに入れ替えます。

def convert_models(model_path: str, output_path: str, opset: int):
    pipeline = StableDiffusionPipeline.from_pretrained(model_path, use_auth_token="自分のトークン")
    output_path = Path(output_path)

で、この後、Windows PowerShellで「diffusers-main」に入り

(cドライブのmlというフォルダの下にdiffusers-mainがある場合は、「cd c:\ml\diffusers-main」と打ち込んでEnter)

そこで、以下のコマンド

> python scripts/convert_stable_diffusion_checkpoint_to_onnx.py --model_path="CompVis/stable-diffusion-v1-4" --output_path="./sd_onnx"

を実行。

すると、stable diffusionのモデルダウンロードと、CPU環境で動かせるONNXモデルへの変換が始まります。

だいたい5GB程度のモデルがダウンロードされます。

で、上のフォルダに「sd_onnx」という謎の(?)フォルダが生成されているはずです。

(3) Stable Diffusionの実行

準備完了。では、コードを実行してみましょう。

以下のコードを「diffusers-main」フォルダに置きます。

(ここでは”onnx_stable_diff.py”とします)

from torch import autocast
from diffusers import StableDiffusionOnnxPipeline
import matplotlib.pyplot as plt
import datetime
now = datetime.datetime.now()
model = StableDiffusionOnnxPipeline.from_pretrained("./sd_onnx", provider="CPUExecutionProvider")
prompt = "a scene of the movie that Hiace running at full speed in the desert , realistic photo, taken with Canon 5D Mk4"
num = 3
for i in range(num):
    image = model(prompt)["sample"][0]
    image.save("test_" + now.strftime('%Y%m%d_%H%M%S') + "_" + str(i) + ".png")

for i in range(num):
    plt.imshow(plt.imread("test_" + now.strftime('%Y%m%d_%H%M%S') + "_" + str(i) + ".png"))
    plt.axis('off')
    plt.show()

なお、プロンプトのところに入っている”呪文”は、「砂漠を爆走するハイエース」です。

で、これを実行。

> python onnx_stable_diff.py

Stable_diffusion_cpu00

こんな具合に、バーが進行し始めたら成功。

しばらくほっとくと、3枚の画像が生成されて、1枚目から順次、表示されます。

Stable_diffusion_cpu01

こんな画像が出てくるはずです。

なお、フォルダ内に「test_日付_時刻_0.png」というファイル名の画像で保存されていきます。

画像をいちいちポップアップしたくない場合は、コードの最後の4行をコメントアウトしてください。

で、できた画像ですが、こんな具合。

Test_20220916_181817_0

Test_20220916_183849_1

うーん、砂漠をハイエースっぽい何かが走ってますね。

我が家のPCは、メモリー16GBを搭載したRYZEN 5 4600H(6コア)のノートPC。

で、大体8秒/イタレーションで、51イタレーションごとに一枚。つまり、1枚当たり大体6分かかります。

Google Colaboratoryの無料版でも、イタレーション辺り1.8秒なので、4倍くらいかかる計算。そう考えると遅いですが、自身のPC環境で動かせるというのは大きなメリットです。

が、メモリーは大体14GBほど消費されていたので、16GB以上のメモリーを搭載したPCでないと無理そう。そこはご注意を。

決してハードルが低くなったとは言い難いですが、どうにかローカルPCで画像生成AIを動かせる環境を手に入れることができました。

今後、いろいろと作ってみようかと思ってます。会社のPCにも導入したいです。


マイクロソフト Surface Laptop 4 13.5インチ/ Office H&B 2021 搭載 / Core i5 / 16GB / 512GB / プラチナ 5AI-00086

2022年8月26日 (金)

高精度な画像生成AI「Stable Diffusion」を自分のPCで動かす方法(+ google colab)

実は我が家では動かなかったのですが、その理由は後述。動作可能にするところまではいけました。

先日、Midjournyというお絵描きAIを試してみた: EeePCの軌跡という記事を書きましたが、Midjournyをも超える文章からの画像生成AIが正式リリースされたとのことで、ネット界隈が騒然としております。

それが「Stable Diffusion」というやつなのですが、特徴としては、

・オープンソースで、自分のPC上でも利用可能(つまり無料で使うことができる)

・生成画像の商用利用も可能

とのことで、お手軽具合は確かにMidjourny以上です。

こいつを自分のPC上で使えたら本当に自由自在です。

しかも、かなりいい出来の画像を返すとのことで、期待が高まります。

下記のサイトを参考に、構築してみました。

[Stable Diffusion] AIでテキストから画像を生成する[Python] - TeDokology

このサイトでは、Google Colaboratoryでの利用を前提に書いてますが、ここのコードをPC上でも使うためのやり方を残しておきます。

うちでは、Windows版python 3.7.9をインストール済み、という前提です。

で、まずHuggingFaceのアカウントを作ります。

Hugging Face – The AI community building the future.

このサイトでまず、アカウントを作ってください。

で、アカウント作成後にログインし、以下のページにアクセス。

CompVis/stable-diffusion-v1-4 · Hugging Face

するとここで、以下のような文章が出てきます。

Stablediffushion01

一番下にあるチェックを入れて、Access repositoryをクリックします。

で、その後に、右上にある丸いアイコンをクリックすると、以下のようなメニューが出てきます。

Stablediffushion01a

その中の「Settings」をクリックし、現れるメニューの中から「Access Tokens」をクリック。

Stablediffushion01b

すると黒丸の文字列が出てくるので、横の「Show」をクリックして文字列を表示し、テキストファイルにでも貼り付けておきます。

このトークンは、後ほど使います。

さて、続いてWindows PowerShellを開き、そこで、

pip install diffusers==0.2.4 transformers scipy ftfy

を実行します。必要なライブラリがインストールされるので、以下のコードをコピペで持っていきます。


#%cd /content
#!pip install diffusers==0.2.4 transformers scipy ftfy

from diffusers import StableDiffusionPipeline
import matplotlib.pyplot as plt

access_tokens="HuggingFaceで作ったAccessTokenをここに入れます" # @param {type:"string"}
     
# load pretrain model
model = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4", use_auth_token=access_tokens)
model.to("cuda")

prompt = "A silver-haired girl standing in front of a giant Gundam-style robot" #@param {type:"string"}
     
num = 5
     
for i in range(num):
    # モデルにpromptを入力し画像生成
    image = model(prompt)["sample"][0]
    # 保存
    image.save(f"test_{i:04}.png")
     
for i in range(num):
    plt.imshow(plt.imread(f"test_{i:04}.png"))
    plt.axis('off')
    plt.show()

これを「stable_diff.py」という名前でも付けて保存。

なお、このコード内の「access_tokens=」の後ろは、先ほどゲットしたAccess Tokensの文字列を入れておいてください。

さて、ちょっと厄介なのですが、Windows上ではこのままでは動きません。

多分、普通に

> python stable_diff.py

エラーが出てくるはずです。

で、いろいろ調べた結果、管理者権限で起動したWindows PowerShellを使わないとダメらしいです。

Stablediffushion02

はい、Windows PowerShellのアイコンを右クリックして「管理者として実行」を選んで起動します。

その後に「 python stable_diff.py」とやれば、動くはずです。

Stablediffushion03

モデルのダウンロードが開始されて、いよいよ動き出します。

が、我が家ではこの後、動かなくなりました。

Stablediffushion04

こんなエラーを出して、終了。

簡単にいうと、

GPUのメモリーが足らんのじゃボケェ!

と言われました。

はい、我が家のGTX1650Tiは4GB。で、どうやら10GB以上のメモリーを搭載したGPUじゃないとダメっぽいです。

これでは、取りつく島もありません。

一応、少ないGPUメモリーのマシンで動かす方法もないわけでもないですが、

話題のStable Diffusionがオープンソース化されたのでローカルで動かしてみる

(この中のコメントでfloat16でも動かす方法というのを見る)

めんどくさそうなので、とりあえず私はさっさと諦めてGoogle Colaboratoryに行きました。

Stablediffushion05

なお、こっちで動かすためには、先のコードの先頭2行の「#」を消しておいてください。

かつ、Google Colaboratoryの中の「ランタイムのタイプを変更」‐「ハードウェアアクセラレーター」をNoneからGPUに変えておいてください。

ちなみに、上のコードをそのまま実行すると「ガンダム風巨大ロボットの前に立つ銀髪の女の子」の画像が作成されようとします。

他の画像がご所望の方は、「prompt=」の後ろの英文を変えてください(英語で)。

上のコードを実行すると、一気に5枚まで作ってくれます。Google Colaboratoryなら大体1、2分で完了しました。

で、できた画像はこんなの。

Test_0003

うん、確かに「ガンダム風巨大ロボットの前に立つ銀髪の女の子」です。

何度かやりましたが、たまに作画崩壊気味の画像も出てきました。

が、結構はっきりとした画像が生成されることが多くて、なかなかいい感じです。

他にも、

「銀河英雄伝説の戦艦」

Index3

「中世風の街に立つ娘」

Index5

(いずれも、Google翻訳で日本語 → 英語に変えてからコードに入れてます)

Midjournyと比べると、かなりくっきりとした画像が得られるというのが個人的な印象。

確かに精度もMidjourny以上だと言われると、その通りですね。

なかなか遊べます。ほんと、AIの進化ってやつには驚くばかりです。

※追記

アップ直前になって、少ないGPUメモリーのPCでも動かせるコードができたので、参考までに載せておきます。

公式のサイトの以下の記事

CompVis/stable-diffusion-v1-4 · Hugging Face

をよく読んでいたら、GPUメモリーが少ないPC向けのfp16版のコードができたので、それを残しておきます。


from diffusers import StableDiffusionPipeline, LMSDiscreteScheduler
import torch
from torch import autocast

access_tokens="HuggingFaceで作ったAccessTokenをここに入れます" # @param {type:"string"}

model_id = "CompVis/stable-diffusion-v1-4"
# Use the K-LMS scheduler here instead
scheduler = LMSDiscreteScheduler(beta_start=0.00085, beta_end=0.012, beta_schedule="scaled_linear", num_train_timesteps=1000)
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16, revision="fp16", use_auth_token=access_tokens)
pipe = pipe.to("cuda")

prompt = "A silver-haired girl standing in front of a giant Gundam-style robot"
with autocast("cuda"):
    image = pipe(prompt, guidance_scale=7.5)["sample"][0]  
   
image.save("test.png")

これを「stable_diff_l.py」という名前で保存し、

> python stable_diff_l.py

と実行すると、10GB以下のGPUメモリーのPCでも実行できるかも、とのことです。

ただし、動作は未確認。我が家の4GBじゃどのみちダメでした・・・


Midjourney 入力テキスト&出力画像コレクション 1: イメージ通りの画像を生成するためのヒントを得よう! Midjourney 入力・出力コレクション

より以前の記事一覧

当ブログ内検索

スポンサード リンク

ブログ村

無料ブログはココログ