OmniAICreator/Qiita-1.07M huggingface dataset:
WSL/CrostiniにDockerを導入する

# まえがき
以前仕事で環境構築の手順を他の人に伝える必要があったのでまとめたものをほぼそのままコピペした記事。
業務に関わる部分は省略してあるが、Dockerの環境を整えるところまではできるはず。
# 開発環境構築の手順
## 動作環境
以下の環境で動作確認を行っています。
### Windows環境
- Windows 11 Home 21H2
- WSL2(Ubuntu 20.04 LTS/Debian 10)
### ChromeOS環境
- ChromeOS 112
- Crostini
- Debian 10

# 導入手順
## WSLをインストールする。(Windowsのみ)
[このページ](https://learn.microsoft.com/ja-jp/windows/wsl/install)に従い、
管理者権限でPowerShellを起動し以下のコマンドを実行してください。

```shell
wsl --install -d　Ubuntu
```

### Linux開発環境の構築
ChromeOSで作業をしようとする人がわからないはずがないので省略。

## パッケージの更新
ターミナルから以下のコマンドを実行してください。
```bash
sudo apt-get update
sudo apt-get upgrade
```

## Dockerをインストールする。
VSCodeからWSL環境に入り、[このページ](https://docs.docker.com/engine/install/debian/#set-up-the-repository)を参考にターミナルで以下のコマンドを順番に実行してくください。

```bash
# 念のため古いバージョンを削除
sudo apt-get remove docker docker-engine docker.io containerd runc

# 必要なパッケージをインストール
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg

# Dockerの公式GPGキーを追加
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Dockerのリポジトリを追加する
# Debianの場合は以下のコマンドを実行してください。
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Ubuntuの場合は以下のコマンドを実行してください。
 echo \
   "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) stable" | \
    sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 追加下したリポジトリを更新
sudo apt-get update

# Docker Engineのインストール
# docker-buildx-pluginとdocker-compose-pluginはインストールしない。
sudo apt-get install docker-ce docker-ce-cli containerd.io

# 動作確認
sudo service docker start
sudo docker run hello-world
```


## Dockerデーモンの起動
以下のコマンドを実行してください。Dockerデーモンが常時バックグラウンド起動するようになります。
※自動起動しなかったので誰か教えてほしい
```bash
sudo systemctl enable docker
```

## Docker composeの導入
[このページ](https://qiita.com/JunkiHiroi/items/3bf722af3e77c73a1625)を参考に、以下のコマンドを実行してください。

```bash
mkdir -p /usr/local/lib/docker/cli-plugins
sudo curl -SL https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-linux-x86_64 -o /usr/local/lib/docker/cli-plugins/docker-compose
sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose

```

# おわり
もっといい方法があったら教えてほしい。
LATR: 3D Lane Detection from Monocular Images with Transformer

# 1. 概要
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/2d57f9d0-88d2-dea1-b295-d0bf53bae61e.png)
車両の前方に取り付けた単眼カメラを使って自動運転向けの車線検知(Lane Detection)を3次元推定する技術は多く提案されているが、一般的には俯瞰画像を生成して検知する手法が取られる。一方、単眼カメラでは深度を考慮して俯瞰画像を作ることが難しいため、3次元的に車線を検知する際に正確に車線を推定することは難しかった。提案手法では車両前方を映した単眼カメラ画像から、3次元の地面の平面情報を繰り返し推定していくことで車線が3次元空間でどこに位置するか正確に推定できるようにした。

---

# 2. 新規性
この研究では、前方を撮影した単眼カメラからEnd-to-Endで三次元の車線検知を行う手法を提案しており、従来手法のように俯瞰ビューの特徴を挟まないことで高精度な推定を達成している。

---

# 3. 実現方法
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/57df1165-b25b-d7a2-6bd4-4b6e820594a6.png)
トランスフォーマーを用いて、車線検知用のクエリと3Dの地面情報が含まれるキーをペアにして、クロスアテンションを用いて3次元空間で車線を推定する。ここで、各クエリは2次元空間で車線特徴(Lane Embedding)と座標情報(Point Embedding)を考慮して生成される。推定される3次元空間情報は反復的に更新されてデコーダーに反映されるため、精度向上に寄与している。


---

# 4. 結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/e7c44d81-84f5-db49-779e-100eeefa03bf.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/6f1095b4-371f-c6b2-9028-6363a6d824d1.png)
合成データセットApolloと実世界を撮影しOpenLaneおよびONCE-3DLanesのデータセットで、従来技術を大幅に上回るState-of-the-art(SOTA)の検出精度を達成した。

---

Paper URL: <https://openaccess.thecvf.com/content/ICCV2023/html/Luo_LATR_3D_Lane_Detection_from_Monocular_Images_with_Transformer_ICCV_2023_paper.html>

last updates: Oct 9 2023
OCIの管理ユーザ削除

管理ユーザを変更しようとしたがWarningが出て削除できなかった。
権限の問題らしいが設定方法が見つけづらかったのでメモ。

Identity
Domains
Default domain
Oracle Cloud Services
で各アプリケーションを選択した後、
Resources配下のApplication rolesから変更できる
(下矢印から展開するとmanage usersが出てくる)

上記でアクセスできるユーザを変更してもIDCSとOCIの管理ロールが残る


Unable to delete User 'xxx@gmail.com' since it is currently referenced by 
AppRole IDCSAppId_Identity Domain Administrator/Identity Domain Administrator,
AppRole OCI_Administrator/OCI_Administrator. 
You must either first remove these references and then delete the User or force delete the User which will automatically remove all these references and then delete the User.

Identity
Domains
Default domain
Security
Administrators
から削除できる

すべてRoleが削除できたらユーザが削除できるようになる
DriveAdapter: Breaking the Coupling Barrier of Perception and Planning in End-to-End Autonomous Driving

# 1. 概要
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/be24d680-7858-97a0-0d07-1a92f79162c1.png)
この研究では、自動運転向けの完全なEnd-to-Endシステムを提案しており、車両に設置された各種センサーから自車情報を認識し、走行経路を設計して出力し、かつ車の制御信号も最適化させて出力できる”DriveAdapter”を提案している。一般的によく用いられる最新技術では蒸留(Distillation)を採用し、Teacherモデルが周囲の車両情報と地図情報の正確な状態を把握して運転の方策を学習し、Studentモデルは生のセンサーデータのみにアクセスしてTeacherモデルから指示を貰いながら運転していたが、因果関係が不明確なままであった。

---

# 2. 新規性
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/937fb509-2a9d-f45f-b345-d60ac6471f59.png)
提案手法ではセンサー情報の認識をStudentモデルで担当し、経路計画をTeacherモデルで担当させる手法を採用している。ここで、StudentモデルがTeacherモデルの計画に必要な入力情報を直接学習すると真値との間で大きなギャップが発生し、運転性能が低下することを発見した。そこで、センサー情報の認識部分と経路計画部分のモジュール間で特徴をアライメントすることでこれを解決した(Driving Adapter)。

---

# 3. 実現方法
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/ed60af79-4716-df57-524b-2d6273f76d44.png)
Teacherモデルに車両周囲の俯瞰画像のセグメンテーション画像の真値を教師することで、ネットワークが経路設計でよりよい方策を学習できるようにしている。また、Studentモデルは生のセンサー情報を認識することに注力させるため、Teacherモデルを凍結し相互学習による精度の劣化を防ぐとともに、因果推論の健全性を保つことを実現している。

---

# 4. 結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/3f471f3e-744e-d5b6-2b06-d9fcdeabb8ea.png)
オープンソースの自動運転シミュレータであるCARLA(Car Learning to Act)を使って、リアルな複数の都市環境を走行させたところ、最高性能を達成した。

---

Paper URL: <https://openaccess.thecvf.com/content/ICCV2023/html/Jia_DriveAdapter_Breaking_the_Coupling_Barrier_of_Perception_and_Planning_in_ICCV_2023_paper.html>

last updates: Oct 9 2023
Dynamic Point Fields: Towards Efficient and Scalable Dynamic Surface Representations

# 1. 概要
Point Cloudの3次元点群情報から3次元物体の表面を正確に再構成する技術を提案している。従来技術では、3次元ボリュームの特徴空間でImplicit Learning(学習時にモデルに明示的な教師を与えずに入力と出力の関係性を自動でモデル化させる手法)が用いられたが、例えばスカートの揺れなど動的に変化する物体は表現できなかった。

---

# 2. 新規性
この研究では、非剛体の3D表面を効率的にモデリングするために、明示的に教師されるポイントベースのコンピュータグラフィックスの技術と、Implicit Learningで暗黙的にモデル化される動的モデリング技術を組み合わせる”Dynamic Point Fields”を提案している。

---

