月別アーカイブ: 2016年4月

2年前購入のBTOパソコンの騒音の原因が電源の「コイル鳴き」と判明

2年前購入のドスパラのBTOパソコンだが、使用中、常にというわけではないのだが、ピリピリピリという耳障りな音がたまにするのが気になっていた。

先日グラフィックボードをファンレスのヒートシンク冷却のものにダウングレードしても、その騒音はなくならないので、CPUの冷却ファンか、電源ユニット内部かどちらかだろうとは思っていた。

グラフィックボードをファンレスにしたせいで、その音がますます気になり出したので、パソコンのケースによくよく耳を傾けてみたら、どうやら電源ユニットらしいということが分かった。

そこで価格comやAmazon.co.jpで各種メーカーの電源ユニットを検索しているうちに「コイル鳴き」という言葉を見つけて、「なるほどこれのことかも」と納得し、電源ユニットを交換することに決定。

ただドスパラの静音モデルBTOパソコンは意外にぜいたくで、この「コイル鳴き」をしている電源自体がすでにオウルテックのFSP PT-550Mという80 PLUS PLATINUMのものすごくハイエンドな製品だった。

まあでも2年近く使えば個体によって不具合は出てきても仕方ないし、オウルテックの製品ページを見ると「3年間新品交換保証」とあるけれど「コイル鳴き」で交換してくれるかどうか問い合わせるのも面倒。

なのでパソコンを一から組み立てたことのない筆者は、いつかPCを自作するためのお勉強として電源交換を思い立った。

秋葉原のパーツ屋さんをあちこち歩いて、悩んだ挙句に購入したのが、そのオウルテックの下位製品、FSP 80PLUS GOLDのAURUM S 500Wを購入した。それなら全く同じ製品の新品に交換すればいいという話もあるけれど、少しでもお金を節約したかったので。

帰宅していざ電源ユニットを外そうとすると、CPUクーラーと干渉して外せない。仕方なくCPUクーラーを外すという初体験に挑戦。

四隅のピンの頭を90度回転させてようやく取り外し、グリスが塗られた自機のCPUと初対面。無事、電源ユニットを外して、新しい電源ユニットを取り付け、電源ケーブル類ももとにもどし、最後にCPUクーラーを取り付けなおそうとしたところで、困ったことになった。

四隅のピンをゆるめたときは問題なかったのだが、押し込む時にすき間が狭すぎてピンの頭に指先で力を入れられない。

困った。。。

仕方なく思い切って、再度ケーブル類をすべて外し、ケースファンも外し、グラフィックボードも外し、CPUクーラーをもう一度外して、マザーボードをケースに固定しているネジもすべて外して、マザーボードをケースから取り出した。

これでCPUクーラーの四隅のピンをしっかりと押し込むことが出来る。

ところがパソコン自作経験がないくせに、CPUクーラーの四隅のピンの挿し方をろくにインターネットで調べずに、自分で試行錯誤したものだから、どうも四隅のピンがきちっと挿せず、ぐらつきが残る。

まあでも少しくらいのぐらつきなら大丈夫でしょうと、何の根拠もない納得をして、すべてを元に戻していざ電源を投入。

するとグラフィックボードを交換したときと同じく、いったんはBIOSの起動画面でBIOS再設定を促され、とくに設定を変えずにそのままWindows 10 Home Edition (64bit)を起動してみた。

意外にもあっさりと起動して、普通に使えたので、「何だ電源ユニット交換なんて簡単じゃないか」と思って動画エンコードをしたら、CPUファンがものすごい音で回転しはじめた。

不審に思ってモニタリングソフト(グラフィックボード交換時にインストールしてあったMSI Afterburner)を起動してみると、CPUの温度が摂氏98~100度に張り付いている。

「こりゃマズい!CPUがぜんぜん冷却されてない!せっかくのIntel Core i7 4670を無にしてしまう!」

あわててケースを開けて、今度はちゃんとインターネットでCPUクーラーのピンの挿し方を調べた。ピンの頭にある四分の一円形の矢印が、外を向いている状態で押し込まなければならない、押し込むのは対角線のピンの順に。

今度はそのやり方どおりにピンをマザーボードに押し込むと、きっちり固定されたような、されていないような…。

不安を残しつつまたすべて元通りにして、Windowsを起動すると、MSI AfterburnerのCPU温度は見事に50度以下の範囲におさまった。

