コンテンツへスキップ

画像検出に向けて利用するフレームワーク

本家のDarknetも利用しましたが、特定ケースでの学習失敗やメモリ操作関係の不具合など、私自身も上手く行かないケースも有り、ブログ記事などからもAlexeyABを勧めている内容が多かったので、早い時期よりAlexeyABを導入し利用しております。

AlexeyABのDarknetは、WindowsおよびLinuxのDarknet Yolo v3 & v2のNeural Networks for object detection (Tensor Cores are used)をサポートしております。

AlexeyAB公開サイト

以下、サイトにすべての利用方法が記載されております。関連ソフトのインストール方法や、独自学習の方法など。

Darknetインストール方法

本件も同様ですが、AlexeyABでも2つのインストール方法が紹介されております。
最終的には、Legacy wayのVisual StudioでコンパイルしたDarknetを利用しております。この投稿では、1番めのVCPKGを利用したコンパイル方法を紹介します。

  1. How to compile on Windows (using vcpkg)
  2. How to compile on Windows (legacy way)

GitHUBよりAlexeyAB一式をダウンロードしておきます。
今後の学習モデル作成時などにも利用するフォルダとなるので、それなりの容量の余裕などを考え、各種ファイルを配置して下さい。

VCPKGを利用したDarknetの導入

Visual Studioインストール

Visual Studio CommunityよりVisual Studioをダウンロードしインストールします。

CUDAとcuDNNインストール

NVIDIA cuDNNの入手には、開発コミュニティへの登録が必要であるが、 cuDNNは、機械学習時のGPU-accelerated libraryとなるので、開発者登録を行い、導入しているCUDAと同じバージョンのcuDNNを入手し、入手したファイルをCUDAインストールフォルダに配置しましょう。

gitとcmakeのインストール

Gitおよびcmakeを導入して下さい。
CMakeよりWindows win64-x64 Installerをダウンロードし、インストラーを用いてCMakeをインストールします。

vcpkインストール

Microsoft vcpkへアクセスし、インストールを

  1. Githubからcloneする。
  2. クローンディレクトリの"bootstrap-vcpkg.bat"を実行する。
    ※ ここで、Visual Studioをインストール → "vcpkg.exe"が生成される。
  3. (visual studioに統合する場合)そこのフォルダで管理者権限で cmd を実行して以下のコマンドを入力。
    cmd .\vcpkg.exe integrate install

環境変数「VCPKG_ROOT」「VCPKG_DEFAULT_TRIPLET」を設定

  1. VCPKG_ROOTの環境変数にvcpkgのインストールパスを設定
  2. VCPKG_DEFAULT_TRIPLETの環境変数にx64-windowsを設定

VCPKGで前提ソフトインストール

> cd $env:VCPKG_ROOT
\Git\vcpkg> .\vcpkg.exe install pthreads opencv[cuda,ffmpeg]
The following packages will be built and installed:
* cuda[core]:x64-windows
* eigen3[core]:x64-windows
* libjpeg-turbo[core]:x64-windows
* liblzma[core]:x64-windows
* libpng[core]:x64-windows
opencv[core,cuda,eigen,ffmpeg,flann,jpeg,opengl,png,tiff]:x64-windows
pthreads[core]:x64-windows
* tiff[core]:x64-windows
* zlib[core]:x64-windows
Additional packages (*) will be modified to complete this operation.
Starting package 1/9: zlib:x64-windows
Building package zlib[core]:x64-windows...
Warning: The following VS instances are excluded because the English language pack is unavailable.
D:\Program Files (x86)\Microsoft Visual Studio\2019\Community
D:\Program Files (x86)\Microsoft Visual Studio\2019\Community
Please install the English language pack.
-- Downloading http://www.zlib.net/zlib-1.2.11.tar.gz...
-- Extracting source S:/Public/Documents/Git/vcpkg/downloads/zlib1211.tar.gz
-- Applying patch cmake_dont_build_more_than_needed.patch
-- Using source at S:/Public/Documents/Git/vcpkg/buildtrees/zlib/src/1.2.11-f690224aeb
-- Downloading https://github.com/ninja-build/ninja/releases/download/v1.8.2/ninja-win.zip...
-- Configuring x64-windows
CMake Error at scripts/cmake/vcpkg_execute_required_process.cmake:58 (message):
Command failed: ninja -v
Working Directory: S:/Public/Documents/Git/vcpkg/buildtrees/zlib/x64-windows-rel/vcpkg-parallel-configure
Error code: 1
See logs for more information:
S:\Public\Documents\Git\vcpkg\buildtrees\zlib\config-x64-windows-out.log

