nikkie-ftnextの日記

イベントレポートや読書メモを発信

週末ログ | #pyhack と キカガク脱ブラックボックス講座

はじめに

だんないよ、nikkieです。
この土日は機械学習の基礎固めに使いました。
学んだことを手短にまとめます。

経緯

 

学んだこと

  • 重回帰分析の数学部分

  •  scikit-learn使い方
    (1)modelを宣言
    (2)model.fitでパラメタ調整
    (3)model.scoreで予測精度を確認
    (4)model.predictで予測
  • モデルの構築に入る前にデータを確認すべき
    (i) 分布の確認:seabornでdistplot
    (ii) 相関関係の確認:seabornでpairplot
      モデルの予測精度がなかなか上がらないのでデータを見たら、
      説明変数が使いにくい分布だった、ないしは
      説明変数と目的変数の間に相関がなかったというのは冷や汗モノすぎる。。
  • train_test_splitで学習用データと性能評価用データに分けるとき
    random_stateパラメタを固定して、ランダムだが毎回同じように分ける。
    =再現性を確保する
  • テストデータはテストのときにしか使わない。
    学習用データのスケーリングには学習用データの平均と標準偏差を使った。

 

所感

@terapyonさんと@NaoY_pyさんに
キカガク講座をおすすめしていただいたのが大きかった。
本当にありがとうございました!


Python使いが集まる #pyhack の環境はすごく学びがあると実感。
継続して参加して、Pythonで食べていけるように力をつけたいです。

イベントレポート | Azureもくもく会@新宿 No.16 #あずもく新宿

はじめに

だんないよ、nikkieです。
Azureについてのもくもく会に参加し、業務で必要になりそうなところを予習してきました。
手短にまとめます。(翌日につなげるためのメモ書きという感じになりそうです)

勉強会の概要

Azureもくもく会@新宿 No.16 - connpass

Azureもくもく会@新宿ってなに?

  • みんなで集まって、Microsoft Azureに関する作業をする会です。
  • 新しい機能を試したり周りと相談したりしてAzureを楽しみましょう。

Cognitive ServicesやAzure Machine Learningを利用した開発でAzureを触ることが多いです。
インフラまわりは情報が追いきれていない身にとっては
こういった場で作業することでインプットができるのでありがたいです。

やったこと

  1. Azure Machine Learningでデプロイした学習済みモデル(API)をPythonでコールする
  2. デプロイした学習済みモデルの再学習のやり方を調査

 

デプロイした学習済みモデルをPythonでコール

学習済みモデルのデプロイのイメージはこちらを参照ください。

qiita.com

