日々適当

hibitekitou

NVIDIAがMacから完全撤退

mac |2019-11-28

やや旧聞に属する話題ですけど、

NVIDIA、macOSをサポートした最後のCUDA Toolkiをv10.2リリース。次期アップデートでmacOSは非サポートに。 [AAPL Ch.]

ということが話題となりました。AppleのハードウェアにNVIDIA GPUが搭載されなくなってからもOSへの対応を続けてきたNVIDIAですけど、Mojaveでそのドライバがインストールできなくなり、それはCatalinaでも同様という状態が続き、ついにサポートする意欲を失ったといったところでしょうか。

2012年にリリースされたMacを最後にNVIDIAを標準搭載した機種は無くなり、以後リリースされたNVIDIAのGPUはMac Pro Mid 2012以前のMac Proでの使用のみに限られていた状況ですから、その銀Mac Proの数も減った現在、サポートしてもしょうがないという状況になっているのはNVIDIAからしたら仕方ないってことなのでしょう。

しかし、Metal対応よりCUDA対応の方が世のマルチプラットホームなソフトにはハードルが低いでしょうし、Metal対応を表明しているソフトは増えているとはいえ、残念なことです。まぁ、今年のWWDCでのMac Pro発表時にコメントを寄せた企業がMetal対応を述べているし、Appleも働きかけとサポートはしているのでしょうけど、それが加速されないとApple製品にとって厳しい状況は続きますな。

もっとも、CUDAを本当に必要とする人たちはすでにmacOSからは逃げていると思うけど、NVIDA RTX対応のツールが増えてきている現在、それがきっかけでさらなる離脱も起こりそうな気もします(数はそう多くないでしょうけどね)。それはMac Proが発売されても同様でしょう。いかにAMDの強力なGPUを搭載できたとしてもそれをドライブするソフトの対応状況が不安な状況では、確実に動作するプラットホームへ移行した方が良いでしょうか。

ちなみに個人的にはガチなレンダリング用途が減ってしまった業務の都合上、余っていたMacを奪って自席に配置して使うようになったため(これまで会社に支給されているマシンはWindows PCでしたが、それと並んでMacを使えるようになったため)、Macメインに業務上でもなりつつあります…。たぶんウイルスバスターの企業版がMacの動作に大いなる災いをもたらしていると思うのだけど、それさえまともになればQOLはさらに上がるでしょう。

もとい。一番いいのはAppleがサードパーティーのグラフィックドライバを受け入れる体制を作ってくれることですけど、そうじゃなくてもAppleとNVIDAが和解してくれると良いですね。

コメント ( 0 )|Trackback ( )

cartopyを入れる

pc |2019-11-26

matplotlibでどう敗北してか書いてなかったので。

衛星写真を変形したかったのです。で、画像処理だけでいけたらいいなと。

地図をプロットする際に使うツールとしてbasemapが有名だったのだけど、どうも開発終了しててcartopyに移行する流れであるとどこかのサイトに書いてありました。それらツールを使うと衛星写真も各種図法に変形できるらしいことがネットに書かれています。
あ、cartopyってのはイギリス気象局によって開発されているオープンソースライブラリの一部だそうです。
Catalina環境にはbasemap環境を構築していなかったので、せっかくなのでcartopyを入れようかなと思いました。けれどもちょっと面倒なようです。
ちなみに、Catalina環境にはPython3とHomebrewがインストールされているものとします。

PRO4.Jというライブラリが必要だそうです。いろいろ参考にした結果

  1. git clone https://github.com/OSGeo/proj.4.git
  2. cd proj.4/
  3. git checkout -b 4.9.0 tags/4.9.0
  4. make
  5. make install

でとりあえず入ったようです。4.9.0より新しいバージョンありそうだけど(調べたら4.9.3が最後。現行最新は6.2.1らしいけど4が必要らしい)。
あとは主に

Pythonで地理情報のマッピング!cartopy使ってみた [Qiita]

を参考に、

  1. brew install geos
  2. pip3 install shapely cartopy --no-binary shapely --no-binary cartopy
  3. pip3 install matplotlib
  4. pip3 install scipy

これで

Using cartopy with matplotlib — cartopy 0.15.0 documentation

