Stable Diffusion(WebUI)を触ってみた

いつになってもGoogleは私におすすめのエロ画像・動画をお薦めしてこないと思っていたら、いつの間にか画像は生成する時代になっていた・・・。
というので画像生成ができるというStable Diffusionなるものを触ってみました。
とりあえずtext2imgのみ。

エロ画像しか生成してない権利面がわからないので画像は貼ってないです。

Stable Diffusion WebUIの導入

Stable Diffusion の導入自体はいろいろな方法があるようですが、

https://studiomasakaki.fanbox.cc/posts/5456600

こちらのサイトを参考に、ローカルにStable Diffusion WebUIを導入します。
WSLに入れようと思ったけどエラーが出たので早々に諦めました。普通にWindowsで入れました。
かなり簡単なので、グラボの面でエンジニアよりもPCオタクの方が参入ハードルが低そうです。

マシンスペック

  • CPU:Corei7-1185G7 @ 3.00GHz
  • メモリ:16GB
  • eGPU(外付けGPU)でGeForce1050Ti 4GB

ノートPCにeGPUを使う変態構成だけど、eGPU使っている割にグラボがしょぼいという。
GeForce1050Ti は Stable Diffusion 「最低限では使えるレベル」っぽいですね。

しかしこれらのスペック以上に、正直容量が足りない。モデルを試しにダウンロードすると小さいものでも1GB以上、5GB超えるのもそれなりにあり、色々試すには結構な容量が必要。

デフォルトのモデルで作った画像

動くのかな?ってので初期から入っているモデルで、何も指定せずにgenerateしてみたんですが、指が3本で歯茎が変に見えて微笑んだ完全にホラーな画像が生成されました。
ホラーすぎて消してしまいましたよ…。

Checkpoint(モデル)の取得

上のサイトで複数のサイトが紹介されてましたが、https://civitai.com/ エロならこっちかな的にこちらを利用。
某絵師のママやんけみたいなモデルがあるような気がするが気にしない……。

公開する場合は権利面とか色々気にすべきでしょうが、個人で楽しむだけなのでそんなに気にせずダウンロードしました。
\stable-diffusion-webui\models\Stable-diffusion下に置いたら読み込めるようになります。

サイズ小さくない?画像を大きくしたい

デフォルト512* 512 で小さいんですよね。
解像度を上げればよいと安易に考えますが、設定が雑な感じだと画像にいろいろな要素を加えようとしておかしくなるらしいです。そもそもスペックが低いので768px * 768pxが限界です。

ただ他の画像とか見ていてももとの設定は 768px * 512pxとかも多いので、ここの大きさはそこまで大事じゃなさそうです。

どちらかというと、小さめで作って、DeepLearningで引き伸ばすという感じっぽいです。
引き伸ばし方で色々細かく頑張っている方は、こんな感じhttps://qiita.com/Yasu81126297/items/752df11a1e5e70c8b9fe

単に拡大だけならReal-ESRGANだけで十分です。
Stable Diffusion WebUIの機能でESRGAN等を使った画像拡大もあるのですが、これもGPUを使おうとしてメモリ不足で死にます。
ESRGANだけ別途ダウンロードして実行したら動きました(グラボを動かしている感じはしたので、オンボードのXe Graphicsほうが使われている?)

prompt

どんな画像を生成するかを指示するprompt ですが、割りと何を入れればよいかわかりません。
CheckpointのページのサンプルやDiscussionにはこれを使って作った画像を上げている人がいて、ものによってはその時のprompt等の設定値を書いている方がいます。

例:https://civitai.com/gallery/190336?modelId=5396&modelVersionId=18446&infinite=false&returnUrl=%2Fmodels%2F5396%2Fdalcefopainting

<(masterpiece, realistic:1.3), (extremely intricate:1.2)>, portrait of a girl, face, close up, pointy ears, dress, half-closed eyes, jewelry, sitting, strapless, strapless dress, breasts, watermark, bare shoulders, tiara, grey dress, cleavage, long hair, braid, grey hair, long eyelashes, solo, profile, solo, elf,
Negative prompt: (worst quality, low quality:1.4), (depth of field, blurry:1.2), (greyscale, monochrome:1.1), 3D face, cropped, lowres, text, jpeg artifacts, signature, watermark, username, blurry, artist name, trademark, watermark, title, multiple view, Reference sheet, curvy, plump, fat, muscular female, strabismus,
Size: 520x680, Seed: 285145899, Model: dalcefo_v3_painting3, Steps: 26, Sampler: DPM++ 2M Karras, CFG mode: Linear Up, CFG scale: 15, Clip skip: 2, Mimic mode: Linear Up, Model hash: 7107c05c1c, Mimic scale: 15, Hires upscale: 1.5, Hires upscaler: Latent (nearest-exact), CFG scale minimum: 0, Denoising strength: 0.5, Mimic scale minimum: 0, Threshold percentile: 100, Dynamic thresholding enabled: True