# 3. 実現方法
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/ab913832-e1e2-1908-e352-ef892a0825f3.png)
Point Cloudの3次元点群から、Chamfer-based Loss(点群や3次元モデルの生成や復元タスクでよく用いられる損失関数)と画像特徴ベースのLossを組み合わせて、モデリング時にChamfer距離を用いて生成された点群やモデルと目標となる真の点群やモデルとの間の距離を評価する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/8d78c92f-3e54-a0fd-fec3-04dbb0da465a.png)
3次元物体の表面の動的な変化をモデル化するために、Implicit Deformationを採用しており、各点とその関連する特徴量を持つ点群を新しい位置にマッピングするためにコンパクトなニューラルネットワークを用いている。このマッピング手法では、点ごとの個別変形手法がニューラルネットワークによって暗黙的にモデル化されており、動的な物体表面の汎化を効率的かつ柔軟にモデル化することが可能となった。

---

# 4. 結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/525c9044-ecbe-f8ef-8d74-07f7bbc89e1c.png)
従来手法では、例えば長いスカートなど複雑な衣類の外観に対処する際にモデルの表現力が制限されていたが、提案手法では非剛体の表現力や学習効率などが各段に向上しており、新しいポーズに対する頑健性が向上している。

---

Paper URL: <https://openaccess.thecvf.com/content/ICCV2023/html/Prokudin_Dynamic_Point_Fields_ICCV_2023_paper.html>

last updates: Oct 10 2023
SpringDataJPAでsave()時のテーブル名に"_seq"が自動で付いてdoesn't existと怒られる

# 環境
| 名称 | バージョン |
|:-:|:-:|
| Spring Boot | 3.1.5 |
| SpringDataJPA | 3.1.5 |
| Hibernate | 6.2.13 |
| MySQL | 8.0.34 |

# 問題
「T_TEST」テーブルに対してsave()実行時にエラーが出た。「_seq」はどこから出てきた？
なお、SELECT実行時は問題なかった。
```
java.sql.SQLSyntaxErrorException: Table 'testdb.t_test_seq' doesn't exist
```
## Entity
```TestDto.java
package com.bootsample.dto;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import java.time.LocalDateTime;
import lombok.Data;
import org.springframework.data.domain.Persistable;

/**
 * テストEntity
 */
@Entity
@Table(name = "t_test")
@Data
public class TestDto implements BaseDto, Persistable<Long> {
  
  /**
   * テストコード
   */
  @Id
  @Column(name = "test_code")
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Integer testCode;

  /**
   * テスト名
   */
  @Column(name = "test_name")
  private String testName;

  /**
   * 登録日時
   */
  @Column(name = "register_datetime")
  private LocalDateTime registerDatetime;

  /**
   * 更新日時
   */
  @Column(name = "update_datetime")
  private LocalDateTime updateDatetime;

  /**
   * 削除日時
   */
  @Column(name = "delete_datetime")
  private LocalDateTime deleteDatetime;

  @Override
  @Deprecated
  public Long getId() {
    return null;
  }

  @Override
  public boolean isNew() {
    return true;
  }

}
```
# 解決方法
＠GeneratedValueでGenerationType.IDENTITYを指定したら解消した。
```TestDto.java
// @GeneratedValue(strategy = GenerationType.AUTO)
   @GeneratedValue(strategy = GenerationType.IDENTITY)
```
AUTOの時は、GenerationType.SEQUENCEを指定した時の挙動をしていた。
通常、DBがMySQLの場合は、AUTOを指定すればIDENTITYを指定した時の挙動になるらしいのだが、、何故、、

今回は出番が無かったが、application.propertiesで旧式の命名方法を採用するように指定すればよい、といった知見もあった。
いずれ役に立つかもしれないので覚え書き。
```
spring.jpa.properties.hibernate.id.db_structure_naming_strategy: legacy
```

# 参考
https://stackoverflow.com/questions/75394471/my-java-spring-boot-application-adds-the-suffix-seq-to-table-users

https://qiita.com/KevinFQ/items/a6d92ec7b32911e50ffe

https://thorben-janssen.com/sequence-naming-strategies-in-hibernate-6/

https://stackoverflow.com/questions/75917729/how-to-setup-hibernate-id-db-structure-naming-strategy-to-legacy-in-springboot
自動テストを導入したいと思っている今日この頃

:::note warn
この記事はポエムです
当記事はAdvent Calendar 2023で「自動化できたらうれしいテスト、してみたいテスト」というお題があり、今日この頃テスト自動化したいと思っている思いを記しておこうかなという軽い”ノリ”の記事です。
現状自動テストに取り組めていないチームに所属している中で、なぜ取り組めていないのかとどうすれば取り組めるのかを考えた内容にアドカレのお題を混ぜる形で書いています。
:::

# 自動テストの経験値
プライベートでPython（Pytestを使用した）やJavaScriptで簡単なテストコードを書いて、GithubActionsで自動テストを行ったことがあるレベルです。
TDD（Test-Driven Development：テスト駆動開発）の研修を受講して、テストコードを書き日々テストを回すことでデグレを起こさないようになり品質が高まるかもと思い始めている今日この頃です。
現在（2023/12/08時点）所属している会社では、自動テストやテスト駆動開発といったワードがちょと話題に出るレベルで業務の中で開発プロスとして取り込まれていない。

# 自動テストのイメージ
自動テストというと、TDDが真先に思い浮かべるが、今までテストコードを書くことを開発プロスに取り入れてこなかったチームにはハードが高い。
前述しているが、自動テストはテストコード（テストケース）を積み重ねてデグレが発生していないかやフルパステストを行うことでプログラム単体の品質は間違いなく向上するというイメージがある。
コミットごと、毎日自動でテストサイクルを回すところまで持っていければ、着実に品質アップに繋がるし今まで手作業、目検で確認していたテスト負荷が着実に下がると思う。

# 自動テストを阻む壁
日々見聞きして感じる阻害要因の代表的なものを書き出してみる。

## テストコードを書くのが大変という偏見
今までテストコードを書いてこなかった開発者からすると、実装すべきコードに加えてそのコードをテストするコード書く必要があり倍のコーディング量がいると思いがちである。
業務ロジック等が変更になりコード修正の度にテストコードも直す必要があり、テストコードを直し忘れてテストが回らなくなるのではと心配の声もある。
:point_right:***テストコードは書かないが、毎回手作業で画面から入力したり、INPUTデータを手作業で作成して手動でテスト実行している***

## チーム全体の自動テストに対する意識の差
自動テストのスコープを考えたときに、色々な考え方があると思う。
1. プログラム単体でのテスト
1. 自動入力による画面遷移を伴ったテスト
1. シナリオ（ストーリー）を設定して実行するテスト
・・・・

自動テストに取り組みたい私のような:beginner:は、まずはプログラム単体でテストコードを書くことろが始めて仕様変更による構築工程戻りが発生してもデグレ発生していないテストは自動でやって負荷を下げたいと思う。

しかし、PM（プロジェクトマネージャー）、プロダクトオーナーが以下と思うと一気にプロジェクトでの自動テスト導入が進まなくなる。
    - __これらのテストを全部自動でやるのが自動テストをやっているという初期ハードルを高くする意識__
- __シナリオを設定しても、次のプロジェクトではシナリオが変わっていて作成したテストケースが使い物にならないのではという懐疑心__
- __自動テストなんて信用できない。テストが通るようにテストコード書いているかもしれない。人の手で人の目でやるテスト以外は信用できない__
:::note alert
自動テスト導入の最大の壁
下２つの意見が出るともう自動テストを導入できる雰囲気ではなくなる
:::

# 自動テスト導入を進めるために
## 簡単なテストケースからテストコードを書いて自動テストするの成功体験を醸成する
端的に***何もないところからは何も生まれない***ので、ごちゃごちゃ考える前にテストコードを書いて自動テストへの1歩を踏み出すことが大事だと思う。
関数の返却値やファイル出力結果の比較など、単純なケースでも良いので踏み出すことが大事！
1つ1つの成功体験を積み重ねることで、チーム内でテスト自動化の意識が変わるのではないでしょうか。
この小さい成功体験を広げていくことで、テスト自動化へハードルを徐々に越えていく。

:::note warn
個人で始めても社内の文化を変えるには長い時間を要するため、中々社内の開発プロセスに組み込むにはハードルが依然高い。
:::

## 外部の力を借りて一気に変革する
文化を変えるには果てしないので、外部の力を借りるのも一つの手であると思う。
予算規模が大きいプロジェクトやシステム更改であれば、外部ベンダーとしてテスト専門会社やテスト自動化に知見のあるベンダーに参画してもらって一気に変革を起こす。
このアドカレの主催者であるバルテス社様に頼るのが近道かもしれません。

https://service.valtes.co.jp/s-test/service/test-automation/

:warning:***私はバルテス社様とは関わりはないことは、注意書きとして記載させていただきます。***

# やってみたい自動テストについて
結びになりますが、取り組んでみたいテストについて記載します。
これができたら生産性が上がると日頃から思っているテストパターンになります。