DEPLOY WEB SERVICEをクリックした後の画面で、
API HELP PAGE→REQUEST/RESPONSEから
APIコールのサンプルコードが参照できます。(C#Python、R)

Python2系のコードをコメントに沿ってPython3系向けに書き直し、エラーを潰していました。
(コメントにurllib2をurllibに置き換えるよう書いてあるのですが、
 文字通り受け取ってはいけませんでした。トラップそこそこあるじゃん。。)

過去にCognitive Servicesを呼び出したコードを参考に書き換え、動くことを確認しました。

Python入門者でもComputer Vision APIを叩くのは怖くない - Qiita

デプロイした学習済みモデルの再学習のやり方を調査

こちらは調査が収束しておらず、だいぶ混乱しています。

参照したドキュメント

わかったこと

  • トレーニング実験と予測実験がある
  • Web サービスとして予測実験をデプロイする
    →再学習のバッチ処理API呼び出しから実行できるらしい

引き続き調査すること(未解決の事項)

  • 実験の下部にSET UP WEB SERVICEが表示されないことがある。
    サンプルをコピーしたときや一からモデルを作るときは表示されるが、
    実験をコピーしたときは表示されない(DEPLOY WEB SERVICEとなっている)
  • SET UP WEB SERVICEからRetraining Web Serviceを選択した場合と
    Predictive Web Serviceを選択した場合の違いがあやふや
  • ドキュメントの記述と噛み合わないように感じるのは無料枠だから?
    (ドキュメント中のスクショから判断すると、
     無料枠でのデプロイがClassicにあたるらしい)


以上です。運営者、参加者の皆様、どうもありがとうございました。
Azureの知見を広めるため、継続して参加していこうと思います。

イベントレポート | Pythonもくもく自習室 #7 @ Rettyオフィス #rettypy

はじめに

だんないよ、nikkieです。
今回はもくもく会で取り組んだことを記事にしてみます。

もくもく会の概要

Pythonもくもく自習室 #7 @ Rettyオフィス - connpass

この勉強会について

週末の昼下がりに、Pythonに関するやりたいことを各自持ち寄り、ゆるゆると「自習」を進めていく会です。

  • 本を読む
  • PythonDjangoなどのチュートリアルをすすめる
  • コミュニティの作業や執筆etc...
  • 他の参加者と情報交換をしたり学んだり
  • おいしいご飯と共に楽しむ(?)

など、Python使いおよびエンジニアライフのオアシス&知見を身につける「自習室」としてゆるくご活用いただければと思います。

※初心者歓迎です!(なお,ハンズオンなどはありません)

 2017年12月からもくもく会に行って趣味でPythonを書いています。
#rettypyはちょくちょくお邪魔しています。
作業スペースが広くておしゃれで快適です。

取り組んだこと

今回は「Pillowでモザイクアート」のプログラムのアップデートに取り組みました。

  1. モザイクアートの前処理のプログラムをクラスを使って書き直し
  2. Slackのアイコンでモザイクアートが作れなかった件の原因調査

成果発表に使ったnotebookはこちらです。
http://nbviewer.jupyter.org/gist/ftnext/4915f414e967ce991d42a277617490a7

 

モザイクアートの前処理のプログラムをクラスを使って書き直し

モザイクアートを作る前に、素材に使う画像を代表する色を計算しておきます。
代表する色は平均値、中央値、最頻値に対応しています。

読みやすいコードよりも機能追加を優先した結果、
平均値で前処理をするプログラム、中央値で前処理をするプログラム、
平均値で前処理をするプログラムとファイルが分かれています。

平均値で前処理をするプログラムをコピーして数行変えて
中央値で前処理をするプログラムとしたという経緯から、これらのファイルの差分は数行です。

3ファイルに分かれているよりは1ファイルにまとめたほうがかっこいいと思い
クラスを使って書き直してみました。
学生時代や業務でクラスを書いた経験がほとんどないので、
理解を深めたかったというのもあります。

インスタンスメソッドはなんとなくわかる(selfを使ったやつという認識)のですが、
クラスメソッドとスタティックメソッドがだいぶ不安な感じです。

Pythonで、呼び出し方によってメソッドの振る舞いを変える - Qiita

(クラス名.メソッド名でクラスの中で呼び出しているメソッドは
 スタティックメソッドでいいのかな?
 デコレータつけてないけど動いてるのはなんでだ?)
クラスの中のスコープも理解が怪しいです。
手元に参考になりそうな本がなさそうなので、学習教材を探してみます。(PyQもいいかも)

必ずしもクラスを使う必要はなかったかもしれないというアドバイスをいただいたので
今後関数でも共通化してみて比較します。
オブジェクト指向は設計をしっかり考えないと後々苦しむことになるそうです)

オブジェクト指向の勉強を進め、クラスを使うタイミングを見極められるようになりたいですね。

Slackのアイコンでモザイクアートが作れなかった件の原因調査

Python入門者の集いの懇親会でモザイクアートのライブデモをしたとき
Slackのアイコンをモザイクアートにしようとすると
エラーが発生して落ちるという問題がありました。

Slackのロゴでモザイクアートを作成しようとしたところ、IndexErrorが解決できない · Issue #12 · ftnext/mosaic-art-python · GitHub

今回調査したところPillowでopenしたImageのmodeが原因とわかりました。

Pillowでopenしたらピクセルの色はRGBAで扱えると思い込んでいたのですが、
Slackのアイコンはインデックスカラーでした。

インデックスカラー - Wikipedia

そのため、ピクセルの値を取得するとRGBAの4要素のタプルではなく
1つの値(インデックスカラーを指す値)しか取れませんでした。

画像の平均値もインデックスカラーを指す値の平均値になるため、
RGBAの4要素を想定してモザイクアートを作ろうとするプログラムでは
index out of rangeのエラーとなっていました。

convertでRGBAに変換すると、モザイクアートにできることまで調べられたので
今後実装します。(openした後にmodeをチェックしてRGBAでなければconvertする想定)

感想