なので、こういう指定方法があるのか、というのがここから読み取れます。
必ずしもすべてのpromptが忠実に再現されているわけではなく、black hairってあるのにどうみても白髪の画像とかもありますね。またCheckpointによっても変わる気がしています。

上の画像の解像度を上げるまわりの部分の設定も記載されていたりするので、色々と参考になりそうです。

Sample steps

本番なら20以上、サイトによっては100とか書いてあるのもありますね。
まあでも上で見たような他の人のpromptで、step数も確認できますが30くらいが多いような気がします。

少ないと奇形が生まれたり、変な物が入ったりしますが、単純に多ければよいという感じもしないです。
多くしても奇形のままのもたまにあります。
少なめで作った魅力がなくなったりします。

Seed

Seedを固定すると同じ画像が生成されます。Seedを固定してモデルを変えたり、構図に関わらないpromptを変えても同じようなものが出力されます。

ちょいちょい画像の感じは悪くないがSeedの固定や他の設定値の保存を忘れて次のを生成してしまうことがありますが、stable-diffusion-webui\outputs\txt2img-imagesに保存されているPNG画像には設定値が入っており、PNG Infoから設定値を取得することができます。

とりあえず大量に画像を生成する

Batch countを上げると複数枚を連続で生成できます。上で書いた通り、画像からSeed値などを取り出せますから、とりあえず生成してから良さげなのを探すのも良さそうです。

GPUスペックが高ければBatch sizeを高めて複数枚並行で作れるかもしれません。

時間がかかる

いろんな設定とかにもよるのかも知れないですが、512px四方のStep20で40秒くらい
さらに解像度を上げたり、Stepを増やすと時間がかかります。色々試すにはなかなかにしんどい待ち時間です。

GPUの変更を検討する

自作PCなどグラボを変更できる環境自体がある程度特殊な気がするのがローカル実行の難しさですね。eGPUなので自分は変更が可能です。eGPUも後付できるとはいえThunderbolt3以上が必須なので、ハードルが高めな気がします。

グラボは一時期半導体不足と仮想通貨マイニングの需要などでめちゃ品不足・高騰してましたが、マイニング需要への対応などもあり、ピークに比べるとだいぶ落ち着いているようですね。

GPU周りは下記ブログが詳しく書いていそうです。

ここでもおすすめされてますし、はじめの記事のところでも使われていますが、RTX3060(12GB)あたりなら5万程度のようです。メモリも増えるので、高解像度も扱いやすくなりそうです。

https://kakaku.com/specsearch/0550/?st=2&_s=2&Sort=price_asc&DispSaleDate=on&Chip=484&RAM=12288&/

Radeonだと厳しいようですし、GeForceからコスパで見ていってもRTX3060に落ち着く感があります(さらにハイエンドならまた別ですが)
5万も出せないとなるとしんどいのもこれのしんどさですが。
これをどんどんやっていこうというよりは一度触って満足した感は出てきていますが、eGPUの筐体のほうがグラボより高い今の状況はどうかとずっと思っていたので、高騰も収まってきたしDeepLearning学習の面でも買っても良いのかなと思っています

時間が吸われる

生成に時間がかかるのと合わせて、同じ設定値でも複数生成させたり、色々なpromptを試したりで時間が無限に吸われていきます。
ご利用はほどほどに…(賢者モード)

[同人音楽.info]ちょっとだけ運用をまともに

先日同人音楽.infoに飛んだらnginxのエラーで焦る。
調べると契約しているVPSが古い機材の交換でメンテ→再起動だったらしい。
ということがあった

結果的に古いPHPと共存させるためにDockerで同人音楽.infoは起動してるが、そのDockerが立ち上がっていなかったという感じ
偶然にもメンテの日に気づいたものの、更新を再開した最近でも誰も言わなければ最悪一週間は気づかない可能性もあるなと思いいろいろと運用周りをちゃんとすることに

しかし思った以上にサクッと出来たぞ。

死活監視

さくらのVPS上にHTTPSでたたいてちゃんと返ってくるかを監視してくれるのがあった https://www.sakura.ad.jp/information/announcements/2019/01/30/1968199222/
下のMackerelだと多分有料

その他監視