## 画面遷移の自動テスト
画面入力のパターンを定義して、そのパターンごとの画面遷移を自動でキャプチャーして期待遷移画面と突き合わせを行い正しくアプリケーションが起動しているか確認する。
SeleniumやCypressが使えるのではと密かに思っています。

## バッチの処理結果比較
INPUTデータとそのINPUTから出力されるOUTPUTを定義して、自動でテスト実行し結果比較する。
手動で実行するは、手間がかかるが自動すれば毎度毎度のデグレ確認を効率化できるのではと思っている。
Probabilistic Human Mesh Recovery in 3D Scenes from Egocentric Views

# 1. 概要
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/44ed9f1c-c774-928a-52bd-04fc31f4d455.png)
AR/VRのアプリケーションで、ユーザーの視点から見た映像について相手とのインタラクションをより没入感を持たせて表現するには、相手のユーザーの3Dポーズを現実世界の体のポーズと一致させることが必要だが、従来手法では演算量を削減するために見えている範囲でしか3Dモデルを構築しなかったりシーン全体との当たり判定を持たせていなかったため3Dモデルが埋没してしまったりしていた。この研究では拡散モデル(Diffusion Model)を使用して3D空間との当たり判定付きのヒューマンモデルを自動生成する技術を提案している。

---

# 2. 新規性
2Dの動画の各フレームについて、拡散モデルを用いて3Dのヒューマンモデルの自動生成を、構築するシーンとの当たり判定を考慮したフレームワークで提案している。

---

# 3. 実現方法
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/506d9375-e481-034c-025f-b29d21ab33e9.png)
拡散モデルの制約条件として3Dシーンの幾何情報を含めることで、人体モデルとの当たり判定を自動で計算させる。分類器不使用型(classifier-free training )の拡散モデルの学習により、異なる条件で柔軟な人体パーツのサンプリングを可能としており、実世界の複雑なシーンにフィットした人体モデルの生成が行えるようにしている。シーンの制約を受けてサンプリングされた人体パーツは、GCN(Graph Convolution Network)によって関節毎に重みづけられて制約条件を反映されており、関節間の依存関係を考慮してボディパーツごとの生成を行うことでノイズ除去を行い、2D画像からでも正確に3Dモデルが生成できるようにしている。

---

# 4. 結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/6310a358-d68d-5c9b-d29a-71125ed344a2.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/477535d1-47e9-9df8-6e01-8f0a69fb0895.png)
一人称視点の画面からは見えていないオクルージョンのある部位についても、拡散モデルによって予測された人体パーツが生成されており、仮想世界との当たり判定を設けて生成することで自然な振る舞いを実現している。

---

Paper URL: <https://openaccess.thecvf.com/content/ICCV2023/html/Zhang_Probabilistic_Human_Mesh_Recovery_in_3D_Scenes_from_Egocentric_Views_ICCV_2023_paper.html>

last updates: Oct 10 2023
DECO: Dense Estimation of 3D Human-Scene Contact In The Wild

# 1. 概要
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/6afe4380-503e-ebbf-d739-d0872e2612ce.png)
2Dの画像から3Dのヒューマンモデルを作成し、かつどの部位が他の物体と接触しているかを推定する技術を提案している。デジタルツインなどの実用化には、人体モデルが他の物体とどのようなインタラクションを取っているかを自動推定できることが重要となる。従来方法では、荒い3Dモデルしか対応できない、2D空間のみで最適化させている、人体モデルの関節ではなく表面のみ考慮している、汎用性が乏しく現実世界の様々なシーンに適用できない、などの制約があった。

---

# 2. 新規性
任意の現実世界の2D画像に対して、3Dの人体モデルを生成し、かつ接触している物体との領域を正確に推定している。

---

# 3. 実現方法
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/6ee5282c-1662-6c74-b404-021c29174f23.png)
入力画像に対して、シーン特徴を抽出するエンコーダーとボディパーツ特徴を抽出するエンコーダーから異なる特徴を得る。シーンコンテキストを予測するブランチではセグメンテーションを行い、各物体を正確に切り分けて予測する。ボディパーツのコンテキストを予測するブランチでは人体モデルの各部位をセグメンテーションする。人体の部位と物体との接触部分を予測するブランチでは、各物体と人体の各パーツがどこで接触しているかをクロスアテンションを用いて重みづけしてガイドを与えている。接触部位は正解値との予測が最小になるようにLossを設けるだけでなく、2D画像のセグメンテーション結果ともLossを設けることで、未知の2D画像の入力に対して3Dモデルの体表面でどこが接触しているか正確に求められるようにしている。

---

# 4. 結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/bb6d1c2b-2eca-728f-ce54-7b172565e5bd.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/1828b81d-c01d-0d8c-5c9a-9eb4c100824f.png)
提案手法"DECO"は従来手法と比べて高精度に周囲の物体との接触部分を予測できていることが分かる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/28c7dbec-d91e-c4d5-6887-6205b621bbed.png)
RICH/DAMON/BEHAVEといった各種データセットに対しても、既存手法と比べて大幅な精度向上を達成している(SOTA達成)。

---

Paper URL: <https://openaccess.thecvf.com/content/ICCV2023/html/Tripathi_DECO_Dense_Estimation_of_3D_Human-Scene_Contact_In_The_Wild_ICCV_2023_paper.html>

last updates: Oct 10 2023
Decoupled Iterative Refinement Framework for Interacting Hands Reconstruction from a Single RGB Image

# 1. 概要
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/0dc47857-5ef4-f6ab-c610-70ac779fcc5b.png)
実世界の人間の複雑な手の動きを2D画像から3Dモデル化することは、複雑な手の空間的な関係を予測する必要があり、また両手の重なりなどのオクルージョンが発生することに加え、左右の手は見かけが非常に類似していることもあって、非常に難易度の高いタスクである。提案手法では、特徴空間を2Dと3Dで分けており、局所的な特徴量は2D空間で、大局的な特徴量は3D空間で求め、2つの特徴空間で複数回のフィードバックループを設けることで正確な予測を可能にしている。(図は、左から入力画像：IntagHand(従来手法)：提案手法)

---

# 2. 新規性
複雑な両手の振る舞いを2D画像から3Dモデルにするフレームワークを提案しており、ピクセルレベルで3Dモデルのメッシュを画像にマッピングできる。

---

# 3. 実現方法
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/0ffed7f9-fa22-3735-7e19-93255d289812.png)
まず、エンコーダーから得られる視覚特徴を2D空間で手の関節毎に表現する。抽出された特徴をもとにGCN(Graph Convolutional Neuralnetwork)を用いて3次元空間の特徴量に変換し、さらにトランスフォーマーを用いて3Dの手の関節の特徴から左右の手の3Dメッシュと両手のインタラクション情報を予測する。次に、大局的な情報を持つ手の関節の特徴を2D特徴空間に逆投影し、2DのCNNを用いることで3D情報を反映してピクセル単位で情報のアップデートを行う。これを複数回繰り返すことで2D-3D間の整合性が取れて正確で頑健な手の推定が可能になる。

---

# 4. 結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/f3b97061-23cc-e818-365d-d09aeb27fcc8.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/713acda8-397b-274c-6ed7-5e4aedf1d02c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/15d5b790-9d6c-049b-2120-8d96a04fe234.png)
大規模な手のデータセットであるInter Hand 2.6Mを用いて評価実験されており、従来手法の性能を大幅にうわ待っている。

---

Paper URL: <https://openaccess.thecvf.com/content/ICCV2023/html/Ren_Decoupled_Iterative_Refinement_Framework_for_Interacting_Hands_Reconstruction_from_a_ICCV_2023_paper.html>

last updates: Oct 10 2023
Chasing clouds: Differentiable volumetric rasterisation of point clouds as a highly efficient and accurate loss for largescale deformable 3D registration

# 1. 概要
コンピュータビジョンでは、異なるデータセットや視点から取得された複数の画像や点群などのデータを同じ座標系に対応付けるプロセスをRegistrationと呼び、画像の位置合わせやゆがみ補正、物体のトラッキング、3Dモデリング、医療画像処理などに利用される。この研究では、3D Point Cloudを用いた学習ベースのRegistrationの技術を提案しており、特に医療診断における肺血管ツリーのアライメント(3次元での位置合わせ)など、高度に変形する構造を持つタスクに焦点を当てている。

---

# 2. 新規性
大規模なPoint Cloudの3次元点群から変形可能な3D Registrationを実現するために、効率的で高精度な損失関数を提案している。また、高解像度のデータ(100k以上の3D pointを持つ)に対して、点群距離を測定する計算量を大幅に削減する外挿方法と正則化を"Sparse Motion Field"(動きのある対象の表面や点群を速度ベクトルや変位ベクトルで記述する)に適用している。

---

