機械学習アプリを作ってみた。
参考のURLを参考にして作ってみると簡単にデモを作ることができた。 これは勉強会などで使用すると非常にわかりやすく説明できる。
今年は、GWに引き続き、五島に帰れませんねぇ。
GWの時に、今は力を蓄えて、将来、五島でAI技術を語りたいなっと思い、それから毎日勉強している。
今日は、物体検出アルゴリズムを五島の画像に適用してみる。
使用しましたアルゴリズムは、YOLOv4です。
人をきちんと認識してますね。
漫画:おぉー人として認識してますねぇ。
魚はだめでしたぁ。
テディーベアになっちゃった。でも自転車認識してますね。すげー
camelia catに変えてみました。ラベル変えただけだけどなんか、盛り上がってくる。
学習データにないからねー
高校生の時にお世話になりました。
こちらのコードを参考にさせて頂きました。 YOLOはメンテナンスを常時していて、学ぶ価値は多いのだろうな。
非常に良いところですよ。コロナの対策を十分にして、是非、安全になってから楽しみにいってくださいね。 www.city.goto.nagasaki.jp
コロナウィルスの影響で、外出できない。
いつまでも、外出できないとか、会社に行かなくていいっという時間は続かないだろうなっと思い、 時間的に余裕が生まれた今、自己啓発を3月からずっと続けている。
力が付いてきたかもしれないと考える一方で、頑張りすぎてイライラすることも多い。
そこで、「謙虚力」という本を読んでみた。
私は足りているのに、欲が強く、あれもこれも勉強してって感じで自分自身を追い込んでいることに気づいた。
満ち足りていることを理解して、その上で、自分自身の行動を適度にコントロールすることも大事だと学んだ。
コロナ化は、なかなか人との会話が少なく、客観的に自分自身をみる機会を失ってしまう可能性もある。 そんな時こそ、謙虚に振舞うことが大事。
GANについて整理してみる。
参考資料がすごくわかりやすい。
http://www.kecl.ntt.co.jp/people/kaneko.takuhiro/slides/miru2019/Kaneko_GAN_Tutorial_MIRU2019.pdf
https://www.jstage.jst.go.jp/article/jasj/74/4/74_208/_pdf
Conditional GANは、学習時にラベルを与えることで、種類を指定したデータの生成を可能にする。 通常のGANは、ランダムなサンプリングを行っている。このため生成されるデータの種類を指定するのが困難である。
正解ラベル(カテゴリ)を指定して画像生成を行うことが可能である。
例えば、0, 9という正解ラベルを指定することで画像を生成し、並べて表示することができる。
インターネット検索してみると、Condition GANの発展から、動物、食品などの種類を指定した上で、 学習済みのモデルを生成するなどの事例がヒットする。
http://img.cs.uec.ac.jp/pub/conf17/180308itoy_6_ppt.pdf
pix2pixは言語翻訳の様に、画像のある特徴を別の特徴へ変換する。 Generatorはある画像を入力とし、出力は特徴が変換された画像となる。
pix2pixでは、ペアの画像から画像間の関係を学習する。 そして学習済みのモデルは、学習済みのモデルは、学習済みの2つの画像間の関係を考慮して、画像から画像への翻訳を行う。
論文にあるように、領域がラベル付けされた画像から風景への変換になる。 言語翻訳のように、入力文章に文脈に合致する次文章は何かを予測するタスクに似ている。
デメリットとしては、輪郭が一致した画像のペアを大量に用意するのが大変。
土木などの分野で予測するために使用されていたりする。
http://www.jsece.or.jp/event/conf/abstract/2018/pdf/73.pdf
Cycle GANは、pix2pixのように画像のペアを使うのではなく、画像群のペアを使って学習する。 pix2pixとは異なり、対応する画像同士がペアになってなくてもいいのがcycle GANの大きなメリット
Cycle GANは、画像群Aの画像を画像群Bの画像に変換して学習すると共に、変換した画像群Bをもう一度画像群Aの画像に変換して学習する。 このようにサイクルを繰り返すことで、写真をモネ風の画像に変換したり、夏の景色を冬の景色に変換することも可能になる。
最近、いろいろとDeep Learningを体系的に勉強するためのサイトに遭遇することがある。
ただ、残念なことに、チラッと確認してみて終わっている。
そこで、少しでも情報を整理して、今後の役にたてたいなっと思う。
絵が多くて、わかりやすそう。いろんな人への説明図として活用可能な気がする。
codelabs.developers.google.com
An interactive deep learning book with code, math, and discussions
Pytorch を体系的に理解できる。 https://pytorch.org/assets/deep-learning/Deep-Learning-with-PyTorch.pdf
こんな風にまとめていけばいいのかぁっと勉強になりました サイト
画像処理技術を応用した記事へのリンク集 raindrop.io
Google Colaboratoryをsshで操作する方法がわかったので情報を整理する。
https://towardsdatascience.com/colab-free-gpu-ssh-visual-studio-code-server-36fe1d3c5243
ngrokで無料の登録をし、authentication setting にてAuthtokenを取得します。
# Install useful stuff ! apt install --yes ssh screen nano htop ranger git > /dev/null # SSH setting ! echo "root:carbonara" | chpasswd ! echo "PasswordAuthentication yes" > /etc/ssh/sshd_config ! echo "PermitUserEnvironment yes" >> /etc/ssh/sshd_config ! echo "PermitRootLogin yes" >> /etc/ssh/sshd_config ! service ssh restart > /dev/null # Download ngrok ! wget -q -c -nc https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip ! unzip -qq -n ngrok-stable-linux-amd64.zip # Run ngrok
PUT_YOUR_TOKEN_HEREには1. で取得したAuthtokenを代入します。
authtoken = "PUT_YOUR_TOKEN_HERE" get_ipython().system_raw('./ngrok authtoken $authtoken && ./ngrok tcp 22 &') ! sleep 3 # Get the address for SSH import requests from re import sub r = requests.get('http://localhost:4040/api/tunnels') str_ssh = r.json()['tunnels'][0]['public_url'] str_ssh = sub("tcp://", "", str_ssh) str_ssh = sub(":", " -p ", str_ssh) str_ssh = "ssh root@" + str_ssh print(str_ssh)
ssh root@0.tcp.ngrok.io -p 14407
passwordを求められた場合には、carbonaraを入力する。
無事にログインできました。
何度かトライしてると以下の様なエラーが発生してしまう。この点は調査を進めていく。
ConnectionError: HTTPConnectionPool(host='localhost', port=4040): Max retries exceeded with url: /api/tunnels (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7feef3c55b70>: Failed to establish a new connection: [Errno 111] Connection refused',))