ぱたへね

はてなダイアリーはrustの色分けができないのでこっちに来た

ゼロから作るDeep Learning ❺ ―生成モデル編

ずっと首を長くして待っていたゼロから作るDeep Learning ❺ ―生成モデル編を読みました。

www.oreilly.co.jp

今間までのゼロからシリーズに比べるとコード少なめ、数式多めです。

全体の構成としては、確率統計のおさらいから、正規分布、GMM、ニューラルネットワークと順に説明していきます。ここまで前半。後半はVAEの説明、実装から入り、拡散モデルへと話が進んでいきます。

数式の説明はすごく丁寧なのですが、やはり難しいと感じました。完全に理解するためには、あと何周かしないと駄目そうでした。

コーディング部分は、実装上のテクニックよりは、出てきた数式をどうPythonに実装するかがメインです。

実際に手を動かして、拡散モデルの一部を動かすことができます。 例えばこれが拡散過程の可視化部分です。

まずは普通にループで100回ノイズを入れる所から入り、ループを使わずにノイズを入れる仕組みなどがわかりやすく書いてあって驚きました。 コードを動かす場合、CPUのみだと厳しいです。学習が出てきたらColabのGPUインスタンスを使うのをお勧めします。

最後はいざ絵を作るぞって手前で終わってしまいますが、そこまででもお腹いっぱいになりました。その先があっても多分理解できなかったと思います。

Deep Learningブームの初期で勉強したVAEが生成モデルの中心となっているところ、そこが驚きとともによく分かりました。

https://www.tensorflow.org/static/tutorials/generative/images/cvae_latent_space.jpg?hl=ja

https://www.tensorflow.org/tutorials/generative/cvae?hl=ja から、まさかここから今の生成系AIにつながるとは。

目先のお絵かきではなく、生成モデルについてしっかりと考え方を知りたい人にお勧めです。

fletで四声練習アプリを作ってみた。

PythonでGUIを作るfletというフレームワークがあります。

flet.dev

一回、軽く何か作ってみたいけど良いお題無いかな~と思っていたらXでこんなPOSTを発見。

ちょうど良いと思って早速作ってみました。 画面はこんな感じ。見た目に凝る余裕は無かったです。

youtu.be

やってみた感想としては、ちゃんとドキュメント読まないと作れない。 Qiitaの日本語記事だけでなんとかなるかと思っていたけど、そこまで簡単では無かったです。 多分凝った物を作ろうとすると、結局Webアプリの知識が要りそうです。 Webアプリやっている人には楽かも、Tkinterの代わりには難しいかなという感じを受けました。

うれしいのは、fly.ioでなんとかしたらWebアプリになったこと。これはこれで大変だったけど動くと面白かったです。

ソースは酷いですが、初挑戦で3時間くらいならこんな物だと思う。

github.com

ROS 2使ってDofbotのLED光らせてみた

まずここを見ながら、元から入っているROSをアンインストールする。

qiita.com

humbleはインストールが出来なかったので、ここを見ながらrollingをインストールする。

docs.ros.org

desktopで問題無し。

sudo apt install ros-rolling-desktop

colconをインストールする

sudo apt install python3-colcon-common-extensions

ROS2とPythonで作って学ぶAIロボット入門を見ながらプロジェクトをつくってちょっと動かす。

www.amazon.co.jp

Pythonのソースを書く。 Dofbot用のライブラリ Arm_Libは元のラズパイイメージの状態でパスが通っているようで、どこからでもimportして利用できました。

import rclpy
from rclpy.node import Node

import time
from Arm_Lib import Arm_Device

class LedNode(Node):
    def __init__(self):
        print("generate node")
        super().__init__('led_node')
        self.get_logger().info("happy led")
        self.timer = self.create_timer(1.0, self.timer_callback)
        self.arm =  Arm_Device()
        time.sleep(0.1)
        self.count = 0

    def timer_callback(self):
        self.get_logger().info("led update")
        if self.count == 0:
            self.arm.Arm_RGB_set(50, 0, 0) #RGB Red light on
            self.count = 1
        elif self.count == 1:
            self.arm.Arm_RGB_set(0, 50, 0) #RGB Green light on
            self.count = 2
        elif self.count == 2:
            self.arm.Arm_RGB_set(0, 0, 50) #RGB Blue light on
            self.count = 0
        else:
            self.count = 0



def main():
    rclpy.init()
    node = LedNode()
    try:
        rclpy.spin(node)
    except KeyboardInterrupt:
        print("stop")
    del node.arm
    rclpy.shutdown()
    print("end of main")



if __name__ == '__main__':
    main()

これでLED点滅しました。

中国語検定3級合格した

4回目の挑戦でようやく中国語検定3級合格しました。 もし後の続く人の参考になればと思って学習方法まとめます。

毎日のルーチンワーク

  • NHKラジオ まいにち中国語(朝、夜)
  • duolingo
  • superchinese

この3つは試験関係無く、毎日続けました。

問題集

すでに3回落ちていて今回は絶対に受かりたかったので、問題集を一冊に絞りそれをやりきることにしました。

Amazon.co.jp: MP3音声付き 出るとこだけ! 中国語検定 3級 合格一直線 : 長澤 文子, 盧 尤: 本

いきなりこの一冊だけだと厳しいと思いますが、ずっと勉強していて後一押しの人には良いと思います。 ちょうど三ヶ月かけてやりきり、最後の一週で総復習をしました。

リスニング対策

毎回筆記よりはリスニングの方が点が取れていたのですが、基本的に何を言っているか分からないけど、なんとなくで選んでいました。点は取れているが手応えが無い状態だったので、3ヶ月ずっと試験問題を听写し続けました。