Mackerel無料枠をとりあえず
勝手に有料Trialから始まるからどこから有料になるかわからんね(別に支払いを設定していないので勝手に無料プランになるだけ)
たたけなければ死活監視に引っかかるし、なんか色々問題起きそうなのは容量いっぱいのときな気がするのでそれを監視

データバックアップ

DB壊れるとサービスががちで死ぬのよね。現状DBのDockerだけ壊れる分にはバックアップはとっているから大丈夫だけど、結局同じVPS内にあるためサーバーが死ぬと一緒に逝く
というかこんなに登録されると思ってなかったよね。うん。

ということでとりあえずAWSのS3に入れることに。Glacierとかも考えたけど、取り出しにくいことこの上なさそう(少し試すことはしたが)。

ちなみに現時点でのDB全バックアップ+gzipは17.8MB
現時点では無料期間ではあるが、そうじゃなくなって1ヶ月取っておいたとしても500MBちょい。取り出しも基本しないことを考えると、あまりにも小さいコストっぽいな。

課題解決型AI人材育成 AI Questに参加している話

終わってからにしようと思ったが、あまりにも長いので半分終わったところで一旦書く。

どういうものか

経産省が課題解決型AI人材を育成したいからやってる事業
狙いとか詳しくは下へ。

まず感想まとめ

わりとけちょんけちょんに書いている
もちろん学びになって役立ったという人もいるだろう。自分にとっても学びにならなかったわけではない。
一番言いたいのはKaggleなど機械学習を試す場は増えつつある中で、経産省、BCGなどが実施して、結果的に「きっかけづくり」程度にしかならなかったように感じることである。
またがんばってその結果というよりは、人も費用もかけたくない感を感じ「正しく失敗する」とか言いながら本当に正しく失敗できたのか?と思った感じである(まだ半分だけども)

まあ金がかかってないなら「きっかけづくり」でもいいんじゃん、とも思うけど、関わっているところが国含めて大きいところなのでどうなんだろうは思う。

初回の実験とはいえ、ちょっと雑すぎやしないか?

参加経緯

機械学習を学びたいよねと思いながら、本で少し学習した程度。
そんなとき会社で募集していたから(企業枠での参加・業務外)
めんどくさいそうだが、ノリと勢い

ちなみに事前に言われていたのは、今回1週間に6時間ほどで4ヶ月間。多いかと言われると、ものすごく多いわけでもないが、そこそこは多い。

参加初回

今回の事業そのものより、BCGあろう会社が大丈夫か?というのがはじめの印象。
〇〇階受付とあるから当然そこに向かうが、直接その階に向かうのがないので1階をウロウロする人多数
実際は5階に向かい、「そこで受付をして」そこから〇〇階に上がる仕様。

新しいオフィスだし中の人も知らなかった可能性はある。
しかし次に困ったのがその受付。現地についてもなんの案内もなく、まず今回のAI Questの受付であることを言っていない。
そして2本列があるので当然両方受付の列だと思っていたが、たどり着いた先にあるのは、片方が研修の受付、もう一つは懇親会の受付。
気づかずいきなり懇親会の列に並んでしまった人もいた。自分は気づかなかったが正しい方に並んでいた。
イベント開催は初めてか?

エレベータで着いた先に何も案内がない。どこに向かえばいいんだ。部屋に入っても何も案内がない(人はいる)。開始が遅延。
人が足りないにしても、初回としてももうちょっとマシな状態でできたんじゃないかとは。

ちなみに懇親会会場も案内が悪くて場所がわからずウロウロする人多数。
懇親会もどれが酒でソフトドリンクがどうかとかの案内もない(その日は飲まないつもりだった)。
懇親会名札の番号の机に行くだったらしいが、案内が聞こえない。

と、まあ運営側に不安しか感じない初回でした。

参加者についてはレベルの差が大きいように感じた。
もう業務でバリバリやってますもいれば、言われた最低限のレベル感(自分)のような人も。(いやむしろ、最低限でもなく、機械学習やりたいけど全く知らんという人もいた感じではあった)
できる人を成長させつつ、低いレベルの人をレベルを上げられるか。
特に前者が難しいと思うがどうなるか。

あと参加者の所属はソフトバンクの内定者がやたら多かったね。

やること全体像

  1. 準備っぽいのとよくわからない個人課題
  2. チーム課題1(個人でも可)
  3. チーム課題2(同上、課題1,2分けずに課題1つのチームもあり)

現時点では2まで終わっている感じ。

準備っぽいのとよくわからない個人課題

教材・課題

もともと企業(SIGNATE)が持ってる教材なんですかね。
まあ他にも教えていたりするので、まあ流用するよね。

課題1つ目

一つは統計等の簡単な話
統計は初心者ではあるが、基礎の基礎なので知ってる話。