素人がパソコンのパーツ交換をするときは、ちゃんと細かい方法をお勉強してからにしましょうという、当たり前のことを身を持って体験しました(笑)。

2年前購入のBTOパソコンのグラボをあえてダウングレード、超静音PCに

2年前にドスパラから購入したBTOパソコン。購入同時、NVIDIA GeForceの最近のモデルは、すでに多くの動画編集ソフトでCUDAが使えないということを知らずに、GeForce GTX750内蔵構成にした。

じっさいにEDIUS 7 Proも、TMPGEnc Video Mastering Works 5でもCUDAエンコーディングは有効にならない。

そういうわけで、ゲームをまったくやらない僕の場合、このグラフィックボードの性能は完全にムダになっていた。

ムダなまま2年間も放置していたのだが、いっそのことグラフィックボードを、より低性能のヒートシンク冷却ファンレスの安価なものに取り替えて、代わりにケース前面に12cmの超静音ファンを追加し、ケース背面の排気も超静音ファンに交換すれば、もっと静かなパソコンになるんじゃないかと思い立った。

購入した120mmファンはAinexの六角形ディンプルつきファンの「究極静音」タイプ2個。

グラフィックボードはMSIのGT710 1GD3H LP。メモリは2GBもいらない、1GBでいいや、という感じ。

その結果、めちゃくちゃ静かなパソコンができあがった。

ヒートシンク冷却だけのグラフィックボードは、動画エンコードするとさすがに温度が上がるのではないかと不安だったので、MSI社のAfterBurnerというモニタリングソフト(無償)をダウンロードしてインストール。

1280×720の動画ファイルのエンコードや、2画面同時のネット動画再生でも、グラフィックボードの温度は41~42度あたりが上限。

もちろん真夏になるともっと温度は上がるだろうけれど、意外にいい調子。

少し前に購入したIntel NUCの、実はそこそこ気になる小型ファンの音よりもはるかに静かで、電源が入っているのかどうかも分からないくらいの超静音パソコンが8,000円くらいの予算できあがって、満足。

東芝製SSD THNSNF128GCSSのS.M.A.R.T.値がおかしなことになっている件(13)

もはや定期投稿になってしまっているが、自宅のPCに内臓SATA接続しているSSD 3台のうち、東芝製 THNSNF128GCSSのS.M.A.R.T.値だけが、Windows Management InstrumentationのWin32_DiskDriveコマンドを発行するだけで変化する件。

順調に「AD 消去回数」の値は下がり、検証を開始した2016/03/01の初期値200から、今日時点で144まで、56減少している。

同じ条件下のSATA接続SSDの他2台、SanDisk製、Crucial製のS.M.A.R.T.値には、同じ期間、温度以外まったく変化がない。SanDisk製のAD値は初期値の100のまま、Crucial製のAD値は初期の97のまま(こちらはすでに使用期間が2年になるため)。

crystaldiskinfo_4ssdcomparison20160410a

同じ型名の東芝製SSDを使っているすべてのユーザーは、自分の利用するアプリがWin32_DiskDrive命令を頻繁に呼び出すような仕様になっていないことを祈るしかないという状況である。

Visual Studio 2015 Community Edition上でPython 2.7を覚えてまでOpenCVで顔認識をする必要があった理由

個人的な趣味で、AKB48の中国上海姉妹グループのSNH48メンバーが、中国ツイッター(新浪微博)にアップしている画像のうち、自撮りと思われる画像だけを選別し、ローカルの特定のフォルダーにいったん集め、特定のサーバにFTPでアップロードするという、世の中の何の役にも立たない実に下らないことを、二週間に一回くらい手作業でやっていた。

中国ツイッター(新浪微博)からメンバーがアップした画像を一括ダウンロードする処理は、中国ツイッター(新浪微博)のOAuth APIがどうやっても上手く行かないので(単に筆者の技術力がないだけ)、Google Chromeの拡張機能として作成した。

そうすると、Google Chromeで新浪微博にログインした状態で実行すれば、本来OAuth APIでやるべきユーザ認証の部分を省略できるからだ。

ただ、拡張機能のJavaScript内部で、新浪微博のサーバ上にある画像ファイルを、ローカルの任意のフォルダに自動で直接ダウンロードすることはできない。そんなことができてしまったら、任意のサーバ上にマルウェアを置いておいて、Google Chromeの拡張機能でこっそりそのマルウェアを世の中のPCにバラまくことができてしまうからだ。