# 3. 実現方法
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/cf26fa86-a0c9-c967-7ff0-cbdaabfaf29d.png)
Source/TargetのPoint Cloudは、幾何学的なRegistrationであるPointPWC modelとDGCNN modelに入力され、Sparce Motion Fieldを予測する。ここで、提案手法であるDiVRoCを使用して正則化と密なベクトル場への変換を行う。用いているのは微分可能なネットワークのため、Adamを使って高速なインスタンスの最適化を実現しており、さらにkNN平滑化やChamfer Loss(2tuの点群の形状や類似性を評価)と組み合わせてDivRoC正則化を適用すると効果が大きくなることを示している。

---

# 4. 結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/486960bb-cc70-b47b-17dd-f8b8b8442d1e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/efd96697-9f1c-26da-26b0-81110c8f42ce.png)
DiVRoCは正則化手法のため、従来手法のオプティマイザーやネットワークに簡単に組み込むことが可能で、PVTデータセットでSOTA(State-of-the-Art)を達成している。

---

Paper URL: <https://openaccess.thecvf.com/content/ICCV2023/html/Heinrich_Chasing_Clouds_Differentiable_Volumetric_Rasterisation_of_Point_Clouds_as_a_ICCV_2023_paper.html>

last updates: Oct 10 2023
Webサーバとは

## Webサーバとは
Webブラウザからのリクエストに応じて製紙画面や画像などのホームページのデータをWebブラウザに返すサーバのこと。
静的画面を表示させるために必要。
AWSやレンタルで利用するのが一般的。
XAMPPのApacheもWebサーバ。

## 主なWebサーバ
1\. Apache
...オープンソース系。公開フォルダはhtdocs。
2\. Nginx
…オープンソース系。
3\. IIS（Microsoft Internet Information Services）
…Microsoft Windows標準のWebサーバ
Doppelgangers: Learning to Disambiguate Images of Similar Structures

# 1. 概要
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/bfb3577f-089c-3cbd-37ec-c5c4423285c0.png)
多視点カメラ画像を使って三次元再構成を行う際に、視覚的な画像特徴が非常に似通っている建造物は三次元空間での位置合わせを失敗させる原因になる。例えば、凱旋門のように表と裏の異なる門を撮影してもほとんど同じ画像特徴を示すケースで問題になることが多い。この論文では、視覚的に類似した画像のペアが同じか異なる3D表面を描いているかを判断する技術を提案している。

---

# 2. 新規性
学習ベースのアプローチを用いた視覚的な曖昧性解消の手法を提案しており、これを画像ペアのバイナリ分類タスクとしてモデル化している。また、新しいデータセット"Doppelgangers"を公開している。データセットには、似たような構造の画像ペアが含まれており各ペアに対する正解ラベルが提供されている。対称性を持つ222の建造物について、100万枚のラベル付きのペア(17.8万枚の類似建造物)を含む。

---

# 3. 実現方法
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/0d834ed0-a8e5-cdda-43ef-d8d10b9b6c25.png)
局所的なキーポイントとマッチングの空間分布を入力とするネットワークアーキテクチャが設計されており、これにより局所的にも大局的にも手がかりになる特徴を抽出できる。
見かけが類似している場合、キーポイントが同様のマーカーに集中するが、マッチングできた場所であれば同じ物体の同じ方向から撮影されたものだと判断する。もし、キーポイントが存在するがマッチングしない場合は、同じ建物でも異なる3D表面を撮影している可能性が高い。

---

# 4. 結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/50dde50e-fc51-974f-6cf5-08a6525efb8d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/50f5b802-93e1-13f4-1be5-5736bff3adac.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/1cb09b1c-4531-a345-6012-3da30f1fd321.png)
非常に類似度の高い建造物でも見分けることができ、これをSfM(Structure from Motion)に統合して三次元再構成を高精度に生成できることを示している。

---

Paper URL: <https://openaccess.thecvf.com/content/ICCV2023/html/Cai_Doppelgangers_Learning_to_Disambiguate_Images_of_Similar_Structures_ICCV_2023_paper.html>

last updates: Oct 9 2023
Windows 11 Pro (22H2)からsambaサーバーにアクセスできないときの対処法

## 現象
Windows 11 Pro (22H2)のエクスプローラーからLinux(Ubntu 22)上のsambaサーバーにアクセスできない.
「この共有に対するアクセス許可がありません」というメッセージが表示される.

## 環境
 - クライアント
    Windoss 11 Pro (22H2)
 - サーバー
   Linux (Ubuntu 22.04)
   samba Version 4.15.13-Ubuntu
 - sambaユーザー
   LinuxのOSユーザーと同一名のユーザーをpdbeditコマンドで追加した

## 回避方法
Windows 11のローカルグループポリシーエディターで[Lanmanワークステーション]の[安全でないゲストログインを有効にする]を有効にする.

### 手順
		1. gpeedit.mscを実行

		2. 以下のパラメータを有効に設定
			[コンピューターの構成] / [管理用テンプレート] / [Lanmanワークステーション] / [安全でないゲストログインを有効にする]

        3. Windowsを再起動する
   



## 参考
[Windows10/11]クライアントからサーバの共有フォルダにアクセスするとエラーが表示され、アクセスできない
https://faq.mypage.otsuka-shokai.co.jp/app/answers/detail/a_id/314207/~/%5Bwindows10%2F11%5D%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%83%88%E3%81%8B%E3%82%89%E3%82%B5%E3%83%BC%E3%83%90%E3%81%AE%E5%85%B1%E6%9C%89%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%81%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%99%E3%82%8B%E3%81%A8%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8C%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%80%81%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84

SMB2 と SMB3 のゲスト アクセスが無効になっている - Windows Server | Microsoft Learn
https://learn.microsoft.com/ja-jp/troubleshoot/windows-server/networking/guest-access-in-smb2-is-disabled-by-default

## 備考
- Windows 10以前からのsambaの鉄板ネタ(らしい)
- Windowsのエディション(pro / home / enterpriseなど)で上記パラメータのデフォルト値が違う(らしい)
- 筆者はWindows 10 homeからWindows 11 proにOSをインプレースで変更して遭遇した
  (これまであまり遭遇したことがなかったので、インプレースでインストールしなければデフォルト値が変更されないのかもしれない)
ClothPose: A Real-world Benchmark for Visual Analysis of Garment Pose via An Indirect Recording Solution

# 1. 概要
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/c22528e8-7841-7cef-d570-7ce75506de83.png)
この研究では、衣類のポーズをトラッキングするGarmentTwinを提案している。ロボットによる自動化で衣類の折り畳みを行わせようとすると、衣類の素材や現在の折りたたまれ方を正確に理解する必要があり、実世界でアノテーションすることが極めて難しいため困難なタスクとなっている。

---

# 2. 新規性
提案手法では、実世界で衣類のモデルとRGB-Dの衣服の折り畳み動画を収集しており、ClothPoseというデータセットとして公開している。データセットには10のカテゴリの600の衣類について、2000個のビデオクリップから成る30000枚のRGB-Dの動画フレームを含んでいる。

---

# 3. 実現方法
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/bbac5d07-7484-6c09-c5db-7bae68401b94.png)
収集した実世界の衣類のモデルとRGB-Dの折り畳み動画を、物理シミュレーションベースのアニメーションにして折り畳み操作を仮想空間上で最適化して再現する。これにより、実際に観測された衣類の折り畳みのシーンと、仮想空間上の衣類のポーズを補正して合わせることができる。こうして、シミュレーションベースで3次元的な衣類のアノテーションを実現した。


---

# 4. 結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/323fe821-e38a-cbdc-730b-3f65695b0394.png)
入力のPoint-Cloudの点群情報に対しても適用可能で、提案手法ではGarmentTwinを適用して衣類の再構成を行っているが従来手法と比べて高精度な位置合わせができていることが分かる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/70fd11cf-0f08-e29f-95ae-d5cdcdc70013.png)

データセットも従来の物よりも規模が大きく、特に衣類のVertexレベルでのアノテーションはこれまで実現できていなかったため、3次元モデリングやデジタルツインの仮想世界での最適化タスクに向いている。

---

Paper URL: <https://openaccess.thecvf.com/content/ICCV2023/html/Xu_ClothPose_A_Real-world_Benchmark_for_Visual_Analysis_of_Garment_Pose_ICCV_2023_paper.html>

last updates: Oct 9 2023
EMR-MSF: Self-Supervised Recurrent Monocular Scene Flow Exploiting Ego-Motion Rigidity

# 1. 概要
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/0ddbc9fd-40a7-103e-99be-4e1010551dab.png)
連続したフレーム間で3次元空間内の物体や環境の動きを把握する技術のことを、Scene Flow Estimationという。具体的には、2つの時間的に連続したフレーム画像から、各画素における物体の3Dモーションや深度情報の推定に用いられ、この研究では単眼カメラを使った自己教師有り学習(Self-Supervised)を実現している。

---

# 2. 新規性
従来の自己教師有り学習によるScene Flow Estimationの精度を大きく上回っており、完全教師あり学習のパフォーマンスに肉薄している。

---

