主な更新履歴

作成日: 2024年07月07日(日) 00:00
最終更新日: 2024年10月19日(土) 18:22

2024年10月19日

  • Pydanticの解説記事において,model_validate() にインスタンスを渡した場合は,内部で model_post_init() が呼ばれないことを追記しました.

2024年10月04日

  • 一部の記事に,A8.net による広告を導入しました.
  • 上記の更新に伴い,プライバシーポリシーを更新しました.
  • 下記の修正を受けて,実践手話認識 補足2も再実験を行いました.
    また,前回の実験では観測できていた性能差が明確でなくなったため,文面を修正しました.
旧図5: 認識性能 (Full)
新図5: 認識性能 (Full)
実践手話認識 補足2の差し替え内容2
  • 実践手話認識-モデル開発編2において,問題があるコードがあったため修正しました.
    Conformer の Convolution ブロックでは,最初に Layer Normalization で正規化を行い,Convolution module 内部では Batch Normalization で正規化を行います.
    旧コードでは,Convolution ブロック先頭と Convolution module で同じ正規化層を用いる実装になっていたため,個別に設定できるように修正し,再度実験を行いました.
    なお,性能は大きく変わらなかったため文面は変えていません.
旧図3: 認識性能 (Top10)
新図3: 認識性能 (Top10)
実践手話認識-モデル開発編2の差し替え内容1
旧図4: 認識性能 (Full)
新図4: 認識性能 (Full)
実践手話認識-モデル開発編2の差し替え内容2

2024年9月24日

  • Embedding 層と出力層の初期化処理を加えて,実践手話認識-モデル開発編4の再実験を行い,結果を更新しました.
    学習初期の安定性が向上し,最終的な認識性能も向上しました.
旧図5: 認識性能
新図5: 認識性能
実践手話認識-モデル開発編4の差し替え内容

2024年9月18日

  • 全体のカテゴリ構成,および各記事のカテゴリを更新しました.

2024年9月17日-2

  • 各記事のサイドバーに,関連記事へのリンクを追加しました.
  • 各記事のタイトル,タブ,サマリを調整・更新しました.

2024年9月17日

  • 各記事に,前の記事と次の記事へのリンクを追加しました.
  • 細かなデザインを更新しました.
  • 2024年9月14日の修正を反映したコードで,実践手話認識-モデル開発編4の再実験を行い,結果を更新しました.
    途中で瞬間的に学習結果が悪くなる現象がありましたが,最終的には同程度以上の認識性能に落ち着きました.
旧図5: 認識性能
新図5: 認識性能
実践手話認識-モデル開発編4の差し替え内容

2024年9月14日

  • 実践手話認識-モデル開発編4において,問題があるコードがあったため修正しました.
    本来は再実験も同時に行うべきですが,時間がかかるためコードの更新のみ先に行います.
    • テスト時の最大ループ数 max_seqlen を 31 から 60 に変更しました.
      正しくは <eos> の分を含め 32 に設定すべきでした.
      また,本来はテストデータの最大ラベル長は未知なので,学習時よりも大きい値を設定すべきと判断して,現在の値に変更しました.
    • 旧処理で最終ラベルの推論が行われないバグがあったっため,RNNCSLR の forward() メソッドを更新しました.
# 【旧処理】
def forward(self,
              feature, tokens,
              feature_pad_mask=None, tokens_pad_mask=None):
      """Forward computation for train.
      """
      enc_seqs, enc_hstate = self._apply_encoder(feature, feature_pad_mask)

      # Apply decoder.
      self.decoder.init_dec_hstate(enc_hstate)
      dec_inputs = tokens[:, 0:1]
      preds = None
      for t_index in range(1, tokens.shape[-1]):
          pred = self.decoder(
              dec_inputs=dec_inputs,
              enc_seqs=enc_seqs,
              enc_mask=feature_pad_mask)
          if preds is None:
              preds = pred
          else:
              # `[N, T, C]`
              preds = torch.cat([preds, pred], dim=1)

          # Teacher forcing.
          dec_inputs = tokens[:, t_index:t_index+1]
      return preds
# 【新処理】
def forward(self,
            feature, tokens,
            feature_pad_mask=None, tokens_pad_mask=None):
    """Forward computation for train.
    """
    enc_seqs, enc_hstate = self._apply_encoder(feature, feature_pad_mask)

    # Apply decoder.
    self.decoder.init_dec_hstate(enc_hstate)
    preds = None
    for t_index in range(0, tokens.shape[-1]):
        # Teacher forcing.
        dec_inputs = tokens[:, t_index].reshape([-1, 1])
        pred = self.decoder(
            dec_inputs=dec_inputs,
            enc_seqs=enc_seqs,
            enc_mask=feature_pad_mask)
        if preds is None:
            preds = pred
        else:
            # `[N, T, C]`
            preds = torch.cat([preds, pred], dim=1)
    return preds