上の本の問題を听写して、最初は全然分からないので、丸覚えでも良いので書けるようにする。その勢いでシャドウーイングをやる。次の日に、同じ問題を听写して100%書けるようになるまで毎日続け、100%正解になったら次の課の問題に行くようにしていました。

効果は絶大で、問題に出る単語(黑板とか)を確実に押さえることができ、結果的にはリスニング95点でした。苦手だった長文のリスニングも、繰り返し無しの一回目で全部内容がわかりました。(これは初めての経験)

リスニングに関しては聞こえたままメモするというのが有効でした。今年の問題だと、食べ物の問題で「四川火锅」が出題され、単語的には聞き取れてもおかしくない単語ですがよく分からなかったのですーちゃーふーぐーでメモして正解できました。Sìchuān huǒguōが、四川火锅と分からなくても正解は選べるようになるとリスニングは楽かも。

听写自体は2年近く毎日続けていて、あるとき結局听写した漢字しか覚えてないよねって事に気がついたので、学習のメインは听写になっています。試験対策も听写が肝でした。

听写はこのアカウントをフォローしておけば、無限に続けられます。

筆記

声調はとにかく覚えようとして、それがまいにち中国語やdoulingoに出てくると、記憶に残るという形で覚えていきました。例によって二声と三声は良くわからないので、よく間違える単語は、二声はマリオジャンプ、三声はスクワットと身体を動かしながら覚えていきました。声調は手で上下をつけながら覚えるという話も聞きましたが、そんなんじゃ覚えられなかったです。

後は問題集を解きながら、間違えた問題はその文章を丸暗記して書けるようにしました。(書いて丸丸覚える)

丸暗記+听写で作文の方も高得点取れました。

まとめ

本によっては1ヶ月前から一気に勉強しようと書いてあるのもありますが、社会人だと三ヶ月みて勉強した方が良いと思います。特にリスニングは3ヶ月後くらいで成長をかんじるので、試験を見据えて三ヶ月前から毎日やるのが良いです。

n月刊ラムダノート Vol.4

だいぶ出遅れましたが、n月刊ラムダノート Vol.4 読みました。

n月刊ラムダノート Vol.4, No.1(2024)www.lambdanote.com

組込みプログラミングに興味がある人、春から組込み始める人にお勧めです。

手を動かして学ぶストリーム処理入門

IoT機器から垂れ流しでくるようなデータをクラウドサービスと合わせて処理する話です。Apache Beamとかその辺の技術ですね。最近は組込みエンジニアもこういうプロジェクトに参加することが多いので、実際に使われるサービス名や、やっていることの雰囲気を掴むのに良いです。

Windowを使った時系列処理の説明も分かりやすかったです。

WebAssemblyの制約を越える

WebAssemblyの技術について歴史的な話から、コンパイラの話までとても面白く読めました。 言語処理系に興味がある人は絶対楽しめます。

ローカル変数への読み書きは自由にできるけど、関数の戻り値は仮想マシーンで保護されているので書き換えができないなど、WebAssemblyで使われている技術が分かりやすく説明されていて良かったです。

セキュリティに関する話は、古典的なコンパイラの本にはあまり載っていないので勉強になりました。こういう本をもっと読みたい。

PicoRubyといっしょに学ぶ、プログラミング言語が電気回路を動かす仕組み

これは自分が新人の時に読みたかった記事です。 LEDの点灯の仕方、抵抗値の選び方を読んでいて、自分の新人の時の事を思い出しました。その頃からほとんど変ってないですね。唯一変ったのは、当時はLEDはLで引っ張るのが常識だったんですが、今はデバイスのH出力が安定して、かつ数mAでも十分明るいのでHでONにする基板多いですね。

UARTを使わずにGPIOだけでシリアル通信する方法は、知っているとどこかで役に立つかも。

Human-in-the-Loop機械学習 社内勉強会資料

昨年末に発売されたHuman-in-the-Loop機械学習がとても良かったので、早速社内勉強会をしました。

www.kyoritsu-pub.co.jp

前半は先に決められたリソースでモデルの改善をするとき、どういう観点で学習データを選ぶべきかを詳しく書いてあります。後半はアノテーションに的を絞って、アノテーション自体やアノテーターの評価のやり方について詳しく書いてあります。

翻訳もとても読みやすく、機械学習やDeep Learningのモデルを継続的に改善している人にはお勧めです。

こちらが勉強会の資料になります。 すぐに実務で使う事を考えながら資料をまとめたので、本に書いてある内容と少し変えている所もあります。 少しでも興味があれば買って読んでみてください。

speakerdeck.com

ゼロからわかる3次元計測 3Dスキャナ,LiDARの原理と実践

ゼロからわかる3次元計測 3Dスキャナ,LiDARの原理と実践

www.ohmsha.co.jp

カメラを使った計測に興味がある人に呼んで欲しい本。

そもそも3次元計測とはなにかから説明があり、結構小難しい話がとても良くまとまっています。 特にカメラの補正機能が何をやっていて測量時にどういう影響があるかは、仕事でやる人は目を通して欲しいなと思いました。

OpenCVを使ったキャリブレーションも、単にライブラリの使い方を説明するのではなく、原理や実際にやる上での注意点が書いてありとても良かったです。

後半は、実際に3D計測をやってみようという内容になります。 ここでも原理をさらっと説明した上で、実際にやっている様子やソースコードもあって分かりやすいです。まあ、実際仕事でやるならお金払って市販の3D Scannerを買うことになるので、どちらかというとホビーか勉強用の情報ですね。ただ、読んでいるとやってみたくなるので、興味ある人はぜひ読んでほしいです。

点群周りの本が少しずつ増えてきている気がします。 もっともっと読みたいですね。