業務で機械学習をやっているのですが、統計のバックグラウンドがないのが
弱点になるように感じています。
機械学習はやってみてうまく動けばいいという実際的なスタンスなので
 統計の分野ではただし書きが付く平均値代入も抵抗なく使うようです。
 機械学習をやっていると言っても、統計のバックグラウンドの有無で
 話が噛み合わないことがあるんじゃないかと考えています)

可視化手法をまとめられていた方がいらっしゃり、
自分の弱点を補うための一歩目となるような発表でした。
Qiita記事化を楽しみに待っています。

 

経理の業務を楽にしたいということでPythonを勉強されている方がいらっしゃいました。
業務ではExcelファイルで突合せをされるそうです。
私が実装するなら、pandasでExcelファイルを読み込んで突合せの処理を実装するかと思います。
Python歴は浅いですが、浅いなりに他の人のPython学習をサポートできたらなと思います。
もくもく会で助言がいただけてすごくありがたいので、自分も微力でも還元していきたい)

 

今回もありがとうございました。

読書メモ&イベントレポート|Python機械学習プログラミング勉強会#5 #datarefinement

はじめに

だんないよ、nikkieです。
#stapyでおすすめされた『Python機械学習プログラミング』の読書会があったので、参加してきました。
機械学習に業務で取り組んでいるのですが、独学の限界を感じ、
ノウハウを持っている社外の人の話を聞きに行くというアプローチで勉強しています。

勉強会の概要

Python機械学習プログラミング勉強会#5 - connpass

対象の4章を読み進めて参加しました。
正則化のところはとっつきにくかったので予習では飛ばしました。
参加者の中で機械学習歴は一番浅いと思うので、
全部わからなくても何か一つは持ち帰ろうという思いで参加していました。

初回や2回目は倍率が高かったのですが、今回は偶然にも参加できました。
統計学にバックグラウンドがある人が多いコミュニティという印象です。

原著者による公開Notebook:

http://nbviewer.jupyter.org/github/rasbt/python-machine-learning-book/blob/master/code/ch04/ch04.ipynb

 

4章読書メモ

pandasは経験がありますが、scikit-learnは触ったことがありません。
業務に活かせるかもと思った事項を書き出します。
予習時につけた付箋と一致するところが多かったです。

  • この本では欠損値=欠測値
  • pandas::dropna
    いずれかの列に欠損値を含む行を削除する(axis=0が指定されている)
    axis=1を指定するといずれかの行に欠損値を含む列を削除する
  • 欠損値を抜くことはデータが失われることでもある。そこで抜くのではなく補完する
  • sklearn::Imputer
    欠損値補完(axis=0で列方向、axis=1で行方向)
    統計学では平均値補完は避けるべきと言われているとのこと。
    (感想:機械学習は実用に堪えるものができればOKというスタンスらしい。
     平均値補完してもうまくいったらOKという感じなのではなかろうか?
     もっと言えば統計的な厳密さは追求していないのでは?)
  • pandas::map
    順序変数(str)をmapに渡したdictで整数に変換する。
    順序変数の例:服のサイズ M < L < XLという関係 M=0, L=1, XL=2
    逆のdictを渡すことで、整数から文字列に戻せる。
    クラスラベルを整数に変換するのにも使う
  • sklearn::LabelEncoder
    クラスラベルを整数に変換するのに使える
  • sklearn::OnehotEncoder
    色(red, green, blue)について0, 1, 2と置き換えると、実際にはない「順序」を想定して学習してしまう
    red=(1, 0, 0), green=(0, 1, 0), blue=(0, 0, 1)のように置き換える
  • pandas::get_dummies
    上述のone-hotエンコーディングをしてくれる
  • sklearn::train_test_split
    トレーニングデータとテストデータへの分割
  • 正規化 min-maxスケーリング(0〜1の範囲)
    標準化 平均0、標準偏差1
    ※正規化は外れ値の影響を受けやすい(例:外れ値が1になり、それ以外のデータが0の付近に集中)
  • sklearn::StandardScaler
    標準化のクラス
  • (再挑戦予定)L2正則化とL1正則化
  • トレーニングデータとテストデータとでAccurancyが同じくらいなので過学習を抑制したといえる
  • ランダムフォレストを使って特徴量の重要度を測定できる

 

終わりに

機械学習の知識を付けるには、この本を読み切るのが一番と考えているので
引き続き参加していきます。
scikit-learnは触ってみたいです。

イベントレポート&LT報告 | みんなのPython勉強会#32 #stapy

はじめに

