Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

WindowsにHugoの環境を作る

NetlifyとGitlabを連携して静的サイトをアップロードする - Bye Bye Moore
でやったHugoの環境をWindows11にも作ってみました

実際のところ

以下、gitはある状態とします

Chocolately

choco install hugo-extended
cd quickstart
git init
git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke themes/ananke
echo "theme = 'ananke'" >> config.toml
> hugo new site quickstart
Congratulations! Your new Hugo site is created in C:\Users\user\Documents\web\quickstart.

Just a few more steps and you're ready to go:

1. Download a theme into the same-named folder.
   Choose a theme from https://themes.gohugo.io/ or
   create your own with the "hugo new theme <THEMENAME>" command.
2. Perhaps you want to add some content. You can add single files
   with "hugo new <SECTIONNAME>\<FILENAME>.<FORMAT>".
3. Start the built-in live server via "hugo server".

Visit https://gohugo.io/ for quickstart guide and full documentation.
hugo server
Start building sites …
hugo v0.110.0-e32a493b7826d02763c3b79623952e625402b168+extended windows/amd64 BuildDate=2023-01-17T12:16:09Z VendorInfo=gohugoio

                   | EN
-------------------+-----
  Pages            |  7
  Paginator pages  |  0
  Non-page files   |  0
  Static files     |  1
  Processed images |  0
  Aliases          |  0
  Sitemaps         |  1
  Cleaned          |  0

Built in 97 ms
Watching for changes in C:\Users\user\Documents\web\quickstart\{archetypes,assets,content,data,layouts,static,themes}
Watching for config changes in C:\Users\user\Documents\web\quickstart\config.toml, C:\Users\user\Documents\web\quickstart\themes\ananke\config.yaml
Environment: "development"
Serving pages from memory
Running in Fast Render Mode. For full rebuilds on change: hugo server --disableFastRender
Web Server is available at http://localhost:1313/ (bind address 127.0.0.1)
Press Ctrl+C to stop

http://localhost:1313/にアクセスすると

labelIMGで生成するYOLO v3用のtxtファイルの様式

実際のところ

labelImgでYOLO用の学習データをつくると、以下のようなファイルがでてきます

$ cat 002.txt
0 0.731534 0.440972 0.258523 0.305556
0 0.407670 0.190972 0.264205 0.312500
0 0.213068 0.616319 0.198864 0.288194

スペース区切りで画素に対する%表記なのは推測がつくのですが元画像からして意味がわからず……
UI上は回転とかが出来なかったので、漠然とXYの座標指定なんだろうと思ってました

labelMGのソースコードを読んだところ……

    def bnd_box_to_yolo_line(self, box, class_list=[]):
        x_min = box['xmin']
        x_max = box['xmax']
        y_min = box['ymin']
        y_max = box['ymax']

        x_center = float((x_min + x_max)) / 2 / self.img_size[1]
        y_center = float((y_min + y_max)) / 2 / self.img_size[0]

        w = float((x_max - x_min)) / self.img_size[1]
        h = float((y_max - y_min)) / self.img_size[0]

        # PR387
        box_name = box['name']
        if box_name not in class_list:
            class_list.append(box_name)

        class_index = class_list.index(box_name)

        return class_index, x_center, y_center, w, h

……まさか中央値とはね……画像処理でよく使うからでしょうか

【読書メモ】オタク経済圏創世記

著者はブシロードの役員さんです。
というわけで、日本のコンテンツビジネスの商流まわりについて実務に関わっている人という事になります。
元がコンサル屋さんなのか統計や業界白書をベースにしたしっかりとした図表が多いのが本書の特長の一つになります。
縦軸時系列、横軸にアクティブユーザー、円の大きさが市場規模なんて図を霞ヶ関資料以外で見る事になるとは思いませんでした。

日本のコンテンツビジネスが強い理由を歴史的経緯からくる業界構造に求めています。
鉄腕アトムからはじまる、関連グッズまわりで売り上げを回収するモデルや、政策委員会形式など。
日本の、いい意味でも悪い意味でもコネと信頼で動いていく商流こそが、オタクコンテンツビジネスの強みであると考えています。
ディズニーのような巨人からはじまるトップダウンではなく、小規模事業者のあつまりである職人集団と、互いに極端に力を持たない出資側という構造が世界で受け入れられるコンテンツ作りの足腰になったのだと。