Call Stack (most recent call first):
scripts/cmake/vcpkg_configure_cmake.cmake:290 (vcpkg_execute_required_process)
ports/zlib/portfile.cmake:22 (vcpkg_configure_cmake)
scripts/ports.cmake:74 (include)

Error: Building package zlib:x64-windows failed with: BUILD_FAILED
Please ensure you're using the latest portfiles with `.\vcpkg update`, then
submit an issue at https://github.com/Microsoft/vcpkg/issues including:
Package: zlib:x64-windows
Vcpkg version: 2019.07.18-nohash

Additionally, attach any relevant sections from the log files above.

英語の言語パッケージがないと、エラーがでるので英語の言語パッケージをインストールします。

参考URL:https://github.com/Microsoft/vcpkg/issues/1939#issuecomment-354644869

PowershellよりDarknetビルド実行

Powershellのコマンドプロンプトを開き、Darknetをダウンロードしたフォルダで、「./build.ps1」を実行しビルドを実施します。

PS S:\Public\Documents\Git\darknet> .\build.ps1
Found vcpkg in VCPKG_ROOT: S:\Public\Documents\Git\vcpkg\
Found VS in D:\Program Files (x86)\Microsoft Visual Studio\2019\Community
Visual Studio Command Prompt variables set
Setting up environment to use CMake generator: Visual Studio 16 2019
Added missing env variable CUDA_TOOLKIT_ROOT_DIR

ディレクトリ: S:\Public\Documents\Git\darknet

Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2019/07/25 11:23 build_win_release
-- Selecting Windows SDK version 10.0.17763.0 to target Windows 10.0.18362.
-- The C compiler identification is MSVC 19.21.27702.2
-- The CXX compiler identification is MSVC 19.21.27702.2
-- Check for working C compiler: D:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.21.27702/bin/Hostx64/x64/cl.exe
-- Check for working C compiler: D:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.21.27702/bin/Hostx64/x64/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: D:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.21.27702/bin/Hostx64/x64/cl.exe
-- Check for working CXX compiler: D:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.21.27702/bin/Hostx64/x64/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for a CUDA compiler
-- Looking for a CUDA compiler - NOTFOUND
-- Looking for pthread.h
-- Looking for pthread.h - not found
-- Found Threads: TRUE
-- Found PThreads4W: optimized;S:/Public/Documents/Git/vcpkg/installed/x64-windows/lib/pthreadVC3.lib;debug;S:/Public/Documents/Git/vcpkg/installed/x64-windows/debug/lib/pthreadVC3d.lib
-- Found OpenCV: S:/Public/Documents/Git/vcpkg/installed/x64-windows (found version "3.4.3")
-- Found Stb: S:/Public/Documents/Git/darknet/3rdparty/stb/include
-- Found OpenMP_C: -openmp (found version "2.0")
-- Found OpenMP_CXX: -openmp (found version "2.0")
-- Found OpenMP: TRUE (found version "2.0")
-- ZED SDK not enabled, since it requires CUDA
-- Configuring done
-- Generating done
-- Build files have been written to: S:/Public/Documents/Git/darknet/build_win_release
.NET Framework 向け Microsoft (R) Build Engine バージョン 16.1.76+g14b0a930a7
Copyright (C) Microsoft Corporation.All rights reserved.