だんないよ、nikkieです。
実践LT駆動開発ということで「みんなのPython勉強会#32」に参加し、LTしてきました。

勉強会の概要

みんなのPython勉強会#32 - connpass

勉強会プログラム

「Kubernetesのエコシステムとその影響」

「Road to kaggle master」 

「いまNetwork embeddingが熱い!」

今回のテーマは「オープンソース時代のエコスタイル」。
3つの幅広い分野の講演の後、
 「オープンソースの時代は常に勉強、
  教材は本、ネット、コミュニティといたるところにある」
というまとめの話に納得しました。

LT報告:pandasを触り始めた話

speakerdeck.com

デモに使ったnotebook

github.com

業務の都合でpandasを触り始めたので、それをLTネタにしました。
まだまだ学ぶべきことは多いので引き続き勉強していきます(pandasの力で業務を楽にしたい)

Kubernetesのエコシステムとその影響

KubernetesってDockerのオーケストレーションツールだよなという前提知識で聞いたところ
Kubernetesはプラットフォームだと認識が改まりました。
ユーザは意識しなくてもクラウドベンダーはKubernetesを使っているそうです。

キャッチアップするにはまずはこのあたりでしょうか。

また、マイクロサービスという概念も合わせて理解したほうがよさそうです。
(Kubernetesの運用では数百・数千のコンテナをまとめて扱うために試行錯誤しているそうです。
 これらのコンテナでマイクロサービスを提供しているらしいです)

マイクロサービスとは何か? デジタル変革の時代を生き残るための、テクノロジー入門 - Customer Success

 

Road to kaggle master

機械学習に携わっている身としては、
業務で機械学習に取り組む難しさや、kaggleを学習リソースとして使う方法を共有いただき、
大変ありがたい講義でした。

以下、講義中のメモです。

  • kaggleはデータを理解し、モデルを構築する点に特化している
    コンペが開催され、kaggleには賞金稼ぎもいる
  • 初級から中級にステップアップするには、機械学習の理論を勉強しないといけなかった
    Python Machine Learning』という本が勉強に役立ったそうです。
    日本語版:https://www.amazon.co.jp/dp/4844380605
    (感想:購入済みだったので、後は読み切るだけ)
  • ビジネスとしての機械学習ではデータが手に入らない
    コンペのkaggleと違って、ビジネスのデータは貴重
    (感想:これは肝に銘じよう)
  • kaggleはwinner solutionが勉強になる
    こんな特徴量使ったなど情報が公開される
    (感想:学習リソースとしてkaggle使ってみます)
  • データを可視化して特徴量を考える
    jupyter notebookでデータの全体像を見る

 

いまNetwork embeddingが熱い!

資料:http://www.tsjshg.info/TSUJI_20180207.pdf

購買情報もネットワークで扱えるというのは業務に使えるかもしれません。
以下、講義中のメモです。

  • Network embedding
    買ったか買っていないかで繋げばいいので購買情報もネットワーク化できる
    つながりの情報だけでは機械学習で扱わせにくい
    全ノードを3次元ベクトルとして表現→3次元空間の中で近さ遠さが計算できる→機械学習に持ち込める
  • ネットワークは隣接行列に表せる
    隣接行列は0が多くてスカスカ sparse
    PCA(主成分分析)で次元縮約して隣接ベクトルを扱う
  • 次元縮約にDeepLearningを使うのが最近のはやり
    AutoEncoder(入力5次元、中で3次元に縮約し、5次元で出力)うまく5次元に戻せるような重み付け
    DeepAutoEncoderを作る
    ※ただし、メモリの容量からノード数には制限があるとのこと。GPUを使っても全てのノードがメモリに置けなくなるらしい

 

LT

GitPitchはheader要素のアルファベットが全部大文字になるなど経験したので、
まとめていただいたLTスライドは重宝しそうです。
また、1リポジトリディレクトリを分けてスライドを作成したり、
自己紹介を共通化するというのは試してみたいです。

gitpitch.com

また、Eelでアプリを作ったというLTもありました。

GitHub - ChrisKnott/Eel: A little Python library for making simple Electron-like HTML/JS GUI apps

 

終わりに

Kubernetes、kaggle、Network embeddingと幅広い話を聞く中で
業務に役立てられそうな事項も知ることができました。
LTの機会もいただきありがとうございます。毎月やっていきたいと思います。

スライドは公開されるそうなので、気を見てアップデートします。