なので、拡張機能からコンソールログに、新浪微博のサーバ上にある画像へのURLを書き出すようにした。

そして、やや回りくどいけれど、そのコンソールログをローカルの任意のフォルダに保存する。

そしてそのコンソールログに含まれる画像ファイルのURLを次々読み込んでは、ローカルの特定のフォルダに、特定の命名規則にしたがったファイル名に変換してダウンロードするという処理を、PHPで書いた。

その結果、今まで1枚、1枚、手作業の左クリックでローカルのフォルダに画像ファイルをダウンロードするという作業が、途中の「コンソールログを左クリックしてローカルの特定のフォルダに保存する」という一か所以外、すべて自動化された。

これで作業時間は、おそらく90%以上削減された。

SNH48メンバーの人数は、最初の頃は20人前後だったので、手作業でもじゅうぶん追いつけたけれど、今や100人を超えている。

しかも全員がほぼ毎日ツイートし、各ツイートには最多で9枚の画像を添付できる。もはや手作業では不可能になっていた。

しかしここまで自動化すると新たな問題が出てくる。

今までは、自撮り画像かどうかを、1枚、1枚、手作業の左クリックで保存するときに、自分の人間の目で判断できた。

ところが、100名以上の2週間分の画像を一括で自動ダウンロードできるようになると、2,000枚を超える画像をまとめて1枚ずつ、自撮りかどうか目視でチェックして選り分ける必要が出てくる。

これを黙々とやっていると、機械的な作業がイヤじゃない筆者でも、さすがに飽きてくる。

なので、人間が自撮りかどうか判別する前に、いったんコンピュータの「顔認識」で、明らかに顔が写っていない画像、たとえば風景を写した画像などを除外することができないか、と考え始めた。

もちろんコンピュータの「顔認識」は、人間がやる顔認識に比べれば精度にそれほど高くない。本来含めるべき画像を捨ててしまったり、含めるべきでない画像を入れてしまったりするかもしれない。

でもそこはあきらめるとして、とにかく少しでも作業を効率化するために「顔認識」で事前の選別をやらせようと思い立った。

そこでインターネットをいろいろ調べると、OpenCVというオープンソースの顔認識APIの存在を見つけた。

ところが運の悪いことに、筆者が自宅のPCのバッチ処理に愛用しているWindows版のPHP用のextensionにそのままつかえるDLLが存在しない。(このあたりはUnix系OSのスキルがない筆者のような技術者の弱点)

かと言って、Web APIとして公開されている顔認識APIを使うと、画像1枚ごとにWeb APIを呼び出して、JSON形式の分析結果を受取ることになるので、処理時間が異常に長くなるのはやる前から分かる。

そこで、やむなくOpenCVを使うためだけに、新たにプログラミング言語のPythonを覚えることにした。幸い入門書はインターネット上で無料で手に入った。

Pythonは、筆者がほぼ習得済みのWindows PowerShellと同じく変数がすべてオブジェクトということなので、理解はしやすかった。(じっさいには逆で、変数がすべてオブジェクトであるPythonを真似して、Windows PowerShellも変数がすべてオブジェクトになったのだろうけれど)

Pythonの「改行に意味がある」という仕様には少し慣れないが、言語として洗練されているので、すぐに大まかな文法は理解できた。

そこで次の問題は、開発環境だ。

PHPなら経験年数が長いので、もうテキストエディタだけでもコーディングはできるけれど、Pythonは独習しはじめたばかりなので、文法チェックくらいはリアルタイムでやってくれる一般的な開発環境が欲しい。

それでなくても頭の中ですでに、Visual Basic、Windows PowerShell、PHP、JavaScript、swift 2.0、そして今回新たに独習しはじめたPythonなど、いろんなプログラミング言語がごっちゃになり始めているので。

そこでWinPythonというとっても便利なWindows用のPythonの統合開発環境を見つけたのだが、「待てよ」と思った。

WinPythonに慣れてしまうと、Python開発しかできなくなってしまう。たしかMicrosoft Visual StudioでもPython開発ができたはずだ。

そう思って調べてみると、思った通りVisual Studio 2015 Community Edition(無償版)でも、ちゃんとPython開発ができるらしいことが分かった。

そこで久しぶりにVisual Studio 2015 Community Editionのインストーラーを実行すると、ちゃんとオプションでPythonが選択できるようになっているではないか。(今までPythonを書く必要性がなかったので気づかなかっただけだけれど)