Checking Build System
Building Custom Rule S:/Public/Documents/Git/darknet/CMakeLists.txt
yolo_v2_class.cpp
http_stream.cpp
S:\Public\Documents\Git\darknet\src\http_stream.cpp(494,35): warning C4200: 非標準の拡張機能が使用されています: 構造体 または共用体中にサイズが 0 の配列があ
ります。 [S:\Public\Documents\Git\darknet\build_win_release\dark.vcxproj]
image_opencv.cpp
S:\Public\Documents\Git\darknet\src\http_stream.cpp(494,35): message : このメンバーは、既定のコンストラクターまたはコピー/移動代入演算子により無視されます [S:\
Public\Documents\Git\darknet\build_win_release\dark.vcxproj]
S:\Public\Documents\Git\darknet\src\image_opencv.cpp(81,39): warning C4200: 非標準の拡張機能が使用されています: 構造体 または共用体中にサイズが 0 の配列があ
ります。 [S:\Public\Documents\Git\darknet\build_win_release\dark.vcxproj]
S:\Public\Documents\Git\darknet\src\image_opencv.cpp(81,39): message : このメンバーは、既定のコンストラクターまたはコピー/移動代入演算子により無視されます [S:\
Public\Documents\Git\darknet\build_win_release\dark.vcxproj]
S:\Public\Documents\Git\darknet\src\image_opencv.cpp(82,48): warning C4200: 非標準の拡張機能が使用されています: 構造体 または共用体中にサイズが 0 の配列があ
ります。 [S:\Public\Documents\Git\darknet\build_win_release\dark.vcxproj]
S:\Public\Documents\Git\darknet\src\image_opencv.cpp(82,48): message : このメンバーは、既定のコンストラクターまたはコピー/移動代入演算子により無視されます [S:\
Public\Documents\Git\darknet\build_win_release\dark.vcxproj]
S:\Public\Documents\Git\darknet\src\image_opencv.cpp(83,49): warning C4200: 非標準の拡張機能が使用されています: 構造体 または共用体中にサイズが 0 の配列があ
ります。 [S:\Public\Documents\Git\darknet\build_win_release\dark.vcxproj]
コードを生成中...
S:\Public\Documents\Git\darknet\src\image_opencv.cpp(83,49): message : このメンバーは、既定のコンストラクターまたはコピー/移動代入演算子により無視されます [S:\
Public\Documents\Git\darknet\build_win_release\dark.vcxproj]
activation_layer.c
activations.c
art.c
avgpool_layer.c
batchnorm_layer.c
blas.c
box.c
captcha.c
cifar.c
classifier.c
coco.c
col2im.c
compare.c
connected_layer.c
conv_lstm_layer.c
convolutional_layer.c
cost_layer.c
cpu_gemm.c
crnn_layer.c
crop_layer.c
コードを生成中...
コンパイル中...
dark_cuda.c
data.c
deconvolutional_layer.c
demo.c
detection_layer.c
detector.c
dice.c
dropout_layer.c
gemm.c
getopt.c
gettimeofday.c
go.c
gru_layer.c
im2col.c
image.c
layer.c
list.c
local_layer.c
lstm_layer.c
matrix.c
コードを生成中...
コンパイル中...
maxpool_layer.c
network.c
nightmare.c
normalization_layer.c
option_list.c
parser.c
region_layer.c
reorg_layer.c
reorg_old_layer.c
rnn.c
rnn_layer.c
rnn_vid.c
route_layer.c
scale_channels_layer.c
shortcut_layer.c
softmax_layer.c
super.c
swag.c
tag.c
tree.c
コードを生成中...
コンパイル中...
upsample_layer.c
utils.c
voxel.c
writing.c
yolo.c
yolo_layer.c
コードを生成中...
ライブラリ S:/Public/Documents/Git/darknet/build_win_release/Release/dark.lib とオブジェクト S:/Public/Documents/Git/darknet/b
uild_win_release/Release/dark.exp を作成中
dark.vcxproj -> S:\Public\Documents\Git\darknet\build_win_release\Release\dark.dll
Building Custom Rule S:/Public/Documents/Git/darknet/CMakeLists.txt
darknet.c
activation_layer.c
activations.c
art.c
avgpool_layer.c
batchnorm_layer.c
blas.c
box.c
captcha.c
cifar.c
classifier.c
coco.c
col2im.c
compare.c
connected_layer.c
conv_lstm_layer.c
convolutional_layer.c
cost_layer.c
cpu_gemm.c
crnn_layer.c
コードを生成中...
コンパイル中...
crop_layer.c
dark_cuda.c
data.c
deconvolutional_layer.c
demo.c
detection_layer.c
detector.c
dice.c
dropout_layer.c
gemm.c
getopt.c
gettimeofday.c
go.c
gru_layer.c
im2col.c
image.c
layer.c
list.c
local_layer.c
lstm_layer.c
コードを生成中...
コンパイル中...
matrix.c
maxpool_layer.c
network.c
nightmare.c
normalization_layer.c
option_list.c
parser.c
region_layer.c
reorg_layer.c
reorg_old_layer.c
rnn.c
rnn_layer.c
rnn_vid.c
route_layer.c
scale_channels_layer.c
shortcut_layer.c
softmax_layer.c
super.c
swag.c
tag.c
コードを生成中...
コンパイル中...
tree.c
upsample_layer.c
utils.c
voxel.c
writing.c
yolo.c
yolo_layer.c
コードを生成中...
http_stream.cpp
S:\Public\Documents\Git\darknet\src\http_stream.cpp(494,35): warning C4200: 非標準の拡張機能が使用されています: 構造体 または共用体中にサイズが 0 の配列があ
ります。 [S:\Public\Documents\Git\darknet\build_win_release\darknet.vcxproj]
image_opencv.cpp
S:\Public\Documents\Git\darknet\src\http_stream.cpp(494,35): message : このメンバーは、既定のコンストラクターまたはコピー/移動代入演算子により無視されます [S:\
Public\Documents\Git\darknet\build_win_release\darknet.vcxproj]
S:\Public\Documents\Git\darknet\src\image_opencv.cpp(81,39): warning C4200: 非標準の拡張機能が使用されています: 構造体 または共用体中にサイズが 0 の配列があ
ります。 [S:\Public\Documents\Git\darknet\build_win_release\darknet.vcxproj]
S:\Public\Documents\Git\darknet\src\image_opencv.cpp(81,39): message : このメンバーは、既定のコンストラクターまたはコピー/移動代入演算子により無視されます [S:\
Public\Documents\Git\darknet\build_win_release\darknet.vcxproj]
S:\Public\Documents\Git\darknet\src\image_opencv.cpp(82,48): warning C4200: 非標準の拡張機能が使用されています: 構造体 または共用体中にサイズが 0 の配列があ
ります。 [S:\Public\Documents\Git\darknet\build_win_release\darknet.vcxproj]
S:\Public\Documents\Git\darknet\src\image_opencv.cpp(82,48): message : このメンバーは、既定のコンストラクターまたはコピー/移動代入演算子により無視されます [S:\
Public\Documents\Git\darknet\build_win_release\darknet.vcxproj]
S:\Public\Documents\Git\darknet\src\image_opencv.cpp(83,49): warning C4200: 非標準の拡張機能が使用されています: 構造体 または共用体中にサイズが 0 の配列があ
ります。 [S:\Public\Documents\Git\darknet\build_win_release\darknet.vcxproj]
コードを生成中...
S:\Public\Documents\Git\darknet\src\image_opencv.cpp(83,49): message : このメンバーは、既定のコンストラクターまたはコピー/移動代入演算子により無視されます [S:\
Public\Documents\Git\darknet\build_win_release\darknet.vcxproj]
darknet.vcxproj -> S:\Public\Documents\Git\darknet\build_win_release\Release\darknet.exe
Building Custom Rule S:/Public/Documents/Git/darknet/CMakeLists.txt
yolo_console_dll.cpp
uselib.vcxproj -> S:\Public\Documents\Git\darknet\build_win_release\Release\uselib.exe
Building Custom Rule S:/Public/Documents/Git/darknet/CMakeLists.txt
yolo_console_dll.cpp
uselib_track.vcxproj -> S:\Public\Documents\Git\darknet\build_win_release\Release\uselib_track.exe
Building Custom Rule S:/Public/Documents/Git/darknet/CMakeLists.txt
-- Install configuration: "Release"
-- Installing: S:/Public/Documents/Git/darknet/dark.lib
-- Installing: S:/Public/Documents/Git/darknet/dark.dll
-- Installing: S:/Public/Documents/Git/darknet/include/darknet/darknet.h
-- Installing: S:/Public/Documents/Git/darknet/include/darknet/yolo_v2_class.hpp
-- Installing: S:/Public/Documents/Git/darknet/uselib.exe
-- Installing: S:/Public/Documents/Git/darknet/darknet.exe
-- Installing: S:/Public/Documents/Git/darknet/uselib_track.exe
-- Installing: S:/Public/Documents/Git/darknet/share/darknet/DarknetTargets.cmake
-- Installing: S:/Public/Documents/Git/darknet/share/darknet/DarknetTargets-release.cmake
-- Installing: S:/Public/Documents/Git/darknet/share/darknet/DarknetConfig.cmake
-- Installing: S:/Public/Documents/Git/darknet/share/darknet/DarknetConfigVersion.cmake

