20150701卒研進捗LT (share)

Preview:

Citation preview

タイトルを入力サブタイトルを入力

2

内定者向けの課題が

つらい

3

本日の睡眠時間

90 分

4

オンデマンドスライド※12:43

5

本題

6

近況

7

C# の LINQ を使い始めた

関数型言語っぽくかける

エラトステネスの篩

8

ふるい

100,000 以下の素数

9

C++ C#.NET

10

#include <chrono>#include <cmath>#include <iostream>#include <vector>

using namespace std;

int main(){ const int max = 100000; vector<int> primeArray; int sieveArray[max + 1] = { 0 };

auto startTime = chrono::system_clock::now();

sieveArray[0] = -1; sieveArray[1] = -1;

int stopPos = (int)sqrt(max); int continuePos = stopPos; for (int i = 2; i < stopPos; i++){ primeArray.push_back(i); sieveArray[i] = -1; for (int j = i + 1; j <= max; j++){ if (j % i == 0){ sieveArray[j] = -1; } } }

for (int i = continuePos; i <= max; i++){ if (sieveArray[i] != -1){ primeArray.push_back(i); } }

auto endTime = chrono::system_clock::now(); auto deltaTime = endTime - startTime; cout << chrono::duration_cast<chrono::milliseconds>(deltaTime).count() << " ms" << endl;

cin.get(); return 0;}

using System;using System.Collections.Generic;using System.Linq;

namespace EratosthenesCsharp{ class Program { static int Main() { const int max = 100000; var primeArray = new List<int>(); var sieveArray = (new int[max + 1]).Select(i => 0).ToArray();

var startTime = DateTime.Now;

sieveArray[0] = -1; sieveArray[1] = -1;

int stopPos = (int)Math.Sqrt(max); int continuePos = stopPos; for (int i = 2; i < stopPos; i++){ primeArray.Add(i); sieveArray[i] = -1; for (int j = i + 1; j <= max; j++){ if (j % i == 0){ sieveArray[j] = -1; } } }

for (int i = continuePos; i <= max; i++){ if (sieveArray[i] != -1){ primeArray.Add(i); } }

var endTime = DateTime.Now; var deltaTime = (endTime - startTime).TotalMilliseconds; Console.WriteLine(deltaTime + "ms");

Console.ReadKey(false); return 0; } }}

https://gist.github.com/mohemohe/6a5d9ddc48cd97f707cd

C++ C#.NET

11

sieveArray[0] = -1;sieveArray[1] = -1; int stopPos = (int)Math.Sqrt(max);int continuePos = stopPos;for (int i = 2; i < stopPos; i++){ primeArray.Add(i); sieveArray[i] = -1; for (int j = i + 1; j <= max; j++){ if (j % i == 0){ sieveArray[j] = -1; } }} for (int i = continuePos; i <= max; i++){ if (sieveArray[i] != -1){ primeArray.Add(i); }}

sieveArray[0] = -1;sieveArray[1] = -1; int stopPos = (int)sqrt(max);int continuePos = stopPos;for (int i = 2; i < stopPos; i++){ primeArray.push_back(i); sieveArray[i] = -1; for (int j = i + 1; j <= max; j++){ if (j % i == 0){ sieveArray[j] = -1; } }} for (int i = continuePos; i <= max; i++){ if (sieveArray[i] != -1){ primeArray.push_back(i); }}

https://gist.github.com/mohemohe/6a5d9ddc48cd97f707cd

C++ C#.NET

12

sieveArray[0] = -1;sieveArray[1] = -1; int stopPos = (int)Math.Sqrt(max);int continuePos = stopPos;for (int i = 2; i < stopPos; i++){ primeArray.Add(i); sieveArray[i] = -1; for (int j = i + 1; j <= max; j++){ if (j % i == 0){ sieveArray[j] = -1; } }} for (int i = continuePos; i <= max; i++){ if (sieveArray[i] != -1){ primeArray.Add(i); }}

sieveArray[0] = -1;sieveArray[1] = -1; int stopPos = (int)sqrt(max);int continuePos = stopPos;for (int i = 2; i < stopPos; i++){ primeArray.push_back(i); sieveArray[i] = -1; for (int j = i + 1; j <= max; j++){ if (j % i == 0){ sieveArray[j] = -1; } }} for (int i = continuePos; i <= max; i++){ if (sieveArray[i] != -1){ primeArray.push_back(i); }}

https://gist.github.com/mohemohe/6a5d9ddc48cd97f707cd

95 ms 96.1 ms

13

研究内容

14

興味があるのは画像系

15

決めかねている

16

#1 エッジ検出を応用した画像の高品質拡大

17

初回のスライド参照

18

背景もっと速く綺麗に画像を拡大したい

19

利点

たぶん waifu2x より速い

20

欠点

Red Ocean

21

必要な知識エッジ検出

深層畳み込みニューラルネットワーク

OpenCL ( CUDA )

22

#2 ピクセル変更によるステガノグラフィー

23

前回のスライド参照

24

背景簡単に画像の著作権を主張したい

25

利点現時点でフリー実装がない

26

欠点

たぶん茨の道

27

必要な知識リード・ソロモン符号

+ 大域的な符号化

耐拡大縮小アルゴリズム

28

#1 エッジ検出を応用した画像の高品質拡大

#2 ピクセル変更によるステガノグラフィー

Recommended