さらに、近年みられる海外での流行は、偏見が発生する歴史的経緯がなかった分クールなものとして受け入れられたという事が原因と考えているようです。
……という事は、これ次の世代では「パパやママが好きな古臭いの」になるって未来もおそらくありますよね……。

Twitterなどでは*1業界構造について色々いわれる事が多いですが、こういう切り口で日本の強みというのが見出せるのは個人的にはうれしいですね。

*1:まぁ、不満のある奴の声がでかいからある意味当然なのですが

Raspberry pi 4b にlabelIMGを入れてYOLOv3用学習データを作る その2:自前学習データの構築

labelIMGでYOLO形式の学習データを作りました。
こいつをGoogle Colabに喰わせて重みデータを作っていきます

実際のところ

  • Google Colaboratory(以下Colab)の環境を用意
  • Colabに必要な環境を構築
  • Colabで計算
  • 結果をRaspberry Piにもってくる

Google Colaboratoryの環境を用意

shuzo-kino.hateblo.jp

GPUにしないと計算が重くて使い物にならないので、
「編集」-> 「ノートブックの設定」でGPUを設定。

Colabに必要なライブラリを導入

!git clone https://github.com/ultralytics/yolov3

リポジトリにインストール内容が記載された便利なのがあるので

!pip install -r yolov3/requirements.txt

Colabで計算

GoogleドライブをColabにマウント。
これをやらないと、先ほどリポジトリにぶち込んだデータを取り扱えない

from google.colab import drive
drive.mount('/content/drive')

判定。
"--img"は画像サイズ。今回はクッソ小さい画像だったのでこの数値に。
"--batch"と"--epochs"が学習量の肝で、甘くみて低い数値に設定すると使い物にならないゴミファイルができます(経験談)。

# 判定する。
%cd /content/yolov3
!python train.py --batch 32 --epochs 300 --img 352 --data '/content/drive/MyDrive/ObjectDetection/duck.yaml' 

Model summary: 38 layers, 8666692 parameters, 0 gradients, 12.9 GFLOPs

結果をRaspberry Piにもってくる

Colabの画面で、Google Driveディレクトリに先ほどつくったファイルを移動

#結果をGoogleDriveのObjectDetectionに移す
%cd /content/yolov3
! ls runs/train/exp/weights
! cp runs/train/exp/weights/best.pt /content/drive/MyDrive/ObjectDetection/ 

ローカルに先ほどのファイルをalpha.ptとリネームして移動し
そしてRasPiで

$ cd yolov3
$ python3 detect.py --source ../testImg/001.png --weight alpha.pt

さらにUSBカメラでもできます。
480x640の解像度だとRasPi4Bなら大体700ミリ秒に一回くらいのペースで判定してくれています。

$ python3 detect.py --source 0 --weight alpha.pt

labelIMGのブログ記事を写した判定はこんな塩梅。

【読書メモ】推しことば類語辞典  巧みな単語で「好き」を拡散!

何故かTLに流れてきたので読んでみました。
絵の多い国語の副読本、あるいはタイトル通りヲタ活を切り口にした本なので「萌え単」とかあの系統かも。
後でこんな表現あったな……というときにポケット辞書のように使うでしょうか。

Raspberry pi 4b にlabelIMGを入れてYOLOv3用学習データを作る その1:labelImgでアノテーション

実際のところ

$ pip --version
pip 20.3.4 from /usr/lib/python3/dist-packages/pip (python 3.9)

出てきたパス(私の環境では”/home/user/.local/bin")をPATH変数に追加し

$ labelImg

こんな画面がでてきます。

適切なフォルダ(今回は$HOME/testImg)に学習用画像を入れておいて読み込むと、こんな風な表示になります

左側のツールBOXで学習ツールを選択する所があるので、今回はYOLOを選択

「W」で範囲選択ができるようになるので、ターゲットを囲います
初回だとタグをつける選択肢が出るので今回は「duck」と名付けます。

同じ調子で選択していきます。
結果はtxtデータとして保存されるので、画像と同じフォルダに入れておきます。