2019年08月22日 めざましじゃんけん結果

個人の実験的な試行内容であり、めざましじゃんけんの結果を保証したり、全ての結果が記載を保証するものではありません。

2019年08月22日のめざましじゃんけんの結果をベストエフォートで公開します。

Goo(グー) Choki(チョキ) Pa(パー)

めざましテレビ|めざましじゃんけんーフジテレビ

めざましじゃんけん結果
回次結果対戦相手
8月22日
(木曜日)
【4戦目】07時58分加藤諒さん
【3戦目】07時35分阿部詩選手
【2戦目】06時58分林蓮音さん、和田優希さん
【1戦目】05時58分まちかどじゃんけん

画像検出に向けて利用するフレームワーク

本家のDarknetも利用しましたが、特定ケースでの学習失敗やメモリ操作関係の不具合など、私自身も上手く行かないケースも有り、ブログ記事などからもAlexeyABを勧めている内容が多かったので、早い時期よりAlexeyABを導入し利用しております。

AlexeyABのDarknetは、WindowsおよびLinuxのDarknet Yolo v3 & v2のNeural Networks for object detection (Tensor Cores are used)をサポートしております。

AlexeyAB公開サイト

以下、サイトにすべての利用方法が記載されております。関連ソフトのインストール方法や、独自学習の方法など。