ここにあるコードが動作するようになりました。

と言う事でここから本題。やりたいことは正距円筒図法の一部が切り取られた画像を別の図法の画像にしたいということです。NASAが配布しているG.Projectorというツールでそれが可能なのですが、このツールはJava 8を要求し、OracleがJavaのランタイムの無償利用を打ち切ったために使いづらくなっちゃったのよね。ということもあり、なんとかならんものかとやり始めてみたわけですが。

左の画像(正距円筒図法)が右になりました。このサイズで見るとうまくいっているように見えなくはないですが、一部を拡大しますと下図のようになります。

左がオリジナル画像、右が変形結果。明らかに画質が劣化しすぎています。これをどうやっても解消することができなかったのですね。で、諦めて3DCGソフトでグリッドを歪める簡易的な変形にとどめることにしました(とはいえメッシュ分割を十分に細かくすれば、それなりの精度は出るはず…)

ちなみに、画像を変形して任意の図法に変形するのではなく、単純に海岸線や国境線などの線を取得する場合には今回の環境構築の結果はとても有用なはずですから、完全に無駄ではなかったと思えるような活用の仕方が今後できればいいですなぁ。

import matplotlib.pyplot as plt
import cartopy.crs as ccrs

north = [ 45.523015 , 141.936587 ] #宗谷岬
#east= [ 43.385437 , 145.817579 ] #納沙布岬
east = [ 45.509032 , 148.893014 ] #択捉島
south= [ 24.045030 , 123.791862 ] #波照間島
west= [ 24.449230 , 122.932030 ] #与那国島
akashi = [ 34.0 + 39.0/60.0, 135.0  ] #明石
img_extent =  ( west[ 1 ], east[ 1 ], south[ 0 ], north[ 0 ] )  #画像の緯度経度の範囲
plt.figure(  figsize=( 12., 9.))

proj = ccrs.LambertConformal( central_longitude=akashi[1] , central_latitude=akashi[0] , standard_parallels=(30,60) ) #ランベルト正角円錐図法
latlon_proj = ccrs.PlateCarree() # 緯度経度の処理用:正距円筒図法
#proj = ccrs.Mercator() #: メルカトル図法
#proj = ccrs.Orthographic( central_longitude=akashi[1] , central_latitude=akashi[0] ) # : 正射方位図法

ax = plt.axes( projection = proj )
ax.coastlines( resolution='10m' )
ax.set_extent( img_extent ,  latlon_proj )

plt.show()

コメント ( 0 )|Trackback ( )

matplotlibに敗北したのでBlenderで変形させてみる

cg |2019-11-24

正距円筒図法の日本地図を他の図法に変形したいわけですけど、Pythonのモジュールとしてはcartopyとmatplotlibの組み合わせでできそうだと思って格闘したんですけど、荒れた絵しか出てこないのですね。単に無知な結果なのか、そもそも無理なのか…
なので諦めて、3DCGソフトのグリッドに日本地図を貼り付けて、それを変形させることにしました。

Pythonが使えればいいのでなんでもいいんですけど、せっかくなのでBlenderで。座標変換にはPyprojモジュールを使います。
macOS上で pip3 install pyproj でOSのPythonにはそのモジュールが入りましたが、BlenderのPythonでは認識されないので一手間加えます。

Blender上で
import sys
sys.path.append('/usr/local/lib/python3.7/site-packages')
をするだけなんですけどね。これでpyprojが使えるようになりました。

ということで、突貫工事の稚拙なスクリプト。1000x1000のグリッドで実行完了まで数秒かかりますw

import bpy
from mathutils import Vector, Matrix
from pyproj import Proj
import numpy as np

#変形後の形状の東西方向のサイズ(m)
gridWidth = 100.0

#日本各地の端っこ(Google mapでクリックして返ってくる値w)
north = [ 45.523015 , 141.936587 ] #宗谷岬
#east= [ 43.385437 , 145.817579 ] #納沙布岬
east = [ 45.509032 , 148.893014 ] #択捉島
south = [ 24.045030 , 123.791862 ] #波照間島
west = [ 24.449230 , 122.932030 ] #与那国島