2024年9月8日

2024年9月4日

2024年9月1日

2024年8月31日

2024年8月17日

  • 各記事に目次を追加しました.
  • 細かなデザインを更新しました.
  • 参考文献の形式を更新しました.

2024年8月15日

  • Pre-LN構成の Transformer ブロック図に誤りがありましたので,修正しました.
  • 修正内容: 手話認識入門9 図1(c) の PFFN ブロック周りで Residual Connection のパスが誤っていたので修正しました.
旧図1: Transformerベースの認識モデル
新図1: Transformerベースの認識モデル
手話認識9の差し替え内容
旧図3: 今回の実験内容
新図3: 今回の実験内容
手話認識入門-補足記事10の差し替え内容

2024年8月14日

  • 特集ページ「作りながら学ぶ手話認識」を追加しました.
  • 各記事にサムネイル画像を追加しました.
  • 細かなデザインを更新しました.

2024年8月5日

2024年7月23日

  • 「手話認識入門」の記事前半部 (記事全体の説明部) の構成を見直しました.
  • いくつかの記事で,記事前半と記事終盤で2度実験結果を示していましたが,冗長と判断して記事終盤の実験結果を削除しました.
  • 手話認識入門15の実験結果を更新しました.

    • 修正内容: 以前は1種類のノイズ付加設定で実験結果を示していましたが,設定値の種類を増やして実験結果を更新しました.
    • 修正1: 手話認識入門15の図4を削除して,新しく図4から図9を追加しました.

    旧図4: 認識性能比較結果
    新図4: 認識性能比較結果 (Top10, 全身一括, 正規化前)
    新図5: 認識性能比較結果 (Top10, 全身一括, 正規化後)
    新図6: 認識性能比較結果 (Top10, 部位毎)
    新図7: 認識性能比較結果 (Full, 全身一括, 正規化前)
    新図8: 認識性能比較結果 (Full, 全身一括, 正規化後)
    新図9: 認識性能比較結果 (Full, 部位毎)
    手話認識15の差し替え内容
    - 修正2: 実験結果の更新に併せて第1.3項の文章とコード解説 (第4説) を修正しました.
    (長いので詳細は割愛します)

2024年7月20日

  • タイトルの「【コード解説・〇〇】」が冗長だと感じたので,タグに移動しタイトルからは削除しました.
  • 一部の実験コードにバグがあったため,再実験をし記事を修正しました.

    • バグ内容: 手話認識入門の「全単語を用いた認識評価」でテスト時にデータ拡張が適用されていました.
    • 修正1: 手話認識入門16の第1.3項 図6を差し替えました.

    (a): 認識性能比較結果 (旧)
    (b): 認識性能比較結果 (新)
    手話認識入門16の差し替え内容
    また,実験結果の更新に併せて文章を修正しました.

    【旧記事】

    D-Joints, D-Temporal, D-Spatial-O に関しては,認識性能がやや悪化していますが,微妙な差ですのでパラメータ次第では結果が変わるかもしれません.

    一方,D-Spatial-Wでは大きく認識性能が悪化するという結果になりました.
    D-Spatial-Wでは,座標空間の外縁部がマスキングされやすい傾向があります.
    10単語の場合は性能が保てていたことを考えると,追加した単語の中に外縁部のマスキングが影響されやすい単語が多く含まれていた可能性があります.

    【新記事】

    D-Joints, D-Temporal, D-Spatial に関しては,認識性能が変わらないまたはやや悪化していますが,微妙な差ですのでパラメータ次第では結果が変わるかもしれません.

    - 修正2: 手話認識入門17の第1.3項 図5を差し替えて,文章を更新しました.

    (a): 認識性能比較結果 (旧)
    (b): 認識性能比較結果 (新)
    手話認識入門17の差し替え内容
    こちらは,結論に影響が出るような変化がありませんでしたので,文章はそのままです.

2024年7月7日

  • 細かなデザインを更新しました.
  • ヘッダ領域にTag一覧と更新履歴のリンクを追加しました.

2023年12月8日

  • Google Adsense を追加しました.
  • 細かなデザインを更新しました.

2023年10月5日

  • サイドバー領域に月別アーカイブを追加しました.

2023年6月20日

  • Webサイトを新規開設しました.