Darknetインストール方法

本件も同様ですが、AlexeyABでも2つのインストール方法が紹介されております。
最終的には、Legacy wayのVisual StudioでコンパイルしたDarknetを利用しております。この投稿では、2番めのLegacy way(Visual Studio)を利用したコンパイル方法を紹介します。

  1. How to compile on Windows (using vcpkg)
  2. How to compile on Windows (legacy way)

GitHUBよりAlexeyAB一式をダウンロードしておきます。
今後の学習モデル作成時などにも利用するフォルダとなるので、それなりの容量の余裕などを考え、各種ファイルを配置して下さい。

Visual Studioを利用したDarknetの導入

CUDA、cuDNN、OpenCVを導入します。

CUDAとcuDNNインストール

NVIDIA cuDNNの入手には、開発コミュニティへの登録が必要であるが、 cuDNNは、機械学習時のGPU-accelerated libraryとなるので、開発者登録を行い、導入しているCUDAと同じバージョンのcuDNNを入手し、入手したファイルをCUDAインストールフォルダに配置しましょう。

OpenCV導入

https://opencv.org/releases/より必要なバージョンをダウンロードし、Windowsの環境変数Pathに「\opencv\build\bin」を追加します。

C:\opencv\bin;それまでの値

Visual Studioよりプロジェクトオープン

GitHUBよりダウンロードしたファイル群のbuild\darknet\darknet.slnをオープン。

コンパイル時のエラー対応

すでに複数バージョンのDarknetをインストールしましたが、何度か同じエラーが出ております。opencvのライブラリー不足です。
おそらく、コードに直接ライブラリ名が記載されております。エラー内容を見て、エラーが示すバージョンのOpencvをセットアップして、再度ビルドを事項して下さい。

重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー LNK1104 ファイル 'opencv_world343.lib' を開くことができません。 darknet S:\Public\Documents\Git\darknet\build\darknet\LINK 1

各種参考にさせて頂いたサイト

2019年08月21日 めざましじゃんけん結果

個人の実験的な試行内容であり、めざましじゃんけんの結果を保証したり、全ての結果が記載を保証するものではありません。

2019年08月21日のめざましじゃんけんの結果をベストエフォートで公開します。