#中心地としてとりあえず明石を指定してみる。
akashi = [ 34.0 + 39.0/60.0, 135.0  ] #明石

#ランベルト正角円錐図法
#標準緯線が何が正解か分からんので、とりあえず国土地理院のページの地図の一つを参考にしている。
#https://www.gsi.go.jp/chubu/minichishiki22.html
lat_1 = 34.0 + 5.0/60.0
lat_2 = 37.0 + 54.0/60.0 + 30.0/3600.0
converter = Proj( proj='lcc', R=6371200,  lat_1=lat_1, lat_2=lat_2, lon_0=akashi[1], ellps='WGS84' )

obj = bpy.context.object
mesh = obj.data
verts = mesh.vertices

xMax = -1000000.0
yMax = -1000000.0
xMin = 1000000.0
yMin = 1000000.0
vertsList = []

for vert in verts:
    vertPos =  vert.co[:2] 
    vertsList.append( list( vertPos ) )
    if vertPos[0] > xMax:
        xMax = vertPos[0]
    if vertPos[0]  < xMin:
        xMin = vertPos[0] 
    if vertPos[1] > yMax:
        yMax = vertPos[1]
    if vertPos[1] < yMin:
        yMin = vertPos[1]

newXMax = -10000000.0
newYMax = -10000000.0
newXMin = 10000000.0
newYMin = 10000000.0
i = 0

cntX , cntY  = converter( akashi[1], akashi[0] ) #中心地は明石にしている

for vertPos in vertsList:
    lon = ( vertPos[0] - xMin )/( xMax - xMin ) * ( east[1] - west[1] ) + west[1]
    lat = ( vertPos[1] - yMin )/( yMax - yMin ) * ( north[0] - south[0] ) + south[0]
    
    x , y = converter( lon, lat )
    x = x * 0.001
    y = y * 0.001
    
    y = y - cntY * 0.001
    
    if x > newXMax:
        newXMax = x
    if y > newYMax:
        newYMax = y
    if x < newXMin:
        newXMin = x
    if y < newYMin:
        newYMin = y
    
    v = Vector( ( x, y, 0.0 ) )
    verts[i].co = v
    i+=1

sclVal = gridWidth / (newXMax - newXMin)
obj.scale = ( sclVal, sclVal, sclVal )

コメント ( 0 )|Trackback ( )

HDD交換

pc |2019-11-22

うちの2台のマシンのTimeMachineのデータ保存先他として稼働しているDrobo 5Cは、もともと3TBとか4TBのHDDを入れて運用していたのですけど、うち2台が次々とお亡くなりになった時があり、その時は場当たり的に余っていた1TB HDDを突っ込んでしのぎました。ところが最近、その1TBの一台の容量が足りないという警告をDroboが発するようになり、TimeMachineのバックアップに失敗するようになってきました。
ということで、Mac miniの外付けHDDとして利用しているTerraMaster D5 Thunderbolt 3 に入っているHDDと交換することとしました。折しも、その中に入っていたHDDのうち容量の少ない方の空き容量も残念な感じになっていたってこともあります。(あ、RAID運用はしておりません)

急ぎ導入しなければならないということでHDDを物色するわけですけど、今のHDDメーカーで健在なのはWestern Digital, Seagate, 東芝, HGSTという感じになりましょうか。入れたい容量として14TBを狙ってたためどうしても個々の価格帯が上がるため、HGSTが昔から好みだったのだけど比較的値段が高いために選べず、値段的に一番安い部類に入るSeagateか東芝のどちらかになりました。で、あとは納期が問題で、すぐにでも欲しいということになるとAmazonの在庫的にはSeagateって消極的な理由で選んでおります。しかもさらに消極的なことに、Amazonで目的の製品(14TB)の在庫は1台で、しかし2台欲しい状況であるため、妥協して在庫が豊富らしい12TBになってしまうという…

ということで12TBのIronWolf ST12000VN0008です。今のところ特に問題もなく認識し、AmorphousDiskMark for macOSでこんな値です(USB 3.0経由の外付けHDDのアダプタに挿している時の値)。