もう一つは機械学習の簡単な話
基本の話と前処理の話とかだった気がする。
具体的な前処理の話はない

そこからある課題について決定木で分類をして、より良いパラメータをGridSearchCVで探すというのを学習する。
一応特徴量をどうするかとかの話題はあるが、実践とかはない。パラメータチューニング等で値を良くすると課題クリアというやつ。
基礎が学べるという点で、初心者にはありがたい、バリバリやってる人にはつまらない感じ。

説明動画を聞くのがかったるい。

課題2つ目

ビジネス課題と機械学習の課題。
ビジネス課題の解の一つで機械学習の課題をこなすという流れだが、ビジネス課題と機械学習課題が同時に出されて機械学習の課題の内容がビジネス課題の解の一つになっている。
そして資料的にはこの答え以外の答えは出しにくいようになっている。
「説明」を鍛えるということなのか???

しかし1つ目の課題(分類)は機械学習がわかっている人はやりたくないレベルでゆっくりと進行した割に、今回の回帰に関しては学習は皆無で課題だけ出される。
どうしてほしいんだこれは。
・パラメータチューニング
・回帰のモデルを変える
・特徴量を色々する
などやることは浮かびはするけど、いや大してやったことねぇし、これは後で教えてくれるのか、
自分で学べってことなのかなんなんだ?

これに関しては提供元が ほぼ 同じ課題をネットで展開しているため、ネット上にほぼ同じ課題と思しき大量の資料がある。

https://qiita.com/chusan/items/d7b210243f3b646375ba
https://www.techceed-inc.com/engineer_blog/4954/
https://lab.m-field.co.jp/2019/02/18/machine-learning-firsttry/
https://ds-blog.tbtech.co.jp/entry/2019/08/09/%E3%81%8A%E5%BC%81%E5%BD%93%E3%81%AE%E9%9C%80%E8%A6%81%E4%BA%88%E6%B8%AC%EF%BC%92 https://mfieldeslab.github.io/MS_DataMining/#%E4%BA%88%E6%B8%AC%E5%80%A4%E3%81%A8%E5%AE%9F%E9%9A%9B%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E6%AF%94%E8%BC%83
https://qiita.com/takapy0210/items/834558aa182e3cf6a8b4

見て学べばいいの?それは求められているの?
「今回の課題の目的は何だったんですか?」というのをキレ気味にアンケートに答えた

PBL

上の記事に「課題を解くことが学習につながる。最後に先生生徒の関係がない、生徒同士での自治を実現していること。学んでいる環境を自分たちでつくっているんです」
というのでPBLの形を重点に置きすぎているよう感じた。

  • レベル差が大きく、また誰か知らないひとだらけの大きな場でコミュニティは成立しにくい
  • というかオフラインで合わない人達の前でいきなりやりとりはしんどい
  • 課題とSlackという場を与えているだけ、「生徒同士が教え合える」場作りの努力をしていない
  • 社会人・大学生なのである程度考えて動けるはずだが「目的」が共有されずに課題だけ与えられるため、限られた時間の中で何をすべきかが定めにくく課題をとりあえずこなすだけになる

そのため第1回の課題では、大してPBLから得られることはなかった。
むしろネット上の資料のほうが多岐にわたり(と言っても似通っているが)学びが多いように感じた

これからは少人数で課題を解く形である。
そこではさすがにある程度はどうしたらよいかという話が回ることになると思う(と思ってやる前に書いたもの)

チーム課題1

チームは最大3人、個人を希望すれば個人でもよい。
全期間を通して1課題のチームと、半分に分けて2つの課題を行うチームに分かれる
また半分に分けるチームのお題は前半3 種 、後半3種で希望は聞かれつつ、事務局で振り分けられる。
他のお題の内容は多分情報提供元のあれこれで知ることが出来ない

自分は3人チーム、期間を半分に分ける方である。
2つのお題は同じチームで行う。

チーム課題は「課題の中でビジネスからゴールへ近づき、そこからモデルを実装していくもの」と「モデルを実装しながらビジネス面でのゴールに近づいていく」2つをおこなうらしい
そのうち課題1は前者
どういうお題かは出さない方がいい?URLは教えちゃいけないとは言われているけどデータ提供企業としては名をつられているから概要はいいのかな
そっとこんな感じというKaggleを上げるよ
https://www.kaggle.com/c/nyc-taxi-trip-duration/

1つ目の課題のビジネス面の課題1

課題の中でもちょいちょいと小さな課題を1週間で解くようなことをやるわけですが、1週間ちょっとで行う課題も金曜締め切りなのに3連休過ぎるまで誰も何も言わないこのわれらのチームのやる気のなさ(自分含め)