# 3. 実現方法
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/a986cf18-e727-84f6-6c89-e3c8b80ad097.png)
Ego-Motion Aggregation(EMA)モジュールが新たに提案されており、視点の変化(Ego-motion)の情報集約を行うことで3次元のモーション変化に対して正確な位置補正に寄与している。EMAはシーンの中で静止している物体領域を特定するRigidity Soft Maskとシーンの動きのある物体領域を特定するSE3 Motion Fieldとを組み合わせて構成されており、特に静止領域に対して視点の変化に頑健になっている。
また、モーションの一貫性を考慮したロス設計や正則化ロス、勾配分離手法やシーン再合成手法など効果的な学習プロセスが複数組み込まれている。

---

# 4. 結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/057fecb0-6ff0-cea6-9864-ef377fd8ef29.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/6977d350-b6b9-69ee-7a06-ca4f46eeec99.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/3bb4ce31-653a-0a44-e0bb-b0dbaa36b0c8.png)

KITTI　Scene Flowベンチマークでは、単眼カメラを用いた既存の自己教師有り手法と比べて、SF-allで性能が44%向上している。深度推定や自己位置推定などのサブタスク全体で優れたパフォーマンスを示している。

---

Paper URL: <https://openaccess.thecvf.com/content/ICCV2023/html/Jiang_EMR-MSF_Self-Supervised_Recurrent_Monocular_Scene_Flow_Exploiting_Ego-Motion_Rigidity_ICCV_2023_paper.html>

last updates: Oct 9 2023
ENVIDR: Implicit Differentiable Renderer with Neural Environment Lighting

# 1. 概要
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/749b1202-1ff5-0159-7da3-7b08c7e06027.png)
NeRF(Neural Radiance Field)を用いて多視点画像から3次元モデルを生成する技術は数多く提案されているが、物体表面が極めて強い鏡面反射を起こす素材でできている場合、光沢のある表面を正確に表現することが難しかった。この研究では、非常に強い鏡面反射を持つ物体の表面の高品質なレンダリングと3次元構造の再構築のための、レンダリング技術およびフレームワークを提案している。

---

# 2. 新規性
物体の材質と環境光のいずれの特徴もNeRFのレンダラーで取得できるようにしたことで、材質の編集やリライティングも可能にしている。

---

# 3. 実現方法
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/5792a5f4-5646-8895-004a-2b05a10a42ce.png)
物体の表面情報とライティングの相互作用を学習できるように新たなニューラルレンダリング手法が提案されている。このレンダラーは既存の物理ベースのレンダラーを用いて学習されており、実際のシーンをベースにして物質の材質に関する表現が分離可能となっている。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/c5a693c6-4a0a-7581-3fc3-499bbb42c12d.png)
学習済みのニューラルレンダラーを活用して凍結したモデルを用いて一般的なシーンを表現するためのニューラルサーフェスモデルが提案されている。このモデルで、鏡面反射からの間接的なライティングの合成を可能にしている。

---

# 4. 結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/7a3a56de-2f06-6f0d-f909-f2c4aef977cb.png)
鏡面反射の強い物質の3次元再構成が極めて精緻にできていることが分かる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/24696ed1-ddd6-0aa1-be7f-7b7b7683d015.png)
また、環境光が変化したときの反射についても、環境光を分離して表現できるため自然な映り込みができている。

---

Paper URL: <https://openaccess.thecvf.com/content/ICCV2023/html/Liang_ENVIDR_Implicit_Differentiable_Renderer_with_Neural_Environment_Lighting_ICCV_2023_paper.html>

last updates: Oct 9 2023
BANSAC: A dynamic BAyesian Network for adaptive SAmple Consensus

# 1. 概要
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/513f98d0-a1bb-b28e-905d-272765819300.png)
RANSAC（Random Sample Consensus）は、コンピュータビジョンの特徴点マッチングなどで用いられる推定手法の一つで、特にノイズの影響を受けやすいデータから信頼性のあるモデルを見つけるためのアルゴリズムとして有名だが、反復的なデータのサンプリングとモデルの構築は計算コストが高く、計算効率を向上させるための研究が数多く提案されている。その中でも、Guided Sampling(誘導サンプリング)は通常のランダムサンプリングの代わりに、予め得られた情報や既知の知識を用いて適切なサンプルを選択する確率を高め、アルゴリズムの収束を早めたり計算コストを削減する効果が期待される。この論文では、新しい適応的サンプリング手法として”BANSAC”を提案している。

---

# 2. 新規性
新しい適応的サンプリング手法を提案している。従来手法では、データポイントのインライヤー/アウトライヤーの分類に関する事前情報が必要だったり、以前に計算されたスコアをサンプリングに再利用していたりした。(ここで、モデル作成時に利用するモデルの適用分布内のデータのことをインライヤーと呼び、外れ値のことをアウトライヤーと呼ぶ。)

---

# 3. 実現方法
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/ccd7b123-1e17-0ef6-d85e-132924f84784.png)
RANSACを反復する過程で、各データポイントのインライヤースコアを更新するダイナミックベイジアンネットワークを採用している。各試行で反復的に更新されたスコアを再利用して重み付きのサンプリングを適用することで、探索的かつ適応的サンプリングを実現しており、また確率的な終了条件を設けたことで早期に解を発見することができるようになった。終了条件には、更新されたインライヤー/アウトライヤースコアを用いる。

---

# 4. 結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/feff1917-b111-40ea-190d-8c2c97cd9765.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/c1bb3941-8f13-b0ab-c331-b75b04c09386.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/bcfd9f83-6932-52a5-df66-6a356b26ab68.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/6e77c3b2-3e0d-dab9-9654-4ef67772fd85.png)
複数のデータセットと複数のアプリケーションタスクに対して評価実験を実施しており、提案手法がState-of-the-art(SOTA)を達成している。提案手法ではより少ない計算時間でノイズに頑健なマッチングができていることが分かる。

---

Paper URL: <https://openaccess.thecvf.com/content/ICCV2023/html/Piedade_BANSAC_A_Dynamic_BAyesian_Network_for_Adaptive_SAmple_Consensus_ICCV_2023_paper.html>

last updates: Oct 9 2023
QGISで政令指定都市をひとまとまりの地物にする

## はじめに
[国土数値情報](https://nlftp.mlit.go.jp/ksj/)からダウンロードできる行政区域データのポリゴンは，市町村・特別区・政令指定都市の区が同じ属性に格納されています．
しかし，統計によっては行政区単位での集計を行わないものもあります．このようなデータを用いて地図を作成する際には，行政区別になっている政令指定都市のポリゴンをディゾルブしてやらなければなりません．行政区域データでは，政令指定都市名と，町村が所属する郡名とが同じ階層の属性に格納されているため，横着すると町村が巻き添えをくらってしまいます．したがって，少しだけ面倒な手順を踏まねばなりません．

## 手順
例として神奈川県の行政区域データを使用します．
神奈川県には横浜市，川崎市，相模原市の３つの政令指定都市があるため，行政区単位での集計を行わない統計があった場合，少々面倒なことになります．
さて，行政区域データの属性に関してですが，**N03_003には郡・政令都市名**，**N03_004には市町村名**が格納されています．したがって，N03_003を基準にディゾルブした場合，政令指定都市はそれぞれひとつのポリゴンになりますが，同じ郡に属する町村(中郡大磯町と二宮町など)も郡ごとにまとめられてしまいます．

### 市町村名を格納するフィールドを作る
属性テーブルを開き，フィールド計算機を立ち上げます．フィールド名は適当に`name`とでもしておきます．フィールド型は，文字列を扱うため`string`にします．

次の条件式を入力します．

`if(N03_003 LIKE '%市',N03_003,N03_004)`

`LIKE`は条件と部分一致するデータを抽出する演算子です．`%`はワイルドカードです．N03_003が'市'で終わる文字列のとき，N03_003(政令指定都市名)を，そうでないとき，N03_004(市区町村)を返します．

条件式によって，`name`に市町村名が入力されました．

![スクリーンショット 2023-11-22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3625888/cf9728d2-267b-c172-a90b-38861b983e7f.png)

### 市町村単位でディゾルブする
属性テーブルを閉じ，**ベクタ＞空間演算ツール＞融合(dissolve)** を選択します．
`name`を基準属性として実行します．

![スクリーンショット 2023-11-22 132656.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3625888/12a35566-aa35-958d-0b13-47afffc1ad57.png)

政令指定都市の行政区を含まない市町村地図ができました．
`name`には市町村名が格納されているため，このまま`name`をターゲット属性にしてテーブル結合したりもできます．
Object as Query: Lifting Any 2D Object Detector to 3D Detection

# 1. 概要
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/03048c00-4e38-b603-bf3a-a115f5990733.png)
この研究では、2次元画像の物体検出手法を、多視点画像の3次元物体検出手法へ拡張する手法を提案している。多視点画像を入力とした3次元物体検出手法は、近年数多く提案されているが、主にマルチビュー画像から3D表現を学習することを主眼としており、密な特徴抽出手法を採択するか、画像内に点在する同一物体の情報を集約していたため、いずれも計算コストが膨大にかかっていた。