イベントレポート&LT報告 | 第11回 Cogbot勉強会! ~ 行こうぜ、Cogbot の向うへ2018 #cogbot

はじめに

だんないよ、nikkieです。
本日はCogBot勉強会に参加し、AzureのBotとAIの全体像をつかむとともに
業務で触り始めたAzure Machine LaerningについてLTもしてきました。

 

勉強会の概要

第11回 Cogbot勉強会! ~ 行こうぜ、Cogbot の向うへ2018 - connpass

イベント概要

2018年の最初の勉強会は、Cognitive Services のおさらいから始まり、先月GAしたばかりの自然言語処理のサービスである LUIS と Azure Bot Service、昨年末に話題となった Azure Machine Learning Workbench に関する内容をお届けします!

人工知能API Cognitive Services、 ボット開発ツールAzure Bot Service、
深層学習ツールAzure Machine Learning Workbenchと
約2時間でAzureのCognitiveまわりがつかめる濃密なラインナップでした。
業務でAzureの知識が求められているので、こういった機会はありがたいです。

では、聴講時のメモを元に振り返ります。

 

今年こそ始める! Cognitive Services 概要&アップデート

www.slideshare.net

Cognitive Servicesは多少使ったことがあるので、
気になったこと(今後調べること)のメモが中心です。

  • 人工知能とは、「人間の知的能力をコンピュータ上で実現」
    囲碁のAIなどは人間と同じように考えているわけではないが、
    結果を見ると、人間と同じように囲碁を打つことはできている。
  • エイベックスはライブ来場者の顔の写真で年齢、性別、表情を収集
    Face API、Emotion API リアルタイム分析
    チケットは当人が買うとは限らない
  • ナビタイム 鎌倉NAVITIME TRAVEL
    日本語英語の入力受付 LUISなど
  • Customとつくものが出てきているのが最近のCognitive Servicesの傾向
    (分析モデルのカスタマイズができる)
  • GAか否か GAするとAzureのサポートやSLAの対象になる
  • Content Moderator 画像のタグ付け?API 後で調べよう
  • PostmanでAPIアクセス? 後で調べよう
  • Custom Visionはエンジン部分をエクスポートできる
    Swift × Core MLのサンプルあり
  • 言語のAPIには形態素解析のベースとなるようなAPIも提供されている どれのことだろう?調べよう
  • LUISの正式名称がLanguage Understandingになった
  • QnA maker FAQページからBotを作れる
    FAQページ→ナレッジベース(QとAのリスト)→Qが入ってきたらAを返すAPI
    Bot Serviceを作り、iframeで埋め込むところまで簡単にできる
  • Bing Custom Search:自分が調べたいサイトから調べてくれる
    検索対象にしたいサイトを登録する
  • Labにはイベント収集APIもある
  • オススメ https://github.com/Microsoft?q=cognitive
  • オンラインコース(英語) AI School

デモ編のスライドはこちら→Azure Webinar - Cognitive Services 概要[Demo編]_20180123

 

 Azure Bot Service で始めるチャットボット開発入門

www.slideshare.net

Bot Serviceはほとんど触っていないので
ノンコーディングでここまでできるのかーと舌を巻きました。

  • Bot ServiceはAzure Portalから作る(←GAしたからか!)
  • ChatBotと人の間に挟むもの:チャンネル(FB MessangerやSlackなど)
  • ブラウザからコーディングできる(オンラインコードエディター)
  • Web App Botは固定料金。コード変更後手動デプロイが必要
  • Function Botは従量課金。コード更新後自動でデプロイ
  • 開発者はどうやって自然言語認識の精度を上げるかといったところに集中できる
  • GitHubVSTSと連携してCI/CDが可能
  • どのチャンネルからアクセスされているかという分析機能がAzure Portalに組み込まれている
  • ドキュメントは英語だが、シナリオに応じたパターンやコードもGitHubで公開されている
  • ポータルで選べないチャンネルはDirect Lineを使う

デモの手順はブログにまとまっているそうです→

QnA Maker と Azure Bot Service を連携(して QnA Makerの閾値を変更)その2 - BEACHSIDE BLOG

 

Azure Machine Leaning Workbench の使い方 

www.slideshare.net

WorkbenchからもStudioにアクセスできるのかなと想像していたら
実態は深層学習のツールですごい勘違いでした。
深層学習や機械学習を受験に例えるのはうまいと思います。