Amazonのレビューで500MB/s越えの速度を出しているのがあったので期待しましたけど、USB 3.0経由だからか、こんなもんですかね。でもまぁ十分ですね。ということであとは心配なのが信頼性ですけど、こればかりは長期間使わないと判断できない。願わくば初期不良でダメになりませんように…

ということで6TB HDD二台が浮いたのでこれをDrobo 5Cに入れていきます。2台死んだらRAIDが死ぬモードで運用しているので1台ずつの交換になります。1台交換してリビルドが終了したら2台目を交換するという手順。これを書いている現在、1台目のHDDを入れ替えてリビルドが行われている最中です。電源入った状態で引っこ抜いて新しいの挿して、そしたら勝手にリビルドが始まるってのは本当に楽で良いです。これで速度が遅くなかった完璧なんだけど、本当に遅いんですよねぇ。(8発積みのはそれなりに速度は出るのだけど筐体だけで30万円ぐらいするんで無理って感じです(^^;)

<追記>朝起きたらDroboの入れ替えたHDDが認識されておらず既存の4発で構成されたRAIDになってたので改めて入れ替えの6TB HDDを挿し直したら今度は認識して5台を使ったリビルドをしだしました。16時間と表示されています。基本的に一発が死んだら4発構成で運用できるようリビルドされるから、それが終わらないと新しい5発目は認識されないということなのか、単に挿しこみ方が甘かっただけなのか。

それとは別にTerraMaster D5 Thunderbolt 3 (5発のドライブはRAID運用はされていない)に挿した12TBの新しい奴をベンチマークとってみました。速度が落ちているのはHDDが半分ぐらい埋まっているからかな(上のUSB 3.0でのテストの時はほとんど空だった)。

</追記>

コメント ( 0 )|Trackback ( )

MacBook Pro 16インチモデルがリリースされました

mac |2019-11-14

16インチMacBook Pro [Apple]

噂は出ていまたし、最近、報道陣を集めての発表を行ったなんて話も出ていましたしで登場を匂わせていた新型MacBook Proですけど、短期間の試用を行った人の記事が軒並み評判が良くてとても気になります。もちろんこれはAppleから貸与されている機体で、ある契約のもと行っていることでしょうから、もしかしたら悪いことを書くなという力が働いている可能性は否定できないけど、それにしてもAppleがアピールしているポイントについての評判が良いように思われます。

「似ているようで全く違う」16インチMacBook Proの評価すべきポイントとは(本田雅一)
Mac史上最高峰「16インチMacBook Pro」の極上サウンドを実現したT2チップの功績(松村太郎)
16インチMacBook Pro正式発表 限界に挑んだ6つの特徴を実機でチェック
[Engadget 日本版]

MacBook Pro 2019と呼ばれている15インチモデルは販売停止となったそうですが、それと比較した時、ディスプレイ性能、GPU性能、メモリ性能、ストレージ性能、キーボード性能、オーディオ性能のリファインが行われているそうすが、それらを実現するために筐体設計を大きく見直した事実上のフルモデルチェンジですから注目度がとても高いです。前のモデルは2016年にリリースされたものが基本設計のものといえましょうからそう考えると前モデルのデザインの寿命は短かかったですね。キーボード問題をついに解決できなかったのが今回のフルモデルチェンジの原因なんだろうなぁって気がしてきます。

そんなわけでキーボードにしっかりと手が入ってキーストロークが深くなっているそうで、それは個人的に大変に気になるところ。MacBook Pro 2018を使っていますが、ほとんどデスクトップマシンとして使っていて外付けのキーボードを利用していたから、ついに2016からの打鍵感に慣れることがなかったのですね。だから大いに期待をしたい。

GPUはRadeon Pro 5500Mが上位、下位が5300Mだそうで、GeForce(Quadro)のエントリークラスと比較される性能のもののようですけど、それでも先代モデルの555Xや560Xと比べるとかなりの性能の向上が期待できる上、6Kディスプレイを2枚つなぐことができるそうですから、いろいろ捗るんじゃないでしょうか。

メモリは最大64GB、ストレージは最大8TB行けるようになり、その他8コアのCPUを含めて、それら性能のパーツを無理なく扱うことができるらしい新設計の筐体が、果たしてどれだけ演算性能を落とさないでおけるのか、よりタフなベンチマークを行うかもしれない今後のどこかのレビューを期待したいところです。

とはいえ、重さは2kg。実はMacBook Pro 2018の重さでもちょっと辟易している軟弱な体な私としてはちょっと重くなっちゃったのは残念に思います。でもモニタサイズのアップと全体的な性能の向上を図った上でこれだけに抑えた上、どうも完成度が非常に高いようだから、それぐらいは我慢ですね。

個人的には今までMacBook Pro 2018まで使い続けてきた環境の変化により、それを使い続けるモチベーションがなくなってしまった関係上、このコンセプトの筐体のサイズの小さいモデルの方が用途的には合っていると言える状況になっています。ってことでこのラインのMacBook Pro 13インチモデルの後継の早期の登場を期待したいです。

まぁでも使用用途が特になくなってしまったとは言え、かなり欲しくなる新型機です。ってことで自分的に必要そうな構成でお値段をシミュレートしてみると

16インチMacBook Pro
2.4GHz 8コア Core i9
32GBメモリ
Radeon Pro 5500M
2TB SSD
Apple Care
¥465,960(税込)

だそうです。CPUを妥協してマイナス2万強。100MHzの速度向上のために2万ってのも考えものか?とも思うので、45万円に収まりますね。
ちなみに、Apple Storeでは下取りサービスもやってて、MacBook Pro Late 2016をやってみたら45620円だそうです。うーん、安い(^^; 下取り含めれば40万を切るか切らないかぐらいにはなるかもしれない。けど、無理だかなぁ.

そして同時にMac Proの注文受付が12月からであることも発表されました。日本での価格はまだ明らかにされていませんが、値段が明らかになったならリース会社は全力で在庫確保に動いてほしいものです(自腹で買うのはもちろん無理で、会社で購入することも考えにくい価格帯のものなので)。職場は果たして購入に動いてくれるでしょうか。(自分用のマシンであることは絶対にないのだけどもね)

コメント ( 0 )|Trackback ( )

QooCam 8K というカメラ

pc |2019-11-10

QooCam 8K [Kandao Tech]

中国のメーカーだそうで、プロ向けのカテゴリーの360度のカメラを売っていたようですが、コンシューマーに向けての価格帯で8K解像度を持つカメラを発表してきました。
デザイン的にはリコーのThetaに近く、それに大きめの液晶ディスプレイがついた感じでしょうか(かなりでかく感じますけど)。8K(7680x3840)の動画を30fpsで、しかも10bitのH.265動画(200Mbps)で記録できるそうです。GoPro Max[GoPro]で話題となったスタビライズ機能によく似た機能を持ち、そっちは5.6K 30fpsですから、数字的には圧倒的に上回っていると言えましょう。GoProの方はセンサーサイズは非公開らしいので不明ですが、QooCam 8Kは1/1.7インチのものを搭載しているそうです。
静止画性能は、静止画だから解像度はさらに上がるというわけではなく、そちらも7680x3840。12bitのDNGで保存されるそうです。静止画方面ではライバルはThetaということになりましょうか。Vよりセンサーサイズは大きく、Z1よりは小さいということになります。Vよりは上で価格も上。Z1より解像度は上で価格は下。そうするとZ1よりも選択肢としてありかと思ったりもしますが、さて、どうでしょう。とは言え、なんとなくですけど、静止画性能としては過度な期待はしないほうがいいように思ったり…でもRAWで保存できるようですから、現像の結果Z1並あるいは以上の画質を得ることができるのなら、リコーにとっても怖い製品と言えそうです。
でもって動画用途とした場合、GoPro Maxはかなり楽しいカメラって印象ですから、それをどれだけ脅かす存在になるのか。GoPro HERO 7に対するDJI Osmo Actionのような存在になるのか。早く実写映像を見てみたいですな。

ちなみに下はTheta Z1での画像。暗部持ち上げすぎてノイジーになりすぎた…。これぐらいの静止画画質は期待できるかな?

旭市 19.11.10

以下余談。上の写真を撮ったり、下の写真を撮ったり

山武市 19.11.10

するために千葉県北東部海岸線付近を走ったのですけど、千葉県北西部でガソリンを入れてからそこに向かって、って走ったら、160kmほど走ってうちの車で初めて20km/リットル って数字を超えました。道が空いてて信号少ないといいなぁと思う日曜日でございます。

コメント ( 0 )|Trackback ( )

iOS 13.2 にようやくあげました。

iPhone |2019-11-09

せっかくDeep Fusionに対応したのだから、アップデートの前後で何か変わるかを自分で確認してみたいなぁと思ってしまったために、時間を作れるようになるまで放置していたら、iOS 13.2のバージョンは13.2.2まで上がってました。不都合多すぎじゃないですかねw



上から、ナイトモードオフ、(撮影時間)5秒、8秒です。

13.2の方がよりシャープな絵になっていると感じられます。ということを感じることができたので満足です。
この機械学習系の機能はソフトウェアの機能だろうから、そのうち夜空モードとかつきますかね? それこそGoogleのPixel 4の星空撮影ができるのと戦えるようなモードを、ね(ついたとしてもそんなに使うことはなさそうではあるけど(^^;)。

コメント ( 0 )|Trackback ( )

Homebrewをインストール

mac |2019-11-08

CatalinaにHomebrewを入れようと思ったのですけど、インストールのワンライナーが"Illegal variable name."とかで走りません。
ネットをぐぐると、とりあえず

curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install > homebrew_install

でインストールのためのrubyのスクリプトをローカルに保存して、それをrubyで実行する、って解決方法が出てきました。
上記コマンドで出来たhomebrew_installファイルをrubyから実行。

ruby homebrew_install

これでhomebrewのインストールが走り始めましたよ。インストールも無事終了。
ただし、brew doctor といったコマンドを実行するためにはターミナルウインドウを新たに立ち上げる必要はありました。
ffmpegやmpvといったものも普通にインストールができた模様。

zshになったことで、ちょっと勝手が違う部分もありましたが、まぁまぁ、無事行けそうかね?

コメント ( 0 )|Trackback ( )

Catalinaのルートディレクトリへの書き込みが禁止された

mac |2019-11-07

macOS Catalinaはブートボリュームを二つの領域(リードオンリーのシステムボリュームと書き込み可能なユーザボリューム)に分けています。正確にはもうちょっと細かく分かれているみたいだけど、macOSを利用中のユーザから見える範囲としてはこの二つ。
システムボリュームは / にマウントされ、ユーザボリュームは /Syste/Volumes にDataとしてマウントされている模様。このリードオンリーな領域はSIPを無効にすることで書き込み可能になるけど、システムを再起動するとSIPが有効になってリードオンリーに戻る。
で、/System/Volumesにマウントされるデータ領域だけど、通常はそれを意識せずに / から連なる階層としてみえてくれます。ソフトをインストールしたら /Applications に入るし、ユーザフォルダは /Users/hoge だしといった感じ。

というわけで、/ にフォルダを掘ることができません。

% pwd
/
% mkdir FOLDER
mkdir: FOLDER: Read-only file system

というようにリードオンリーだから書けないよって言われます。
だから例えば /Users/Share にマウントポイントとなるフォルダを掘ってそれに対して

mount -t smbfs //ユーザー名:パスワード@ホスト/共有フォルダ /Users/Share/[Mount Point]

を実行してやる分にはマウントされたんですけど、Mojave以前でルートディレクトリに例えばHAGEってフォルダを掘って、そこに各サーバーの共有フォルダのマウントポイントを置いていた時(/HAGE/MountPoint とか設定してた時)に困ったぞとなるのです。ファイルパスが重要ないろんなファイルが依存しまくっているようなプロジェクトを扱っているCGソフトのようなツールではCatalinaにすることで過去のファイルパスとの互換性を保てない、ってことになるわけで。

で、 /System/Volumes/Data 直下にディレクトリを惚れるので、それが / に見えてくるかと思いきやそんなわけでも無い。/ の下の階層、例えば /Users 以下にフォルダを掘ると /Users と /System/Volumes/Data/Users に同じように新たに作ったフォルダが見えてきます。これと同じことがSIPが適用された階層にもできればねぇ…

SIPをオフにする以外で何か方法はないものか…

コメント ( 0 )|Trackback ( )
  ・