金曜提出で土曜に講義的なもの。
ランダムで発表させられる。このクオリティで当たってしまい発表させられるとはな。

一応出したものはBCG側で採点される。いくつか項目を分けて項目ごと3点満点。
なかなか1点つけないな。成長させるには1点も3点もガンガンつけるべきだと思うぞ。
うちはほぼ全項目2点だぞ(協調感を出しつつ、自分の意見を押し通して3日で仕上げたなりの点数)

ちなみに後から考えると、資料なりに論理的に筋を立てることはできるが、個人的にはこのビジネスの考え方はちょっとイケてない気がしている(一応最終課題は役員に提案するというところも鑑みて)

1つ目の課題のビジネス面の課題2

内容は1回目のと似ているが別の視点という感じ。
(BtoBtoC&BtoCの会社だが、BtoBtoCの真ん中のBの視点に立つ感じ)

なんで静岡でうっかり酒を入れてしまった後にやってるんですかね?
資料が限定的なのでロジカルに伝える練習感でしかない気がする。

「ビジネス課題」という名前ではあるが、本来は無数にあるデータからどれに手を付けますか?って話だと思う。
今回の課題はそれはそれ、これはこれで、与えられたデータだけで結果は出せるが、とりあえず「答えありき」の感じがある
実際には論理的には穴がどうしても出る。

今回から他のチームの提出物も覗けるようになった
これはいいですね。他の高い点のチームが存在することだけわかっても意味がなくて、どんなバリエーションがあって高評価なのはどういうものかがわかる。
まあ相変わらず2点が多い。
今回のは特に資料が答えありきのこじつけ感が強かったですね。

全然できていないチーム、ある程度できていても皆ができているわけではないチームがあると思う
そういう点で、まずは講義をするレベル(座学)で考え方が足りていない人がそこそこいるのではなかろうか。

1つめの課題の実装課題

3人チームだが1人消滅しかける
いやいやここからやりたい(学びたい)ことなんじゃないの?
しかしチームであることで学びが増えたかと言うと微妙である。まあチームメンバーが全員コミュニケーションを積極的にとらないのも一つの理由だろうけど。

これも提出後、集合して一部のチームが発表。
集合するところで得られることはビジネス課題と比較してまだ多い方である
しかしチーム発表でだれも参加してないチームが2チーム続く
研修全体として取り組む姿勢がバラバラすぎるように感じる(やる気がある、課題はやるが参加しない、課題も参加しない、時間がないなど)

多分課題をある程度はちゃんとまじめにやらないと集合したところで得られることは少ない
そこそこ話すこともテクニカルになるので、事前に知識を入れないとよくわからないことも増えているように感じる。
ここまで機械学習の座学がほとんどない中で、得た知識を実践に紐付ける前に得た知識がなさすぎてこの場で得られるものが小さくなるようなことはあるように感じる
ギリギリ並行して読んでいる本の知識とかで自分は追いつけているとは思っているが。

最後の提出前にKaggleで似たような問題があることに気づく(上述)
発表よりこっちのほうが役立ちそうやん。(もちろん口頭で質問できるのは今回のメリットだが)

チームに関するアンケート

このタイミングで、
チームでやっていく上で
 ・連絡取れない人
 ・積極的ではない人
はいないか? というアンケートが来る。
なるほど、うちのチームに限らず消滅しかかっている人はいるような気配である。

最終回で聞いたけど3人中2人消えて他のチームと混ざってやってる人もいるってよ…

どこかに「きっかけづくり」と書いたけど、きっかけにならない人もそこそこいるのがこのプログラムである。

最終発表

役員会で報告する提案資料らしい

「プレゼンの作り方をBCGの人やその他の人に聞く会」みたいな感じでしたね。
一応今回のプログラムの学べることに「プレゼン」はあったからよいけど、AIとは関係ないな。まあAIの学習ばかり鍛えるのでなくビジネスと絡めて伝えることが大事ということかもしれんが。

ははーん、金かける気ないな

経産省からどれだけお金をもらっているかは知らないが、あまりを金をかけずにやりたい気持ちが非常に伝わってくる。
上にも書いた教材の流用とかはいいけど、色々残念だった。

そもそも関わっている人が少なそうなのに、関わっているスタッフもこの事業に対して時間をかけている気配がない。
こちらも課題をこなすだけ。スタッフも課題を出して提出されたものをこねているだけ。

残念システム

BCGのアンケートフォームは、送りっぱなしなので自分が書いたものがなにかはわからない。
そのくせ、他のところでは色々なID登録を求められる。登録したのにアンケートには使えないのである。
複数にまたいでいるせいで「表示の名前を全部共通にしろ」という、アナログ感のある方法で人を見分けている。