---

# 2. 新規性
新しいアイディアとして、Multi-View 2D Objects guided 3D Object Detector(MV2D)を提案している。これは、任意の2次元物体検出器(例えば、SSDやYOLOなど)をマルチビュー向けの3次元物体検出器に適用させる技術である。

---

# 3. 実現方法
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/957cf021-8e02-3763-ec3a-1f911ef9b4d4.png)
2Dの物体検出器を使って物体の位置に関する有益な事前情報を提供できる点に着目し、これを利用して画像のセマンティクスに基づいたクエリを物体ごとに生成する(Object Queries)。生成されたクエリは、カメラの画角内に含まれる物体に基づいており、3D空間の推定においても物体の位置を強力に特定することができる。生成されたクエリに対しては、特定の物体の特徴(Object Features)に焦点を当てるように設計された疎なクロスアテンション(Sparse Cross Attention)を適用し、ノイズからの干渉を抑制している。

---

# 4. 結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/4a9d0b95-061d-d256-b39f-44a4c9cb95fd.png)
大規模自動運転用データセットnuScenesを使って評価実験を行っており、クエリを物体ごとに生成させ疎なクロスアテンションをを適用することで、3Dの物体検出能力を向上させていることを示している。表は、クロスアテンションレイヤー内の物体のクエリとキー、バリュー(Q/K/V)のうちどれを採用すると精度に影響するかを探索的に調査している。(Top1はtop1 IoUを、AOはall overlappedを意味する)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/fcf1c4f5-ddc5-233f-0953-a0feaaa69b08.png)
物体ごとのPrecision-Recall曲線を見ても、ベースラインと比べて大幅な性能向上を達成している。

---

Paper URL: <https://openaccess.thecvf.com/content/ICCV2023/html/Wang_Object_as_Query_Lifting_Any_2D_Object_Detector_to_3D_ICCV_2023_paper.html>

last updates: Oct 9 2023
EgoLoc: Revisiting 3D Object Localization from Egocentric Videos with Visual Queries

# 1. 概要
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/c0020133-92aa-1b5e-9de2-9d03afc41fff.png)
この研究では、動画と3次元の物体認識技術を拡張して、新たな4次元空間における物体の位置推定技術を提案している。例えば、一人称視点の動画と検索対象の画像を与えると、動画内において検索対象の物体が最後に観測された位置座標を提示するシステムを提案している。

---

# 2. 新規性
Ego4D Episodic Memory BenchmarkはVisual Queries with 3D Localization(VQ3D)という新しいタスクを提案している。提案手法をSfM(Structure from Motion)へ適用し、カメラポーズの推定を評価したところ、従来手法では8.71%だった精度を77.27%まで向上させた。

---

# 3. 実現方法
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/08e596e0-f00f-2619-b3ca-97522afada87.png)
EgoLocというパイプラインを提案しており、より高精度なカメラポーズの推定と、2Dの検索対象の物体を一人称視点の動画から効率的に探索する技術を実現している。2Dの物体検出の信頼度を利用してより頑健なカメラポーズを推定しつつ、多視点の3D変位を集約することで検索性能を大幅に向上させた。

---

# 4. 結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/4a2b3693-6908-7d11-b08a-4cf0449b922c.png)
最大で87.12%の成功率を達成しており、従来手法から10倍以上の高精度化に成功している。

---

Paper URL: <https://openaccess.thecvf.com/content/ICCV2023/html/Mai_EgoLoc_Revisiting_3D_Object_Localization_from_Egocentric_Videos_with_Visual_ICCV_2023_paper.html>

last updates: Oct 9 2023
API Gatewayの耐障害性を考える