深層学習の流れ

  • コード書く→デバッグ が入り口 (テストしたら終わりじゃない)
     =脳みそができただけ(知識がない)
  • ハイパーパラメータを変更しながら何度もトレーニング
     脳みそに何を与えるか
      例:勉強法の違い どの問題集やるか、何周するかを先に決める
     ここに時間がかかる(コーディングの先に3週間)
     問題集を何周もすると覚えてしまう:過学習
  • 学習の単位(=ジョブ)ごとに脳みその比較
    →成績が良いものをデプロイ

深層学習ツールとしてのWorkbench

  • ジョブを自動で管理してくれる
     2つのジョブの比較が可能(性能が高い2つを比較して、採用するジョブを決める)
  • ログ出力が自動で保存される
     pythonのprint文やimportするloggerのログ出力
     出力した変数はグラフで可視化もしてくれる
  • ハイパーパラメータも管理してくれる

深層学習の取り組み方

  • 脳みそは0から自分で作らない。用途によってサンプルコードがある。
    コピペしてきて動かす(バグがないか確認)。
  • サンプルコードに問題なさそうなら、データを与える

MNISTのスクリプトを使ってFashion MNISTをやってみる(シャツ、スカート)
服のデータを与えると手書き数字ほどいい精度でない
→精度は出ていないが、活用できそうという手応え

 

LT:Azure Machine Learningでレコメンド(by nikkie)

gitpitch.com

LTをもとにQiitaに手順記事書こうかなと思っています。
レコメンドに興味ある方のお役に立てれば幸いです!

GitPitch使ってみたのですが、ブラウザの読み込みで失敗していて(?)
背景画像がなく、白いスライド連続になってしまうというハプニングがありました。

Python入門者の集いでモザイクのLTしていた人ですよね」とお声がけいただきありがたかったです。
インパクトのある「モザイクの人」路線いいな。実際はモザイクアートですが(笑))

 

LT:笑顔チェッカー

qiita.com

大仏にもEmotion APIが適用できるのは興味深いです。
messageでほっこりしますね。

 

終わりに

LTの貴重な機会をいただきありがとうございました。
AzureのAIやBotについて情報収集でき、
現在の先にある「向こう側」が見えてきたような気がします^^
今回気になったことを今後触っていきます。

LT報告 | Python入門者の集い #6 #PyNyumon

はじめに

だんないよ、nikkieです。
Pythonの入門者向けのイベントでLTしてきた報告をします。
イベントレポートは近いうちに別途まとめます。

 

勉強会の概要

Python入門者の集い #6 - connpass

※LT登壇者募集!
LTテーマは「最近Pythonを触り始めた話」です!

[中略]
「LT経験済枠」

プログラミング自体はやっているけどPythonは初めて
発表したことはあるけどPythonは初めて

 

LTの資料

speakerdeck.com

 

ソースコード

ひどいソースコードですので、修正を最優先で進めていきます

GitHub - ftnext/mosaic-art-python

 

いただいたフィードバック

いろいろな方から声をかけていただけてアウトプットの効果を実感しました。
モチベーションめちゃくちゃ上がりますね!

ユーフォニアム好きです

私も大好きなので、モザイクアートに使いました ^^
配布されているTwitterアイコンの種類が多いという利点があると思います。

ソースコード参考にします

マジックナンバーが溢れかえり、ファイルパスは決め打ち、
メソッドやクラスにまとめられていない箇所が山積というコードなので恐縮です。
そう言っていただけて大変嬉しいですし、
使いやすくなるように修正しなくちゃとモチベーションも上がります。
公開した以上は使い方が私にしかわからない状態はまずいと思うので、
早急にreadmeを用意します。

デモやってください

想定よりも多くの方に声をかけていただいて嬉しかったです。
これまで使ったことのない画像を使ったところバグが見つかったので、
デモで声をかけてくださった方に感謝です。

Slackのロゴでモザイクアートを作成しようとしたところ、IndexErrorが解決できない · Issue #12 · ftnext/mosaic-art-python · GitHub

 

また、画像処理の経験がある Ryo KAJI さんから色々と関連情報を教えていただきました。ありがとうございます!
消化しきれていない事項が多いので、今後調べるリストとして記載します。
取り入れられる事項は取り入れます。

 

終わりに

アウトプットのメリットを存分に感じられました。
気を引き締めてソースコードの修正や引き続きのアウトプットに取り組んでいきます。