その他

  • 教材の流用どころか最序盤以降は教材がない
  • 案内等社員の少なさ
  • 運営の雑さ(個人メールアドレス流出)

チーム

大学の仲間で出ているチームとかもあるようなので
・個人チーム
・オフラインでも会うチーム
・オンラインのみで会うチーム
・オンラインでの疎なやりとりだけのチーム
があるように感じる
ここまで来て感じるのは「オフラインでも会うチーム」をまず成功させて次に繋げないといかんのでは?と思う。

え?後半の部は集合研修もオンラインでやるんですか!?

42来たる

PBLの参考にしているという42の本家が日本に来てしまったな
https://42tokyo.jp/

今回の研修はオンラインで教え合うというのは結構難しいというのを感じる。
相当やべぇ課題を出すとやらざるを得ないからやるんだけどね(ただし離脱者も増える)
そもそも今回のは1つめの課題はまだ会ったこともない人と「この人とグループです」と言われて始まる
42はオンラインではなくキャンパスにおいていい感じに必要に応じて組んで教え合う感じじゃないのかと。
中途半端に持ち込んでもだめなんじゃないか。

メインは他に仕事が、学校がある人がオンラインで42的に学ぶのはだいぶ難しいだろう。
オフラインでやるとこれまた何かを犠牲にする(仕事なのかプライベートなのか)必要はあり、やれる人が多いかはわからないのだが。

まとめ

大雑把に言って
「講師が教える形だと教えられる人数に限界があ」るということを言い訳に
課題を渡してあとは学んでくれ、Slackやフォーラムという場だけ置いておいてあとはよしなにしてくれという傲慢さ、及びリソース(人・お金)をかけない怠慢さを感じる。
「自ら学ぶ姿勢」「自己組織化」というものに対して、自己責任の強い仕組みである(仕組みがないとも言える)

「座学だけでは実践的な内容を学ぶのは難しい」のは事実だろうが、
今の時代、動画学習とかによる座学は一般的であり、座学の講師のところに限界は無いはずであり、そういう座学を飛ばして実践的なところで学んでくれというのは、怠慢で傲慢ではなかろうか。
結局はこれまで学んできていなかった人の中でやる気が保てた人のきっかけづくりからの+αにはなったと思う(もともとある程度わかっている人のことはわからない)。
ただ人が足りてなくて人を増やしたい、経産省がやる、という点から言うと、ちょっと効果弱いんじゃないというふうに感じる。

教えない以上学ぶ方は何がわからないかわからないと思う。
座学があってここがわからないなら教えようがある。
いきなり課題を渡されても困るであろう。

座学まで提供しろとは言わない。今でこそ本や動画、いろいろなところから学べる。既に行われたコンペならスコアの良い出し方なども示されている。
だが何のガイドもなしに課題だけ出すのであれば、本当にそれは他から得るよりも成長できるのだろうか?

何が言いたいかと言うと並行して本を読もうとしていてそこで吸収したことが実践的に納得できる要素はあったが、課題だけに真剣に向き合っても多分それは得られなかった
じゃあ何を得るべきかというガイドがあったわけでもない
そこでチームが機能したかと言うと機能していない。少なくともうちのチームは (学内仲間のチームとかだとまた違うのかもしれないが、それがうまくいくなら大学教育の中でやれば良い(文科省と経産省で色々あるかもだが))

序盤の「」の言葉は以下より引用
https://www.itmedia.co.jp/news/articles/1911/29/news026_2.html

この辺はフィードバックする機会があったらそのまま書いてやろうと思ったのだが、前半終了時点ではなかった。

AI Questをやるのと別に読んだもの

AI Questの座学はPythonではじめる機械学習の2章をかじったくらいしかないので、 求められた要件の機械学習のチュートリアルを終えたくらいのレベル感だと置いてけぼり感がある。
AI Questの課題においては、これらの本から使えそうな知識を選んで使う必要があるくらいの内容(本当に雑にやるなら別だが)。

Pythonではじめる機械学習 ――scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

2年前くらいに2章まで写経した状態だった
教師データありの分類・回帰のかんたんなことはできるようになる
3章以降も良い情報ありそうだけど、読み進めるのが大変なので進めていない

機械学習のための「前処理」入門

画像データとか扱ったことのないものや日本語の処理(自然言語処理)なども含まれている点は良いが、やったことならば知っていることも割と多いくらいのまさに「入門」という感じでした。
その領域をやる時に調べると結構出てくる基本的な情報が載っている感じで、ネットで探すよりはまとまっているので新しい領域に入る前に読むには良いと感じた。