# はじめに
この記事はDevOps on AWS大全の一部です。
DevOps on AWS大全の一覧は[こちら](https://qiita.com/tech4anyone/items/b06f88035d27c6ef13b2)。

この記事ではAPI Gatewayを耐障害性の観点から超詳細解説しています。

具体的には以下流れで説明します。

- API Gatewayとは
- API Gatewayを更新するときのダウンタイム
- API Gatewayのスケーラビリティ


AWSの区分でいう「Level 200：トピックの入門知識を持っていることを前提に、ベストプラクティス、サービス機能を解説するレベル」の内容です。

# この記事を読んでほしい人
- API Gatewayを採用するときのベストプラクティスを説明できるようになりたい人
- API Gatewayの耐障害性に不安を感じている人
- AWS Certified DevOps Engineer Professionalを目指している人


# API Gatewayとは
AWS API Gatewayは、簡単かつ効果的なAPIの作成・管理を可能にするサービスです。

![](https://storage.googleapis.com/zenn-user-upload/a263828a0134-20231122.png)

RESTfulなAPIやWebSocketを素早くデプロイし、スケーラビリティやセキュリティも確保します。
Lambdaや他のAWSサービスと統合し、サーバーレスなアーキテクチャを構築できます。

AWS API Gatewayには3つのエンドポイントタイプがあります。

まず、Edge-Optimizedは、クライアントに最も近いAWS Edge LocationでAPIをホストし、低レイテンシーでアクセスできます。
デフォルトではEdge-Optimizedなのでパブリックに公開したくない場合は後述するPrivateタイプでAPIを作る必要があります。

次に、Regionalは特定のAWSリージョン内にAPIを展開し、そのリージョン内のすべてのエンドユーザーに向けて高パフォーマンスな接続を提供します。

そして、PrivateはVPC内でAPIをホストし、パブリックインターネットを経由せずにプライベートネットワーク内でアクセス可能です。

これらのエンドポイントタイプを使い分けることで、要件に最適なアーキテクチャを実現できます。

# API Gatewayを更新するときのダウンタイム
API GatewayはAPI Gateway自体に変更を加えるだけでは環境に変更が反映されません。
変更を環境に反映させるためにはデプロイメントと呼ばれる作業が必要です。

そして、このデプロイメントをベストプラクティスに沿って使うとAPI Gatewayを更新する際のダウンタイムを最小化できるため以降で詳細に説明します。

## API Gatewayのステージ変数
API Gatewayのデプロイメントを理解するためにはステージという概念が大切です。

![](https://storage.googleapis.com/zenn-user-upload/65e2cc419dd7-20231122.png)

API Gatewayのステージは、APIのエンドポイントURL単位に作成するデプロイメント単位です。

上図のように複数のステージを持つことができ、それぞれに設定をカスタマイズできます。
この設定をカスタマイズする際に利用するのがステージ変数です。

ステージ変数はAPI Gatewayのステージごとに設定できる環境変数で、更新頻度の高いパラメータを定義するために使います。

例えば、API Gatewayとセットで使うことが多いLambdaを例にとると、LambdaのエイリアスARNをステージ変数に定義することがベストプラクティスです。

![](https://storage.googleapis.com/zenn-user-upload/5305bac33261-20231122.png)

Lambdaと同様、環境変数であるステージ変数を使うことで変数を更新するたびにAPI Gateway自体の再構築が不要となるので更新に伴うダウンタイムが短くなります。

## API Gatewayのカナリアリリース
API Gatewayはカナリアリリースも可能です。

![](https://storage.googleapis.com/zenn-user-upload/cc8025a9aca7-20231122.png)

カナリアリリースをするときには既存のステージに結び付くCanaryと呼ばれる特別なステージを作成してリリースします。

あるステージに対してCanaryステージを定義するとデプロイ操作がいったん、Canaryのみに行われます。
その後、トラフィックをシフトしてメインにもデプロイを反映する昇格か変更を切り戻す削除化を選ぶことができます。

# API Gatewayのスケーラビリティ
クラウドでAPIを提供するときには想定した性能を発揮させるために、スロットリングに注意する必要があります。
具体的には、API Gatewayはリージョンごとに10,000 リクエスト/秒しか裁くことができません。
そのため、API Gatewayではスロットリングの設定を適切に行ない、特定のAPIに対してトラフィックがバーストした際でもほかのAPIに影響を出さないようにすることがベストプラクティスです。

API GatewayのスロットリングはLambdaの同時実行数のように、スロットリング目標を設定して対処します。

具体的には使用量プランを用いてAPIとステージレベルのスロットリング目標を設定する、あるいは使用料プランを用いてメソッドレベルのスロットリング目標を設定することが可能です。

# まとめ
この記事ではAPI Gatewayを耐障害性の観点から超詳細解説しました。

- API Gatewayとは
- API Gatewayを更新するときのダウンタイム
- API Gatewayのスケーラビリティ

次回はECSの耐障害性を考えます。
PowerShell Microsoft Graph と Azure Active Directory ユーザー情報出力 (今のAzure Entra)

# Azureユーザーの最終ログイン日時の出力方法の備忘録（ユーザー棚卸目的）

Microsoft Azure AD情報(Microsoft Entra)につきPowerShellで操作するにもGraphモジュールが無いと出力できないようになってきている。また、情報はブラウザからエクスポートすることもできないようだ。ギャラリーでモジュールをインストールしてどうのこうのというややこしい情報が多かったので簡単にした方法を掲載しておこう。

（１）PowerShellを起動し、Graphモジュールをインストールする（初回のみ）
```
Install-Module Microsoft.Graph -Scope CurrentUser
```
（２）Graphでユーザーメンテに関連するモジュールをインポート
```
Import-Module "Microsoft.Graph.Identity.Signins"
Import-Module "Microsoft.Graph.Users"
Import-Module "Microsoft.Graph.Groups"
```
（３）必要な権限を付与（Azure上のグローバル管理者権限があれば動作しますがこれがない場合は・・・？）
```
Connect-MgGraph -Scopes "User.Read.All"
Connect-MgGraph -Scopes "AuditLog.Read.All"
```
（４）出力先を指定してUTF8で出力（※ファイルパスにファイルがないこと。あると失敗する。文字コード指定しないとASCIIになるのか文字化けしてしまう）
```
Get-MgUser -All -Property 'UserPrincipalName','SignInActivity','Mail','DisplayName' | Select-Object @{N='UserPrincipalName';E={$_.UserPrincipalName}}, @{N='DisplayName';E={$_.DisplayName }}, @{N='LastSignInDate';E={$_.SignInActivity.LastSignInDateTime}} | Export-Csv -Path C:\temp\lastsignin.csv -encoding UTF8 -NoTypeInformation -NoClobber
```

ファイルをExcelなどで確認して終わり。
[Ruby] 委譲(def_delegators)を理解する

Rubyには`def_delegators`というメソッド委譲と呼ばれる処理を行うためのクラスメソッドが定義されています。ちなみに、RailsのActiveSupportにも`delegate`という同じようなメソッドがあります。

メソッド委譲を使うと、クラス外で定義されているメソッドを、あたかもインスタンスメソッドのように呼び出すことができるようになります。

```ruby
class Person
    attr_accessor :name
    attr_accessor :age
end

class Staff
    attr_accessor :person
    def_delegators :person, :name, :age
end

p = Person.new
p.name = "Taro"
p.age = 20

s = Staff.new
s.person = p

pp s.name # => Taro
```

## コードリーディング

まずは、`delegate`メソッドは次のように定義されています。

```ruby:forwardable.rb:198
  alias delegate instance_delegate
```

`instance_delegate`メソッドの処理を追いかけていくと、`def_instance_delegator`と`_delegator_method`に主要な処理が書かれていることが分かります。コードは長いので[Appendix](#delegator_method)に載せています。

`_delegator_method`では、インスタンスメソッド定義を文字列として作って、`def_instance_delegator`の中で`module_eval`を呼び出すことでクラスにインスタンスメソッドを追加しています。

## 具体例

例えば、次のような委譲を定義することを考えます。

```ruby
def_delegators @customer, :code, :name
```

すると、インスタンスメソッドとして、`code`メソッドと`name`メソッドが定義されます。

```ruby
def code(*args, &block)
    _ = @customer
    _.__send__(:code, *args, &block)
end

def name(*args, &block)
    _ = @customer
    _.__send__(:name, *args, &block)
end
```

なので、`code`と`name`があたかもアクセサーとして定義されているかのように振る舞います。

## Appendix

### def_instance_delegator

```ruby
  def def_instance_delegator(accessor, method, ali = method)
    gen = Forwardable._delegator_method(self, accessor, method, ali)

    # If it's not a class or module, it's an instance
    mod = Module === self ? self : singleton_class
    ret = mod.module_eval(&gen)
    mod.__send__(:ruby2_keywords, ali) if RUBY_VERSION >= '2.7'
    ret
  end
```

### _delegator_method

```ruby:forwardable.rb:203
  def self._delegator_method(obj, accessor, method, ali)
    accessor = accessor.to_s unless Symbol === accessor

    if Module === obj ?
         obj.method_defined?(accessor) || obj.private_method_defined?(accessor) :
         obj.respond_to?(accessor, true)
      accessor = "#{accessor}()"
    end

    method_call = ".__send__(:#{method}, *args, &block)"
    if _valid_method?(method)
      loc, = caller_locations(2,1)
      pre = "_ ="
      mesg = "#{Module === obj ? obj : obj.class}\##{ali} at #{loc.path}:#{loc.lineno} forwarding to private method "
      method_call = "#{<<-"begin;"}\n#{<<-"end;".chomp}"
        begin;
          unless defined? _.#{method}
            ::Kernel.warn #{mesg.dump}"\#{_.class}"'##{method}', uplevel: 1
            _#{method_call}
          else
            _.#{method}(*args, &block)
          end
        end;
    end

    _compile_method("#{<<-"begin;"}\n#{<<-"end;"}", __FILE__, __LINE__+1)
    begin;
      proc do
        def #{ali}(*args, &block)
          #{pre}
          begin
            #{accessor}
          end#{method_call}
        end
      end
    end;
  end
```
Shortcuts不具合一覧

私が発見したShortcutsの不具合一覧です。
発見次第適宜更新予定です。

### 辞書

##### 辞書

- [小数点を入力できない不具合](https://qiita.com/hiyokochan0822/items/e17e4063d135264a7e3a)
  - 解決方法：コピペで入力

### リマインダー

##### リマインダーを検索

- [サブタスクが出力される不具合](https://qiita.com/hiyokochan0822/items/e9095e56f9a225b3c300)
- [「リストが次と等しくない」条件の不具合](https://qiita.com/hiyokochan0822/items/b4d95d4ec697f152d286)
- [同じリマインダーが複数出力される不具合](https://qiita.com/hiyokochan0822/items/e37e29537c561d5007ad)
「リストが次と等しい」リマインダーが出力される不具合

「リマインダーを検索」アクションで「リストが次と等しくない」条件を設定すると、「リストが次と等しい」リマインダーが出力される。

### 前提条件

リスト２つと、それぞれのリストにリマインダーを１つずつ用意した。

 ![IMG_5838.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3583885/5c07cac4-d805-ad95-f00f-97a0a900c345.jpeg)

![IMG_5839.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3583885/15fb6770-2f0d-ad4a-0732-89f1d5411e93.jpeg)

![IMG_5841.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3583885/13162c7f-1932-859b-e2f3-33130bb4bea8.jpeg)

### 仕様

「リマインダーを検索」アクションで条件を設定しない場合、全てのリストのリマインダーが出力される。

![IMG_5842.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3583885/4936179e-3ef5-fe60-a16a-55206ddbec5e.jpeg)

ここに「リストが次と等しいリスト1」条件を追加すると、リスト1のリマインダーが出力される。

![IMG_5843.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3583885/8cb7c56e-1999-b096-ba36-26a75709a6bc.png)

### 不具合

「リストが次と等しいリスト1」条件を「リストが次と等しくないリスト1」条件に変更しても、リスト1のリマインダーが出力される。

![IMG_5844.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3583885/400e37c6-160c-d8f4-39ee-1759b7649a3a.png)

リストが１つしかない場合でも、同様の不具合が発生する。
Workato：Custom Connectorの名称にマルチバイト文字や記号が含まれるとWebhookが動作しない場合がある

# はじめに

Workatoではカスタムコネクタ（Custom Connector）という機能があります。この機能を利用すると、Workatoが標準で対応していない＝コネクタを提供していないアプリ（サービス）に対応するコネクタを独自に作成し、Workato上で運用（利用）することができます。

## カスタムコネクタにおけるWebhook対応

カスタムコネクタはWebhookに対応しています。アプリケーション側がWebhookに対応していることは前提となりますが、アプリケーションからのWebhookリクエストをリアルタイム受信し、Triggerで処理することが可能です。例えば、〇〇というアプリでレコードを追加したら、それをきっかけ（トリガー）にWorkatoのあるレシピの処理を開始することも、Webhookを利用することで実現が可能です。

## カスタムコネクタでWebhookを利用する際の注意事項

### カスタムコネクタの名称には、マルチバイト文字（日本語等）や一部の記号など、URLエンコードされる文字列を含めないこと

カスタムコネクタの名称に日本語などのマルチバイト文字や一部の記号が含まれる場合、Webhookが正常に動作しない場合があります。例えば、アプリケーション側からWebhookリクエストが行われても、Workatoで処理されない（トリガーが動作しない）場合があります。

当方で確認したところ、URLエンコードされた文字列がカスタムコネクタのWebhook URLに含まれる場合、Webhookが動作しない（トリガーが動作しない）問題を確認しています。

#### 例）タイトルにマルチバイト文字列を含む場合とそうでない場合のWebhook URLの違い
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64876/bfc3a91b-d185-e402-9e0c-d26e838db244.png)

なお、カスタムコネクタのWebhook URLは、 **最初に設定されたカスタムコネクタの名称をもとに決定されます。つまり、後からカスタムコネクタの名称を変更しても、Webhook URLは変わりません。** また、Webhook URLのみを個別に変更することもできません。

もし、上記のようなケースによりWebhookを利用することが出来ない場合は、同じ内容（コード）で、別名のカスタムコネクタの再作成が必要となります。

### 上記問題はCommunity Libraryや個別提供のコネクタでも発生する場合があります

Community Libraryよりカスタムコネクタをインストールする際や、配布元から個別提供を受けたカスタムコネクタ（Sharing privately using a linkより出力されたURL）をインストールする際も、カスタムコネクタの提供元が設定した名称以外にCustom Connectorを変更することでWebhookが正常に動作しなくなる場合があります。

カスタムコネクタの名称は、カスタムコネクタの提供元が設定した名称のまま（変更せずに）インストールして利用されることをお薦めします。もし、カスタムコネクタの名称を変更する必要がある場合は、マルチバイト文字（日本語等）や一部の記号を避けるようにしてください。もし不安がある場合は、カスタムコネクタの提供元に確認したうえでご対応ください。
Flutterでsvg画像のサイズを指定する

FlutterでSVG画像が意図しない範囲まで広がってしまったという事象に対する対処案です

## 元々のコード
- タップ領域は24pxの領域がほしい
- でもアイコンはデザイン通り14pxでいい

と思い以下のように実装してみました。

```dart
SizedBox(
  height: 24,
  width: 24,
  child: GestureDetector(
    onTap: () {
        // 処理
    },
    child: Assets.icon.front.svg(height: 14),
  ),
),
```

しかし、実際これで見るとSVGのサイズは24pxに引き延ばされてしまっていました。


## 対象
### AlignでWrapしましょう

```dart
SizedBox(
  height: 24,
  width: 24,
  child: GestureDetector(
    onTap: () {
      pageController.previousPage(
        duration: const Duration(milliseconds: 200),
        curve: Curves.easeInOut,
      );
    },
    child: Align(
      child: Assets.icon.front.svg(height: 14),
    ),
  ),
),
```

こうすれば期待通り14の高さになります。
ChatGPTが使いたいだけの人（組織）のためのAzure入門

こんにちは、普段はGCPメインのku-sukeです。表題の通りChatGPTはAzure版を使っているのですが、本家に比べるとバージョンによっては日本リージョンもあるし、海外リージョンも安定していて快適なんですよね。

ところが、Azure使ったことがないひとはそのとっつきにくさに忌避感を抱いてしまうことがありますので、そのあたりを乗り越えられるよう最低限の用語と概念をGoogleと比較しながらお話ししようと思います。なお私もAzure歴は短いので間違っていることはコメントいただければ幸いです。

# アカウントという概念

Azureを使うにはサインアップする必要がありますが、個人で使うのか組織で使うのか考える必要があります。この辺は実はGoogleとだいたい同じです。

- 個人で使う
    - フリーのアカウント（gmailを取得する vs outlookを取得する）
- 組織で使う
    - 有料のアカウント（Google Workspace vs Office 365）
    - 無料のアカウント（Cloud Identity vs Azure AD無料版）

ようは、どちらも、ID体系が「個人用」「組織用」にわかれており、受信可能なメールを使うかどうかでまた選択肢が変わります。もちろん一人だけど組織を作成することもできます。

# 無料で組織を作成する

一番楽なのは、Office 365の法人プランを無料トライアルすると各種ウィザードでいいかんじにアカウントが作成される。ということのようです。

https://qiita.com/Shinya-Yamaguchi/items/15bf3d2a844350816acc

今回はAzure ADが目的ではないのでE5じゃなくもう少し下のプランでもいいかもしれないですね。

無料版の場合、独自ドメインでマイクロソフトのアカウントができないので、user@example.comというメールの方は、user@example.onmicrosoft.comというアカウントが割り当てられます。

# Azure Portalにとびこむ

そうしたら、Google Cloud Consoleと同様に、Azure Portalにも入れるようになっています。

https://portal.azure.com/

OpenAIを使い始める前に、若干の用語を理解しておいた方がいいです。

- サブスクリプション
    - GCPでいう「支払いアカウント」
- リソースグループ
    - GCPでいうプロジェクト

この２つは、あらゆるAzureの機能を使うときに必須ですので、デフォルト支払いプラン、default-resource-groupなどと名前を付けてもいいし、プロジェクトごとに分けるなどその他お使いのクラウドと同じように管理しましょう。

# Open AIを作成する

ここまで来たらもう大丈夫。
Qiita上にいくつか解説記事があるのでそちらを参照しましょう！概念としては、ChatGPTは1個しかありませんが、Azure OpenAIは以下の通りとなっています。

- 複数のリージョンが利用できる、リージョンごとに利用可能なモデルが異なる
    - [ここから確認できる](https://learn.microsoft.com/ja-jp/azure/ai-services/openai/concepts/models#gpt-4-and-gpt-4-turbo-preview-model-availability)。日々変動する。[ちなみにQuotaも違う](https://learn.microsoft.com/ja-jp/azure/ai-services/openai/quotas-limits#regional-quota-limits)。
- １つのリージョンに名称を変えて複数のインスタンスという概念を立ち上げできる（ここは課金されない、rate limitを決める）
- １つのインスタンスに、１つのdeploymentを立ち上げられる、ようはChatGPTのエンジンの事。gpt-4-0603とかそういうかんじ
- 立ち上げ終わると、インスタンスに対しAPIキーが発行される
- URLエンドポイントは、プレイグラウンドの「コードを見る」から取得するとよい
- 認証ヘッダがAuthorization: Bearer からapi-key:に変わるの注意

https://qiita.com/sakue_103/items/582198236c59d4d8147c

https://qiita.com/AGV_morinaga/items/04c1b3f505efca8b1511


# その他

無料トライアルしたOffice 365の管理はこちらです。GoogleでいうとGoogle Workspaceの管理画面だと思ってください。ユーザー管理などはAzure PortalのAzure ADと連動しています。

https://admin.microsoft.com/

また、社内でChatGPTっぽい画面を使いたい場合LibreChatが便利です。

https://zenn.dev/kun432/scraps/17cf2234ef2e26

さらに、Azure版ならではの使い方として、Azure API Gatewayを使うと、複数のインスタンスを束ねたり、ログをとったりできるので、便利です。

https://cloud.nissho-ele.co.jp/blog/azure-openai-logging/

エンジョイ！
Tracking Everything Everywhere All at Once

# 1. 概要
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/2c5e8603-7ef9-c29b-7ab3-4ae1a55cfca9.png)
動画の中から動きのある対象を正確に追いかける技術をトラッキングという。動画中のフレーム毎に動画内の物体がどこへ移動したかを推定し、またカメラの動きやブレなども考慮しないと精密にトラッキングすることができない。従来手法では、動画内の動作理解をするために時間的な制約やオクルージョン(物体が他の物体に隠れてしまうこと)に対処するのが難しいという課題があった。
この研究では、ビデオシーケンス全体を考慮に入れて、すべてのピクセルに対する正確な動きの推定を可能にする、OmniMotionを提案している。

*BEST STUDENT AWARD

---

# 2. 新規性
空間的に連続性のある特徴量を使って、尺の長い動画に対してもトラッキングができる手法を提案した。従来はオプティカルフローや特徴追跡の手法が用いられたが、オプティカルフローは計算時間が膨大で短い尺の動画しか適用できず、特徴追跡は動画内の空間でスパース(疎)な点のみを用いていたため誤検知が多かった。

---

# 3. 実現方法
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/0d633eb2-9030-8ed3-eaab-3e4e4709db47.png)
動画内の物体やシーンを3D空間内でモデル化し、トラッキングに利用するための3次元座標系のことを"canonical volume"という。提案手法では、動画を3次元ボリューム(canonical 3D volume)で表現し、ローカル空間と標準空間との間でピクセル毎にトラッキングを行う。特に、3D空間で表現することで動画内の動きや位置関係をモデル化することができ、動きのある各要素を正確にトラッキングできるようになった。これにより、全フレームを通じてオクルージョンに頑健で、カメラと物体の動きの複雑な組み合わせをモデル化することに成功している。

---

# 4. 結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/b0476922-760f-4c63-ec03-3d3d6f86df58.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/7ff6369e-cc50-2f85-7d61-3554bba34663.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158742/a3cb6930-56a0-8405-65b9-7c05b05a0abe.png)
既存手法と比べて、動画内の動きのある物体をカメラの動作まで考慮しながら全フレームについて正確にトラッキングできるようになった。対象が見えないオクルージョンの有るシーンでも頑健に位置を予測でき、また対象までの距離を深度マップで推定することも可能。

---

Paper URL: <https://openaccess.thecvf.com/content/ICCV2023/html/Wang_Tracking_Everything_Everywhere_All_at_Once_ICCV_2023_paper.html>

last updates: Oct 8 2023