そしてPython 2.7のWindows 64ビット版をインストールした後、Visual Studio 2015 Community EditionでPython開発のオプションをONにして再設定し、Python用の環境設定(python.exeやpythonw.exeへのパスを通したりすること)をしてやると、ちゃんとPython開発ができるようになった。

ただ、その前にWinPythonをいったんインストールして、アンインストールしたせいか、実行するとnumpyモジュール内部でエラーが発生する。

これについてはインターネットでいろいろ調べた結果、WindowsのMS-DOSプロンプトを立ち上げて、「pip install numpy」を実行してPythonのnumpyモジュールを再インストールすることで解決した。

ただ、Python 2.7用のOpenCVの拡張モジュールのcv2.pydファイルを、Pythonのインストールフォルダ配下のLib配下のsite-packages直下に正しくコピーしても、Visual Studioのコードエディタでcv2モジュールのIntelliSense(各オブジェクトのメンバー名やメソッド名を自動的に入力補完してくれる機能)が有効にならない。

これもネットをいろいろ調べてが、どうやらVisual StudioでPython 2.7用のOpenCVモジュールを使う場合、IntelliSenseが有効にならないのは、Visual Studioの仕様上の制限らしい。

なのでこれは仕方ないと諦めた。Pythonの標準的なモジュールについては、ちゃんとIntelliSenseがメンバー名やメソッド名を選択肢として自動表示してくれるし、自動補完もしてくれ、それだけで十分に助かる。

結果、めでたく数千枚の画像について、一気にOpenCVの顔認識機能で顔が写っていると思われる画像だけを、前もって選り分けて別フォルダにコピーするという自動処理Pythonプログラムの開発に成功した。

といっても、今朝思い立ってから、のべ数時間で実現できたので、そんなに苦労したわけではない。

しかし、どうやらOpenCVの顔認識はかなりチューニングが必要なようだ。

今のところ、インターネットで拾った数値ほぼそのまま流用させて頂いて、以下のように適当にパラメータを設定している。
cascade.detectMultiScale(image_gray, scaleFactor=1.1, minNeighbors=1, minSize=(240,240))

ところがこれでは、人間が見ると明らかに顔でないものが顔だと認識されている。

例えばこんな感じ。

chengjue201604031922c

えっ?この白い枠の中がOpenCVの上のパラメータ設定からすると、顔だと認識されてしまうわけですね。

もちろん上手く行っている画像もある。

chenlin201602292218b

こんな変顔をしてても、ちゃんと顔だと認識してくれてる。しかし…

chenwenyan201603291432b

このオレンジのどこが顔なんだろうか…とか。

つまり残る課題は、OpenCVのパラメータをどうチューニングすれば、できるだけ人間の顔だけを拾ってくれるようになるかだ。

今のままでは、例えば2,000枚チェックしなきゃいけないのが、せいぜい1,500枚くらいにしか絞り込めない。

どこまで自動化の道を追求できるか…。

じつに下らないことに時間をかけているということは、よく分かっているけれど、おかげでPythonのバッチ処理を普通に書けるようになるので、今後仕事にも使えないことはない。

そうやって、趣味でも何でも利用して、仕事のためになるスキルを増やしていくのであった。

東芝製SSD THNSNF128GCSSのS.M.A.R.T.値がおかしなことになっている件(12)

自宅PCに内蔵したSATA接続SSD 3台のうち、なぜか東芝製SSD THNSNF128GCSSのS.M.A.R.T.値だけが寿命が減っていることを示していく検証、その後も続けてご覧のとおり。

crystaldiskinfo_4ssdcomparison20160406a

相変わらずSanDisk製、Crucial(Micron)製のSSDのS.M.A.R.T.値は、温度以外の項目についてまったく変化なし。

Crucial製SSDは2年強使用して、「残り寿命」が100から97まで減っているので、今回の検証、すでに1か月以上になるので1くらい減っても良さそうだが、97から全く変化なし。

それなのに東芝製SSD THNSNF128GCSSの「AD 消去回数」だけはグラフのように順調に減りつづけている。

いつごろWindows 10が警告を出すか、あるいは出さないままか、あるいは東芝がTHNSNF128GCSSを含むいくつかの過去の型名のSSDについてファームウェアに不具合があったことを正直に認めて製品をリコールするか、もうしばらく観察することにしよう。