機械学習のための特徴量エンジニアリング ―その原理とPythonによる実践

上の前処理入門では足りてないなーってことが結構書いてある。言語処理系は英語の話なので、ちょっと物足りなさも。
そしてオライリーにありがちな非常に読みづらい文章。ざっと読んで必要な時に読み直すとかが良さそう。
知識が皆無マンとしては何書いてあるのかよくわからないところも結構ある。

ヤフー天気動画おじさん、ヤフー天気動画をクロールしたら中の人から怒られる

以前以下のような記事を書いていたが

中の人(知り合い)から、これお前だろ、404エラー出まくりだから止めてやと怒られたので止めました。
これまではIDを1ずつincrementして総当りするヤバイやつでしたが、ヤフー天気動画以外のIDを指定すると404になってしまったため起きていました。
天気動画トップの一覧から取得するようにしたいと思います↓
https://github.com/miyawa-tarou/yahoo_weather_videos/blob/master/src/get_latest_video.py

ここ数日分の天気予報動画のほうが抜けております。
https://miyawa-tarou.com/lab/yahoo_weather_video.html
與猶さんの名前がうまく取れてないのは、気が向いたら直します。
宮崎さんの名前が変なのはまあいいか。

同人音楽.infoの改修2

ということで前回はこっそり感ありましたが、一応周知するところまで行きました。
https://www.dojin-music.info/
M3までには間に合わせる、という目標の中では冊子作成が進んでないことはありますが、まあ十分余裕をもって完成したなと。

まだバグの不安は結構ありますけどね。特に誰でも投稿できるようにするといろいろ起きるところなので。
とりあえずはざっとは動かして大丈夫だったはず。。。

そのほか、タグにスパム突っ込まれたのはきれいにしたり、機械的に追加されないようにreCaptchaを入れたりしています。
まだ少々移行の際の文字処理などでおかしいところがあることは把握していますが。。。

とりあえずGWも含めて

  • トラックリスト(歌・作詞・作曲等も含む)の追加編集
  • あなたへのおすすめ機能(これはPHPで仕組みは作ったが計算量が膨大であまりにも重かったのでC言語か何かに書き換えます)

トラックリスト編集前に、ボーカルと作詞・作編曲の人の名前は統一しようかと思っていてその辺の作業が重いです。
また同じ曲が別CDに入る場合などの特殊処理はもうなくそうかと思っているけど、すでにあるものをちゃんと切り替えないといけないのでその辺の作業も重いです。
GW後にはさらに良くなってるようにしたいですね。

同人音楽.infoの改修

https://www.dojin-music.info/

そういえば同人音楽.infoを始めてから、ちょうど11年ですね。

同人音楽.infoを改修しました。
きっかけとしては
・デザイン面で色々触るのをやりたくて、既存ページでもスマホ対応を技術的にやりたかった
・Googleがモバイル対応してないとバカにしてくる
・サイトの表示がなぜか遅い
というところ。
サイトの表示が遅いのは元のコードをベースにPHP7対応(+キャッシュ)とかすれば何とかなるかなとか思ったら、あまりにもコードがひどすぎて、これは初めから書き直した方がマシと思い、コード刷新によるPHP7化とともにデザインをレスポンシブ対応する形に。
デザイン面で触ると言いながらデザイン自体はだいぶ雑ですが。

とりあえずDBは糞設計のところもありますが、そのままです。
一部機能は面倒なので移行していません。主にログイン周りは使われていないのに存在してる機能がいくつかあったので。
あと説明がいろいろあったものが大体消されています。

ログインもさすがにパスワードを平文では保存していませんが、個人で保持するものでもないと思ったのでTwitterでログインするようにしました。
面倒すぎて唐突にTwitterの許可フォームに飛びますがw
といってももともとデータを登録している人のために移行方法を設けているので、移行するまではどうしてもパスワードから精製したものが残ってしまいますが。

ちなみに割と多くの部分を電車内でコーディングした ・・・。

とりあえずスマホ対応、コードの一新で出しましたが、このあと一応サークルとCDは誰でも登録できるようにする予定です。
次のM3には間に合う予定。

このブログのサーバー移行

Qiitaにもろもろ書いたけど
https://qiita.com/miyawa-tarou/items/276055b0843866417998
ブログのサーバーを移行しました

ぐっばいIDCFクラウド
何日か動かして問題なければ前のサーバーを削除する
会社的な意味でも未練もなくなったよ

Dockerに入れたけどスペック面ではどうなのだろうか
前のIDCFクラウドでDockerコンテナ4つくらい立てたら重くて重くて仕方なかったが