Goo(グー) Choki(チョキ) Pa(パー)

めざましテレビ|めざましじゃんけんーフジテレビ

めざましじゃんけん結果
回次結果対戦相手
8月21日
(水曜日)
【4戦目】07時58分生じゃんけん!軽部真一アナウンサー
【3戦目】07時35分ウルフアロン選手
【2戦目】06時58分TAKAHIROさん 市原隼人さん 岡田義徳さん
【1戦目】05時58分まちかどじゃんけん

WordPress利用時のTwitterカード

「Wordpress」を利用している際は、「All in One SEO」プラグインを利用するとソーシャル設定が簡単に実施できます。Twitter向けにカードタイプの指定やカスタムTwitter画像設定も簡単に設定できます。

All in One SEOを導入し、各投稿画面の「ソーシャル設定」画面で、Twitterの関連箇所を設定します。

Twitterサービス上のTwitterカード情報の更新

Twitterで投稿をPOST時に、URLが記載されていると、Tweetの下部に記載したURLのイマージ画像やページサマリが表示されます。これが、Twitterカードとなります。
Twitterカードが適切に表示されると、テキストだけよりもインパクトがり、注目を集めやすいです。

Twitterカードで指定している画像の変更や、サマリ部分の文章を変更した際に、誤字脱字等のケースも有り、すぐに最新の情報に更新したい場合があります。
通常は、週次でキャッシュの更新処理を行っているようなので、しばらく時間を置けば最新の情報にTwitterカードは更新されるようです。

強制的にTwitterカードをリフレッシュするには、以下のリンク(Card Validator)より対象のURLのTwitterカードを手動で表示させ、内容を更新させて下さい。

画像ファイルを変更した際に、ファイル名・URLに変更がないと、キャッシュが更新されないケースもあるので、画像ファイルのファイル名に?xxx(myimage.jpg?4362984378)などと指定し、少し強引にファイルが変更したように設定変更を行い、Card validatorでプレビューの取得を実施して下さい。

有用な情報が多かったので、ヘルプページのリンクと内容も掲載しておきます。

Card validator

 

Optimize Tweets with Cards

Refreshing a Card in a Tweet

I updated my site meta tags, but my Tweet shows the old Card. How do I refresh the Card?

Our web crawlers re-index the Card tag information on your page roughly every week.

When testing and/or iterating on Cards, it is sometimes helpful to test updates on your timeline. It may be possible to use the following technique to refresh the cache with your most up-to-date changes of your page’s Card.

  1. Add Card metadata to a page
  2. Tweet URL to that page
  3. Refresh your browser to view the Card contents on your timeline
  4. Change Card metadata on the page
  5. Take the same URL and runs it through bit.ly
  6. Tweet the new bit.ly URL
  7. Refresh your browser to view the updates

