Skip to content

Commit 5c6806f

Browse files
committedJan 22, 2021
ICP sections are written.
1 parent edafa70 commit 5c6806f

30 files changed

+724
-343
lines changed
 

‎README.md

+13-100
Original file line numberDiff line numberDiff line change
@@ -1,109 +1,22 @@
1-
---
2-
layout: default
3-
title: Home
4-
permalink: /
5-
---
6-
7-
## はじめに
8-
9-
このサイトは研究室の新入生向けにPythonを使った機械学習と、C++を使った形状処理、それぞれの基礎について勉強するために作成したものである。
10-
11-
執筆にあたっては、読者が**PythonとC++(あるいはC言語)での最低限のプログラミング経験を持っている**ことを前提にしているので、少しハードルが高いと感じる場合には、入門書等の基礎について勉強しておくことをお勧めする。ただし、実践から学ぶことの方が学習の効率ははるかに良いので、あまりに基礎に固執することなく、必要に応じて勉強をすすめることも大切だと思う。
12-
13-
### 環境設定など
14-
15-
* [Gitの設定]({% link _contents/setup/git.md %})
16-
* [シェルの設定]({% link _contents/setup/shell.md %})
17-
* [Python開発環境の設定]({% link _contents/setup/python.md %})
18-
* [C++開発環境の設定]({% link _contents/setup/cpp.md %})
19-
20-
## Pythonプログラミング
21-
22-
### ロジスティック回帰
23-
24-
ここでは回帰モデルの基本ともいえるロジスティック回帰を用いた、手書き文字の認識を目指す。
1+
Programming for Beginners
2+
===
253