ところでWordPressのバージョンをついでに5に上げたわけだが、記事書くところの変化が衝撃的だね。
Markdown書いた後に使うと衝撃度がさらに強い(使いにくい)

ヤフー天気動画おじさん、ヤフー天気動画をクロールする

概要

ヤフー天気動画(のサムネイル)をよく見るおじさんとして、昔のヤフー天気動画が見られなくなるのが非常に残念でヤフーニュースの記事の方も数か月で消えてしまうため、「推しの昔の動画が見られない!」という悲しい気持ちをどうにかするために、昔の記事を掘りだした。
ヤフーに上がっている仕様
  • ヤフーニュースはhttps://headlines.yahoo.co.jp/list/?m=wmapに過去記事が上がっているが数か月で消える
  • ヤフー天気はニュースと天気予報の二種類があり、だいたい1日本のニュースは7回分、1日朝夕2本の天気予報は最新のものしかリンクが残っていない
  • ヤフー天気はリンクはなくるが記事自体は残っている
というのがあるため、なんとヤフー天気には昔の動画が残っているのです。
しかしリンクがないため、12/02 16:20現在最新の1056986まで全件を舐めるしかない
どうにか件数が減らせないか、内部情報(?)なども含めて考えましたが無理でした。
IDはヤフー内共通らしく、ここ最近の増え方が半端ない・・・。
予報士の名前なども含めて全手動らしく、表記ムラが結構あって禿げそうである。
まあ表記ムラでもどうしようもないのはあきらめました。
気が向いたときに埋めます(—-のが表記ムラで取れなかったorそもそも書かれていなかったやつ)
何度もアクセスするコードを上げるのもどうかと思うけど、まあやらないでしょ。ちなみに1週間以上かかった。
そもそもひたすらアクセスし続けて大丈夫か?と思った。
フロントサーバーにはもっとわけのわからない数のアクセスが来ており、負荷面での心配は一切ないが(負荷上がったら知り合いに怒られる)、アタックまではいかないけどアタック検知してそうなところにはそこそこアクセスが行っているわけで、という心配はちょっとあった。

データ

結果は以下の感じ(見せ方は雑)
初回はみきてぃここと元井美貴さん
2014年8月26日です
出演者数は49人
今年の10月以降で4人新しい方が出演されています。
最多出演は多胡安那さん
なんと535回(データ取得時点)

本数は約4500本
1日だいたい3本を4年なので計算通りでしょう
昔は見ていなかったので知らない方もいますが、今はNHK総合に出られている、福岡さん國本さん宮崎さんをはじめ、全国いろいろな番組に出られている方が、以前だったり今もヤフー天気動画に出ている感じなんですね。

WordPress初テンプレ作成

サイトデザインを一新するとともにブログもそのデザインと合わせてみた。
とりあえず細部は変なところもあるが、いったんそのテンプレで完了した。
既存テーマで「そうじゃねぇんだよ」って思う部分があるので、デザインがそろうメリットと、かゆいところはかきやすくなったというメリットで細かいところは置いておいて早めに切り替え。

自分の使い方に特化しているので細かいところはそんなに触っていない
はまったところ解説とかもできればいいが、あまり時間がないのでとりあえずソースだけ置く
https://github.com/miyawa-tarou/blog_miyawa_theme/tree/master

まあサイトの方もそうだけど、実はレスポンシブでそこそこまともに動くサイト作ったの初めてな気がするのよね。
(ほしがたりの時もレスポンシブだけど、動きにこだわった分、PC含めて細部が雑すぎた)

やったことメモ

導入

  • MariaDBの導入
  • ユーザーとDBの作成
  • PHP7の導入
  • nginxの導入
  • WordPressファイルのアップロード
    • 軽く設定
    • プラグインの導入
  • (HTTPS化)
  • (GoogleSearchConsole、GoogleAnalyticsの設定)

テーマ作成

https://plusers.net/category/wordpress/wordpress-theme
ここを参考にさせてもらった

感想

  • 今時WordPress本体のzipを解凍してアップロードってどうなのよ
  • これカスタマイズしていじったファイルって基本サーバー上にしかないやつでしょ…。
  • ローカル環境を作らないと毎回アップロードでめんどくさい
  • これだけでブログ的なものから固定のページまで、サイト全体として対応するできることは凄いと思った
  • とはいえサイト全体作ったときに個別のCSSスタイルのページごとのものをどうするのかとか面倒すぎでしょというので、本気でやるとかなり面倒という意味で深いシステムだなという感じはする
  • まあ「私でも簡単に更新できるシステムを作って」というのの着地点としては仕方がないのかもしれない