Additionally, you can create multiple bit.ly URLs to allow for repeat testing. For example, adding dummy parameters to the end of your URL (http://www.test.com/?x=test1) or a unique hash (http://www.test.com/#test1) will generally not affect the page contents, but will generate a unique bit.ly URL for each unique value of x.

My Card information now refreshes, but images are not updating. How do I get the images to refresh?/a>

Images referenced in a Card are also cached based on URL. This often causes images to not update when the above Card refresh technique is used.

To work-around this issue, you can add an extra parameter at the end of your image URL so that the Twitterbot treats the image as a unique URL and re-fetches the image.

For example:

<meta name="twitter:image" content="http://example.com/myimage.jpg?4362984378"></meta>

 

2019年08月20日 めざましじゃんけん結果

個人の実験的な試行内容であり、めざましじゃんけんの結果を保証したり、全ての結果が記載を保証するものではありません。

2019年08月20日のめざましじゃんけんの結果をベストエフォートで公開します。

Goo(グー) Choki(チョキ) Pa(パー)

めざましテレビ|めざましじゃんけんーフジテレビ

めざましじゃんけん結果
回次結果対戦相手
8月20日
(火曜日)
【4戦目】07時58分生じゃんけん!梶裕貴さん
【3戦目】07時35分朝比奈沙羅選手
【2戦目】06時58分高嶋政伸さん
【1戦目】05時58分まちかどじゃんけん

メインサーバー Synology

  • 動作がもっさりすることがある
  • 特に、一番しっかりしてほしいWEBサーバーの動きがもっさり
    WEB APIのタイムアウトやWEBサイトへのアクセス不通

機種のモデルアップか、自作小型サーバ導入か検討中。

  • Synology DiskStation DS218j 2ベイ
    • 1.3GHzデュアルコアCPU
    • 512MB DDR3メモリ搭載

Shuttle Intel H270 Expressチップセット搭載XH270

今のWindowsメインマシンもShuttleを利用しております。マザーボード、電源などは変更していますが、 もうすぐ10年です。Shuttle SG41J1を利用しております。
仕様要件として、Synologyと同様に信頼性が一番高くなります。よって、ディスクのRAID化必須となります。各種ベアボーンが製品化されており、PC自作派には嬉しい時代なのですが、意外とないのが、省スペース筐体での複数SATAサポート。SATA1台とM.2のPCI-ExpressによるSATA構成が多いと思います。

  • Shuttle Intel H270 Expressチップセット搭載XH270
    • 搭載CPU:ソケット1151
    • 対応メモリ:DDR4 2133/2400MHz SO-DIMM ×2 (最大容量32GB)
    • オーディオ機能:5.1チャンネル HDオーディオ
    • ネットワーク機能:有線LAN : 1000BASE-T/100BASE-TX/10BASE-T対応
    • ドライブベイ:4 / 2.5インチ (9.5mm厚まで)
    • 拡張スロット:M.2 Type2242/2260/2280 M key (PCI-Express x4,SATA 6GB/s対応) / M.2 Type2230 AE key (PCI-Express x1,USB2.0対応)
CPUとメモリは、以下ぐらいを選ぶと思います。トータルで7万円ぐらいにはなりますね。
  • INTEL インテル Core i3-9100F
  • Crucial [Micron製] DDR4 ノート用メモリー 8GB x2 
  • Crucial SSD 1000GB MX500 内蔵2.5インチ 7mm MX500 ✕2台

残りのSATA2台分は、容量大きめのSATA HDDを導入すると思います。

intel MM999J4X Core i3-9100F LGA1151(INT-BX80684I39100F)
CFD W4N2400CM-8G Crucial スタンダードモデル DDR4-2400 ノート用メモリ 260pin SO-DIMM 8GB 2枚組

もちろん、Synologyも簡単にサーバー運用が出来るので、おすすめです。

SYNOLOGY シノロジー DiskStation DS218j デュアルコアCPU搭載多機能パーソナルクラウド 2ベイNASキット DS218j[DS218J]

 

2019年08月19日 めざましじゃんけん結果

個人の実験的な試行内容であり、めざましじゃんけんの結果を保証したり、全ての結果が記載を保証するものではありません。

2019年08月19日のめざましじゃんけんの結果をベストエフォートで公開します。

Goo(グー) Choki(チョキ) Pa(パー)

めざましテレビ|めざましじゃんけんーフジテレビ

めざましじゃんけん結果
回次結果対戦相手
8月19日
(月曜日)
【4戦目】07時58分超特急
【3戦目】07時35分芳田司 選手
【2戦目】06時58分上野樹里さん
【1戦目】05時58分まちかどじゃんけん

Intel Neural Compute Stick 2 - NCS 2 ニューラル ディープラーニング USB スティック

Raspberry PiのCPUでは限界もあり、開発当初よりIntelのディープラーニング向けUSBアクセラレータの「Neural Compute Stick 2」を調べておりました。利用する機械学習のフレームワークややりたいことが定まってから、具体的にどの程度効果が出るのか見極めてからの導入と考えておりました。
Raspberry Piで利用か、Synologyの置き換えとして考えている常時電源ONサーバの追加機能として利用できるなど、利用シーンも様々です。特に、常時電源ONサーバは、GPUを搭載するスロット有りなしでサイズや電源が全く異なるので、このスティックで学習済みモデルのみ動作させることが出来たら便利だなと考えております。

NCS2は、USBタイプの外部演算装置となります。Movidius Neural Compute StickはIntelが開発したUSB接続タイプのディープラーニング用演算装置です。画像の認識や分析に特化したプロセッサ「Movidius Vision Processing Unit(Myriad 2)」が搭載され、ディープラーニングにおける解析処理の際に外部演算装置として使用できます。


USB接続なのでRaspberryPiなどの小型PCでも使えます。演算装置しか持たない環境でも、これを使えばデープラーニングを使った画像解析などが出来るようになります。

このサイトで開発を続けているめざましめざましじゃんけん結果検出システムですが、待ったなしの数十秒の生放送。フリーズしそうな速度で、もっさりと画像認識をしていては、結果取得失敗になる確率を上げてしまいます。

ソフトウェア的に解決を模索しておりますが、気になるハードでも有り、導入を考えてます。(この手の導入検討には波が出ますね)
導入によるメリットは、めざましじゃんけん結果検出時のメインマシンWindowsの完全停止です。

以下は、めざましじゃんけん時に取得したWEBカメラ画像を216枚で画像認識エンジンを動作させた際の性能比較です。52倍の時間差。

Windows(GPU未使用)
Core i7 6700/(Skylake) クロック周波数:3.4GHz
15秒
Raspberry Pi 3
Model B+
ARM Cortex-A53 1.4GHz
785秒
2019-08-14 20:34:48,460:202:INFO:ループ開始:D:\pic4ml\Janken_Target_Test\20190806_055717_102196_1.jpg 処理回数:1
2019-08-14 20:35:03,389:256:INFO:ジャンケン結果判定 Len(total_results): 3 List Values: 0,2,5
019-08-14 20:35:03,390:289:INFO:ジャンケン結果:Chokiを出してLose、相手はGoo
2019-08-15 12:11:10,292:202:INFO:ループ開始:/home/miki/cronScript/Janken_Target_Test/20190806_055717_102196_1.jpg 処理回数:1
2019-08-15 12:24:15,786:256:INFO:ジャンケン結果判定 Len(total_results): 3 List Values: 0,2,5
2019-08-15 12:24:15,787:289:INFO:ジャンケン結果:Chokiを出してLose、相手はGoo
Intel Neural Compute Stick 2

学習モデル

次週より、システム変更に着手予定です。
めざましじゃんけん関係で、各種技術を深めております。
各種技術情報の詳細は、随時公開を進めます。
良い学習モデルが仕上がりました。現時点では、ベストかなと感じてます。
(8月15日より学習モデルは新バージョンで稼働しており、めざましじゃんけん後の結果公開までを1分30秒ほど短縮しております、限りなくゼロに近づけます。)
今までは、7時58分のジャンケン結果を8時01分31秒にホームページ更新、Twitter投稿から、新エンジンで8時00分00秒にホームページ更新、Twitter投稿に時間短縮。画像検出方法変更のみで1分半ほどの時間短縮を実現しています。
あと1分詰めれば、ジャンケン終了とほぼ同時に結果公開が可能となります。

以下、WindowsマシンでGPUなし、OpenCV dnnで速度測定。

import cv2 as cv
net = cv.dnn.readNetFromDarknet(CFG, MODEL)
net.setPreferableBackend(cv.dnn.DNN_BACKEND_DEFAULT)
net.setPreferableTarget(cv.dnn.DNN_TARGET_CPU)

めざましじゃんけんシステムのテスト環境(228枚の画像)

  • 第二世代(現行):109秒、平均99%以上の認識率
  • 開発バージョン1:16秒、平均65%以上の認識率
  • 開発バージョン2(次期本番向け):15秒、平均99%以上の認識率

第二世代(現行)の学習曲線

GPUの容量不足により多くの時間を要しました。検出速度よりも正確さを重視し、システム稼働後に本番システムに導入しました。めざましテレビ終了後よりめざましテレビが始まる時間を利用し、2日間かけて学習させました。

開発バージョン1の学習曲線

速度向上を目的に、追加開発を継続しました。速度は向上しましたが、認識率が一気に下がりました。

開発バージョン2(次期本番向け)

速度、認識率ともに問題なしです。
この学習モデルを本番投入します。
また、このモデルを用いて、Raspberry Piでのオンザフライ(放送中)での結果解析を進めます。現在のメインマシンWindowsからRaspberry Piで動作させた際の速度比較も気になります。