26-
* [バイナリデータの読み込み]({% link _contents/python/read-binary.md %})
27-
* [ロジスティック回帰 -その1-]({% link _contents/python/logistic-regression-01.md %})
28-
* [ロジスティック回帰 -その2-]({% link _contents/python/logistic-regression-02.md %})
29-
* [課題: ロジスティック回帰の改善]({% link _contents/python/assignment-logistic.md %})
30-
31-
### 数独ソルバーを作る
32-
33-
ここでは数独の本を写真で撮影して、それを画像認識することで、自動的に数独を解くソルバーを作る。
34-
35-
<table class="images">
36-
<tr>
37-
<td style="text-align: center; width: 50%;">{{ '**入力画像**' | markdownify }}</td>
38-
<td style="text-align: center; width: 50%;">{{ '**出力画像**' | markdownify }}</td>
39-
</tr>
40-
<tr>
41-
<td>{% include lightbox.html src="/public/images/sudoku/level_3_small.jpg" style="width: 100%;" %}</td>
42-
<td>{% include lightbox.html src="/public/images/sudoku/level_3_ans_small.jpg" style="width: 100%;" %}</td>
43-
</tr>
44-
</table>
45-
46-
* [画像中の図形検出]({% link _contents/python/figure-detection.md %})
47-
* [数独を解く]({% link _contents/python/solve-sudoku.md %})
48-
* [課題: 画像中の数独問題を解こう]({% link _contents/python/assignment-sudoku.md %})
49-
50-
### 深層学習による画像生成の基礎
51-
52-
ここでは敵対的生成ネットワーク (GAN) を利用して、Oxford flower datasetから、自然な花の画像を生成することを目指す。
53-
54-
<table class="images">
55-
<tr>
56-
<td style="text-align: center; width: 50%;">{{ '**教師画像**' | markdownify }}</td>
57-
<td style="text-align: center; width: 50%;">{{ '**出力画像**' | markdownify }}</td>
58-
</tr>
59-
<tr>
60-
<td>{% include lightbox.html src="/public/images/gan/x_real_150.jpg" style="width: 100%;" %}</td>
61-
<td>{% include lightbox.html src="/public/images/gan/x_fake_150.jpg" style="width: 100%;" %}</td>
62-
</tr>
63-
</table>
64-
65-
* [畳み込みニューラルネット]({% link _contents/python/convolutional-network.md %})
66-
* [敵対的生成ネットワーク(GAN)]({% link _contents/python/gan.md %})
67-
* [条件付き画像生成 (CGAN)]({% link _contents/python/conditional-gan.md %})
68-
* [GANの学習安定化テクニック]({% link _contents/python/stabilize-gan-training.md %})
69-
* [課題: GANによる高品質画像生成コンテスト]({% link _contents/python/assignment-gan.md %})
4+
![github pages](https://github.com/tatsy/programming-for-beginners/workflows/github%20pages/badge.svg)
705

6+
はじめに
7+
---
718

72-
## C++プログラミング
9+
このサイトは研究室の新入生向けが、Pythonを使った機械学習と、C++を使った形状処理の基礎について勉強するために作成いたしました。
7310

74-
### マーチング・キューブ法によるメッシュ生成
11+
執筆にあたっては、読者がPythonとC++(あるいはC言語)での最低限のプログラミング経験を持っていることを前提にしておりますので、少しハードルが高いと感じる場合には、入門書等の基礎について勉強した後にお読みいただければ幸いです。
7512

76-
<table class="images">
77-
<tr>
78-
<td style="text-align: center; width: 50%;">{{ '**ボリューム断面**' | markdownify }}</td>
79-
<td style="text-align: center; width: 50%;">{{ '**復元メッシュ**' | markdownify }}</td>
80-
</tr>
81-
<tr>
82-
<td>{% include lightbox.html src="/public/images/march_cubes/shell_section_140.jpg" style="width: 100%;" %}</td>
83-
<td>{% include lightbox.html src="/public/images/march_cubes/shell_mesh.jpg" style="width: 100%;" %}</td>
84-
</tr>
85-
</table>
13+
もし、サイトの内容に誤りなどを見つけられました場合には、著者に直接ご連絡をいただくか、GitHubのissueないしpull requestを立ち上げていただければ幸いです。
8614

87-
* [ボリュームデータの読み込み]({% link _contents/cpp/read-volume.md %})
88-
* [大津の二値化による境界値の決定]({% link _contents/cpp/otsu-binarize.md %})
89-
* [マーチング・キューブ法]({% link _contents/cpp/march-cubes.md %})
90-
* [課題: マーチング・キューブ法とその拡張]({% link _contents/cpp/assignment-march-cubes.md %})
15+
<https://github.com/tatsy/programming-for-beginners>{: target="_blank" }
9116

92-
### 点群データからのメッシュ復元
17+
ライセンスに関してはサイトの内容、プログラムのソースコードともにMITライセンスとしたいと思います。リンク等々は自由にしていただいて構いませんが、もし万が一、講義や研究室などでご利用いただく場合には、ご一報いただければ大変励みになります。
9318

94-
<table class="images">
95-
<tr>
96-
<td style="text-align: center; width: 50%;">{{ '**入力点群**' | markdownify }}</td>
97-
<td style="text-align: center; width: 50%;">{{ '**復元メッシュ**' | markdownify }}</td>
98-
</tr>
99-
<tr>
100-
<td>{% include lightbox.html src="/public/images/surf_recon/buddha_point.jpg" style="width: 100%;" %}</td>
101-
<td>{% include lightbox.html src="/public/images/surf_recon/buddha_recon.jpg" style="width: 100%;" %}</td>
102-
</tr>
103-
</table>
19+
ライセンス
20+
---
10421

105-
* [アルゴリズムの概要]({% link _contents/cpp/point-to-surface.md %})
106-
* [k-d木による最近傍探索]({% link _contents/cpp/kdtree.md %})
107-
* [Eigenを用いた線形問題の解法]({% link _contents/cpp/eigen-solve-linear-system.md %})
108-
* [RBFによる関数の補間]({% link _contents/cpp/radial-basis-function.md %})
109-
* [課題: 点群データからのメッシュ復元]({% link _contents/cpp/assignment-point-to-surface.md %})
22+
MIT License (c) 2020-2021, Tatsuya Yatagawa

‎_config.yml

-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ github:
2121

2222
# Custom vars
2323
version: 1.0.0
24-
google_analytics_id: #UA-XXXX-Y
2524

2625
plugins:
2726
- jekyll-sitemap

‎_contents/cpp/assignment-march-cubes.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
layout: post
3-
title: "マーチング・キューブ法とその拡張"
3+
title: "課題: マーチング・キューブ法とその拡張"
44
---
55

66
<table class="images">

‎_contents/cpp/assignment-rigid-icp.md

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
layout: post
3+
title: "課題: Rigid-ICP法の実装"
4+
---
5+
6+
## 課題1: Point to Point ICPの実装
7+
8+
これまでに解説した内容を元にしてPoint to Point ICPを実装しよう。マーチング・キューブ法の課題と同様に、最初の時点では実装すべき箇所に`NOT_IMPL_ERROR()`と書かれており、実行するとこの箇所でエラーが発生するようになっている。
9+
10+
実装に必要な変更箇所は以下の通り。

‎_contents/cpp/assignment-point-to-surface.md ‎_contents/cpp/assignment-surface-recon.md

+1-6
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,4 @@ Wendland関数を用いて、$\phi$の値をオフセット点を含む、頂点
6666

6767
今回の実装ではコンパクトサポートのC1級連続Wendland関数を用いた。これをより高次のWendland関数の他、ガウス関数や薄膜スプライン関数などに変更すると、メッシュの復元結果はどのように変化するかを調べよう。ただし、ガウス関数や薄膜スプライン関数はglobal supportなので、k-d木を用いた実装を変更する必要がある。
6868

69-
また、今回の実装ではRBFに、さらに1次の多項式項をつけて曲面を補間したが、これを2次の多項式へと拡張し、$x^2, y^2, z^2, xy, yz, zx$の項を追加すると、メッシュの復元結果はどう変化するかを調べよう。
70-
71-
さらなる発展として、コンパクトサポートのRBFを用いながらも、階層的な処理によって穴のないメッシュとより少ない頂点での補間を実現している以下の論文を実装してみよう。
72-
73-
* Ohtake et al. 2003, "A Multi-scale Approach to 3D Scattered Data Interpolation with Compactly Supported Basis Functions"
74-
69+
また、今回の実装ではRBFに、さらに1次の多項式項をつけて曲面を補間したが、これを2次の多項式へと拡張し、$x^2, y^2, z^2, xy, yz, zx$の項を追加すると、メッシュの復元結果はどう変化するかを調べよう。この際、1次の多項式を用いるものと2次の多項式を用いるものがコマンドライン引数によって切り替えられるようにプログラムを工夫すると良い。

0 commit comments

Comments
 (0)
Please sign in to comment.