Skip to content

data from kaggle

Data were obtained from kaggle: https://www.kaggle.com/gregorut/videogamesales. The dataset contains a list of video games with sales greater than 100,000 copies. It was generated by a scrape of vgchartz.com. Fields include:

  • Rank – Ranking of overall sales
  • Name – The games name
  • Platform – Platform of the games release (i.e. PC,PS4, etc.)
  • Year – Year of the game’s release
  • Genre – Genre of the game
  • Publisher – Publisher of the game
  • NA_Sales – Sales in North America (in millions)
  • EU_Sales – Sales in Europe (in millions)
  • JP_Sales – Sales in Japan (in millions)
  • Other_Sales – Sales in the rest of the world (in millions)
  • Global_Sales – Total worldwide sales.

Global sales

Global Sales by Year_trends

Looking at how the total global sales differed by years, it can be noted that since 1980 sales were continously increasing. But  huge decrease can be observed in last 7 years.

Sales by regions

Global Sales by Region

Looking at the sales by regions, we can see that North America region had the biggest contribution to global sales – almost 50%. NA and EU regions together had over 75%  contribution to global sales.

Sales by regions timeseries

Here we can see how sales in the regions varied over time. In 1995 North America became the biggest market. In 2008 the sales began to decrease in all regions. The biggest relative fall was in North America.

Number of releases

Number of releases by Year

Here we can see how the number of new games releases was changing. It kept growing up to the 2009, when it started to drop rapidly.

Who released the most?

This image shows top publishers by the number of releases. Two companies that made the most releases were: Electronic Arts and Activision.

Releases by Years

Top Publishers by Releases by Years

Here we can see how the releases looked in the time. The top publisher – Electronic Arts – entered the market in 1992 and made the most releases in years: 2005-2009.

Who made the sales?

Top Publishers by Total Global Sales

Electronic Arts and Activision made most releases, but looking at the sales we can see that Nintendo made the best Total Global Sales. Electronic Arts and Activision are right behing Nintendo.

How did the sales look like?

Top Publishers by Global Sales by Years

This image shows how did the sales look in time for different publishers.

Platforms

Releases by Platforms

Here we can see the number of releases for different platforms. Two top platforms were DS and PS2.

Time marks of release dates for all platforms

Platforms by Years legend

This image shows how the distribution of releases for different platform look like. Most releases for DS were in years 2004-2014, and for PS2 in years: 2000-2011. Typical release time window for main platforms lasts ca 10 years. PC had the largest release window.

Number of releases for platforms

Genres by Platforms

The number of releases in different genres for platforms. The top 5 platforms had the most releases in Action category. The most releases were made for PS2 in Sports category.

Number of releases by genres

Number of Releases by Genres

Here we can see number of releases by genres. Action Games had 20% contribution to total number of games released. Just Action and Sport games were 1/3 of all the released games.

Releases by Genres by Years

This plot shows the moving average of releases in years. In 2004 Action games detronized Sport games. Sport games had the biggest relative fall (since 2010). Action games were released the most, but after 2011 also falling.

Global sales by genres

Global Sales by Genres

Action games are top selling category.

Global Sales by Genres by Years

This plot shows the moving average of sales over time. The biggest falls can be observed for two top genres: Action and Sports.

Sales by genres in regions

Sales by Genres by Areas

Sales by Genres by Areas tab

In Japan the most popular genre was Role-Playing (Pokemon series?). In other regions the most popular genre was Action.

Top games by global sales

Top Games by Global Sells

This image shows the best selling games. The top one is Wii Sports. GTA 5 is in the second place.

Top games by global sales in regions

Top Games by Sells

Looking on sales by regions we can see that top game – Wii Sports sales were mostly in North America. GTA 5 was almost 50:50 in EU/NA. In Japan: Pokemon games significantly outperformed other titles in sales.

Final notes

  • Over last few years there is decrease in sales and in numer of releases
  • NA and EU regions had over 75% contribution to global sales
  • Electronic Arts and Activision were the top most releasing publishers
  • Top most selling publisher was Nintendo
  • Most popular genres were: Action and Sports (34.5% of total sales)
  • Wii Sports, GTA 5 and Super Mario Bros and were best selling games

Termin Multilayer Kernel Machines (MKMs) został wprowadzony w 2012 roku w pracy doktorskiej Youngmin Cho pisanej pod kierunkiem Prof. Lawrenca Saul (1). Autor zaproponował nowy model hierarchiczny oparty o przekształcenia jądrowe, czerpiący z wcześniejszych badań nad rodziną jąder arc-cosinusowych (2). Ideą badań i rozwoju MKMs była chęć obejścia słabości maszyn wektorów nośnych (ang. Support Wektor Machines, SVM) oraz wykorzystania zalet systemów głębokich. Realizacja MKMs bazowała na koncepcji połączenia technik nienadzorowanej redukcji wymiarowości i nadzorowanego wyboru cech z  wielowarstwowymi jądrami arc-cosinusowymi. Indywidualne kroki w tej procedurze korzystają z dobrze znanych i szeroko stosowanych metod, jednak ich połączenie w zaproponowanej metodzie tworzenia MKMs było nowatorskie.

 

Zasada działania i uczenia się Multilayer Kernel Machines

Multilayer Kernel Machines są trenowane przy wykorzystaniu kombinacji metod uczenia nadzorowanego i nienadzorowanego. U podstaw ich działania leży rekursywnie przeprowadzana iteracja trzech procesów:

  • „trik jądrowy” polegający na nieliniowej transformacji (najlepiej przez jądra arc-cosinusowe)
  • nienadzorowaną redukcję wymiaru poprzez jądrową analizę składowych głównych Kernel Principal Component Analysis (KPCA)
  • oraz nadzorowany wybór cech.

Cykl ten jest wielokrotnie powtarzany w celu skonstruowania MKM.


Z pracy: (1)

Powyższy schemat przedstawia podstawową koncepcję konstrukcji Multilayer Kernel Machines. Dane wejściowe X są filtrowane w procesie nadzorowanej selekcji cech w ten sposób, aby zawierały wyłącznie cechy powiązane z informacją klasyfikowaną. Otrzymane dane X’ są poddawane przetwarzaniu przez jądra arc-cosinusowe tworzące nieskończenie wymiarową reprezentację Φ(X’). W kolejnym kroku następuje nienadzorowana redukcja wymiarowości Φ(X’) w przestrzeni cech i otrzymywana jest skończeniewymiarowa reprezentacja Ψ(X’). Następnie Ψ(X’) podawane jest na wejście i cały cykl powtarzany jest wielokrotnie np. L razy w celu utworzenia L –warstwowej MKM. Na samym końcu procedury, cechy ostatniej warstwy podawane są na wejście jakiegoś klasyfikatora (jak np. k-NN lub SVM) w celu podjęcia końcowej decyzji.

Procedurę uczenia Multilayer Kernel Machines opisuje następujący pseudokod:

 multilayer kernel machine learning pseudocode

 

Nienadzorowana redukcja wymiarowości – Kernel Principal Components Analysis (KPCA)

W Multilayer Kernel Machines głębokie uczenie realizowane jest przez iteracyjne powtarzanie na kolejnych warstwach procedury KPCA, przedstawionej w 1998 w pracy (3). Dane wyjściowe (cechy w postaci składowych głównych) z KPCA z jednej warstwy stanowią wejście do KPCA w warstwie następnej. Składowe te nie są jednak przenoszone bezpośrednio. Usuwane są składowe, które zostały uznane za nieinformacyjne, czyli niezwiązane z informacją wpływającą na klasyfikację. W zasadzie wszystkie nieliniowe jądra mogą zostać użyte przy analizie składowych głównych w MKMs, ale rdzenie arc-cosinusowe wydają się być najlepszym wyborem ponieważ odzwierciedlają obliczenia w wielkich sieciach neuronowych.

Analiza składowych głównych (PCA) jest ortogonalną transformacją systemu współrzędnych opisującego dane. Często wykonywana jest poprzez rozwiązanie równania znajdującego wartości i wektory własne, a czasami przy wykorzystaniu algorytmów iteracyjnych. W przypadku dużej (lub nieskończonej jak w przypadku MKM) wymiarowości danych rozwiązaniem może być wykorzystanie jąder w metodzie Kernel Principal Components Analysis KPCA.

KPCA przebiega zgodnie z następującym algorytmem. Na początku utworzona zostaje macierz Kij=(k(xi,xj))ij. Następnie rozwiązywane jest równanie własne poprzez diagonalizację macierzy K i normalizowane są współczynniki rozwinięcia αn wektorów własnych poprzez wiąz: λnn·αn )=1, gdzie λ oznacza wartości własne macierzy K. W celu wydobycia składowych głównych (odpowiednich dla jądra k) wektora x, obliczane są jego rzuty na wektory własne:

KPCA

W przypadku jąder arc-cosinusowych procedura ta dokładnie odpowiada standardowej PCA w przestrzeni cech, bez konieczności wykonywania obliczeń w tej przestrzeni.

 

Wybór cech

W Multilayer Kernel Machines warstwy są uczone poprzez połączenie nadzorowanej metody wyboru cech i nienadzorowanej metody KPCA. Wybór cech ma na celu odrzucenie cech nieinformacyjnych na poziomie każdej warstwy (włączając w to także oryginalne dane wejściowe). Pozwala to skoncentrować nienadzorowane uczenie MKMs na składowych rzeczywiście zawierających informacje o oznaczeniach klas. Ograniczenie cech w każdej warstwie odbywa się w dwóch etapach: poprzez oszacowanie dla cech ich informacji wzajemnej, oraz ich okrojenie w oparciu o walidację krzyżową. Pierwszy etap realizowany jest przez dyskretyzację cech i konstrukcję histogramów warunkowego i marginalnego rozkładu dyskretnych wartości dla klas, a następnie w oparciu o te rozkłady estymowana jest dla każdej cechy informacja wzajemna z oznaczeniem klasy oraz następuje posortowanie cech zgodnie z wartością tego oszacowania (4). W drugim kroku uwzględniając wyłącznie w pierwszych cech zgodnie z tym uporządkowaniem, obliczane są wskaźniki błędu klasyfikatora k-NN (k-najbliższych sąsiadów) w oparciu o odległość Euklidesową w przestrzeni cech. Wartości błędu obliczane są na losowym zestawie walidacyjnym próbek, dla różnych wartości k i w i zapamiętywane są wartości optymalne. Optymalna wartość w określa liczbę cech o zawartości informacyjnej która będzie przekazana do następnej warstwy. Z tego wynika, że wartość w określa szerokość warstwy.

 

Klasyfikacja – nauka metryki

W pracy (1) cechy na wyjściu ostatniej warstwy klasyfikowane były przy wykorzystaniu odmiany klasyfikatora k-NN. Autor użył klasyfikacji Large Margin Nearest Neighbor (LMNN) przedstawionej w pracy (5), a jako miarę odległości wykorzystał metrykę Mahalanobisa. Odległość Mahalanobisa jest zgodnie z formalizmem matematycznym pseudometryką ponieważ spełnia wszystkie właściwości metryk z wyjątkiem warunku rozróżnialności: D(xi ,xj )=0 xi=xj. Odległość Mahalonobisa opisuje się wzorem:

Mahalanobis distance

gdzie oryginalnie macierz M jest odwrotnością macierzy kowariancji.

 

Matematyczne podstawy rdzeni arc-cosinusowych

W pracy (2) opublikowanej jako artykuł z konferencji Neural Information Processing Systems 2009, Youngmin Cho i Lawrence K. Saul zaproponowali nową rodzinę funkcji jądrowych (rdzeni) odzwierciedlających obliczenia w wielkich sieciach neuronowych oraz przedstawili metodę uczenia Multilayer Kernel Machines przy wykorzystaniu tych funkcji. Praca zawierała część materiału z pracy doktorskiej Youngmin Cho pisanej pod kierunkiem Prof. Lawrenca Saul (1).

Autorzy zaprezentowali rodzinę funkcji jądrowych (rdzeni) pozwalających na obliczenie podobieństwa dwóch wektorów x, y  Rd. Reprezentacja funkcji w postaci całkowej wygląda następująco:

kernel function via the integral representation

Heaviside step function

Analityczne oszacowanie tej całki (2) pozwala na zapis funkcji w postaci:

kernel function

czyli iloczynu składowej zależnej od modułów obu wektorów, oraz składowej Jn(θ) zależnej od kąta pomiędzy nimi w sposób:

 angular dependence - J of theta

gdzie θ oznacza kąt pomiędzy wektorami x i y:

theta angle between inputs: x and y

Zaproponowane rdzenie są nazywane zgodnie z sugestią autorów rdzeniami arcus-cosinusowymi (ang. Arc-cosine kernels) ze względu na postać rdzenia zerowego rzędu:

zeroth order kernel is arc-cosine kernel

Rdzenie wyższych rzędów z tej rodziny mają bardziej skomplikowaną składową opisującą zależność kątową Jn(θ) np.:

J1(θ)=sinθ + (π − θ)cosθ  lub J2(θ)=3sinθ cosθ + (π − θ)(1 + 2cos2 θ).

Dodatkowo, ponieważ iloczyn skalarny wektorów wyjściowych f(x) i f(y) z jednowarstwowej sieci o m jednostkach wyjściowych i funkcji aktywacji postaci gn(z) = Θ(z)zn, rzędu n, opisuje się równaniem:

inner product between different outputs of the network

gdzie, wi oznacza i-ty rząd macierzy wag, a x i y to wektory cech na wejściu, to z tego powodu, można jądra arc-cosinusowe zgodnie z ich reprezentacją w formie całkowej, interpretować jako iloczyn skalarny wektorów cech przepuszczonych przez nieskończoną (w granicy m→∞) jednowarstwową sieć progową. Jest to cecha, która odróżnia jądra arc-cosinusowe od jąder wielomianowych czy RBF (gaussowskich). Rdzenie arc-cosinusowe posiadają jeszcze jedną ważną cechę, mianowicie nie mają żadnych parametrów wymagających określenia (np. na zbiorze walidacyjnym) takich jak np. szerokość w rdzeniach RBF.

Rdzenie można rozumieć jako nieliniowe mapowanie wejścia x do wektora cech Φ(x). Jednocześnie rdzeń jest iloczynem skalarnym w wytworzonej przestrzeni cech: k(x,y) = Φ(x)·Φ(y). Skoro ta funkcja odzwierciedla działanie jednowarstwowej sieci, to funkcja postaci:

inner product after ` successive applications of the nonlinear mapping

odzwierciedla przetwarzanie przez wielowarstwową sieć progową. Dla rdzeni arc-cosinusowych, zgodnie z analityczną postacią oszacowania całki, będzie wyglądała następująco:

the inductive step

gdzie θn(l) jest kątem pomiędzy projekcjami x i y do przestrzeni cech wytworzonej przez l-krotne złożenie. Jest to równanie rekurencyjne o podstawie (l=0) postaci:

basis of recursion

jednak zgodnie z (1) łatwe do wyliczenia. W równaniu rekurencyjnym, autorzy dla uproszczenia przyjęli ten sam rząd n (liczbę jednostek) w każdej warstwie, jednak w praktyce można stosować różne rzędy rdzeni dla różnych warstw.

 Multilayer neural networks modeled by the composition of arc-cosine kernels

Rys. z pracy (1) pokazujący modelowanie wielowarstwowej sieci neuronowej poprzez składanie rdzeni arc‑cosinusowych.

To, że składanie jąder arc-cosinusowych prowadzi do funkcji nie będącej członkiem oryginalnej rodziny, także jest specyficzną cechą tych funkcji odróżniającą je od innych rdzeni. Np. składanie rdzeni wielomianowych prowadzi do utworzenia nowego rdzenia wielomianowego wyższego rzędu, a w składanie jąder RBF spowoduje powstanie jądra RBF, ale o innej wariancji.

W pracy (1) autorzy rozszerzyli koncepcję składania jąder arc-cosinusowych o mnożenie i uśrednianie.

Multilayer neural networks modeled by the kernel multiplication

Wielowarstwowa sieć neuronowa modelowana przez mnożenie jąder arc-cosinusowych. Φn,m oznacza m-tą cechę wprowadzaną przez jądro arc-cosinusowe stopnia n. Różne kolory w warstwach pośrednich oznaczają różne nieliniowe odwzorowania generowane przez odpowiadające im jądra.

Multilayer neural networks modeled by the kernel averaging

Wielowarstwowa sieć neuronowa modelowana przez uśrednianie. Odwzorowania nieliniowe w różnych warstwach wielowarstwowego jądra (na górze) są łączone jako reprezentacja  pojedynczej cechy (na dole) przez uśrednianie rdzeni.

 

 

Jądra arc-cosinusowe, a Multilayer Kernel Machines

Powstanie Multilayer Kernel Machines było zainspirowane badaniami nad rdzeniami arc-cosinusowymi. Poniższy schemat porównuje dwa systemy: SVM z jądrami arc-cosinusowymi i MKMs.

Support vector machines vs multilayer kernel machines

Oba modele wykorzystują rdzenie arc-cosinusowe, w każdej warstwie do przetwarzania danych na wejściu, które są następnie przekazywane do następnej warstwy, aż do końcowej reprezentacji. W przypadku wielowymiarowych jąder arc-cosinusowych końcowe cechy są podawane na wejście klasyfikatora SVM. Ale w przypadku MKMs, miejsce mają dodatkowe operacje modyfikujące cechy na poziomie każdej warstwy. Przede wszystkim MKMs redukują wymiarowość reprezentacji jądrowej, co powoduje zmniejszenie szumu i bardziej zwartą reprezentację danych. Zmiana nieskończeniewymiarowej reprezentacji w skończeniewymiarową ma dwie zalety.

  • Po pierwsze, pozwala na ocenę związku cech z informacją dotyczącą klasyfikacji, dzięki czemu część cech może być usunięta. Na powyższym schemacie usuwanie cech symbolizowane jest przez okręgi rysowane przerywaną linią. W nieskończeniewymiarowej przestrzeni jądrowej (jak w przypadku modelu „rdzenie arc-cosinusowe + SVM”, po lewej stronie) taka ocena nie byłaby możliwa.
  • Po drugie, w przypadku MKMs na ostatniej warstwie można wykorzystać jakikolwiek klasyfikator, ponieważ dzięki redukcji wymiarowości, dane nie są wyrażone w przestrzeni jądrowej cech.

 

 

Podsumowanie

Multilayer Kernel Machines są to systemy wykorzystujące architekturę głęboką (wielowarstwową) oraz przekształcenia jądrowe do przestrzeni cech przy wykorzystaniu rdzeni arc-cosinusowych. Uczenie warstw ukrytych MKMs odbywa się dzięki połączeniu w każdej warstwie (kroku iteracji) nienadzorowanej metody redukcji wymiarowości (oryginalnie KPCA) oraz nadzorowanej metody wyboru cech (składowych o zawartości informacyjnej). Na wyjściu MKMs może znajdować się jeden z powszechnie stosowanych klasyfikatorów (oryginalnie LMNN z metryką Mahalanobisa).

Multilayer Kernel Machines zostały zainspirowane wielowarstwowymi jądrami arc-cosinusowymi. Badania nad MKMs, były motywowane tym, że architektura w postaci wielowarstwowych jąder arc-cosinusowych i klasyfikatora SVM na wyjściu, nie jest optymalna ponieważ  przekształcenia jądrowe w każdej warstwie mieszają cechy informacyjne z szumem.

W przypadku MKMs, dodanie w każdej warstwie redukcji wymiaru i selekcji wyłącznie cech informacyjnych pod kątem docelowej klasyfikacji, pozwala poddawać dalszemu przetwarzaniu przez kolejną warstwę, tylko wybrane cechy mające wkład w klasyfikację. Dzięki temu w każdej warstwie zachodzi jakby filtrowanie szumu (składowych nie związanych z problemem klasyfikacyjnym rozwiązywanym przez MKM).

Zgodnie z (6), badacze z Microsoftu  przedstawili prostszy sposób implementacji MKMs do rozumienia mowy (7), jednak w tym wpisie skoncentrowałem się na oryginalnej interpretacji definiującej MKMs w oparciu o rdzenie arc-cosinusowe.

 

Bibliografia

  1. Cho, Youngmin. Kernel Methods for Deep Learning. San Diego: University of California, 2012.
  2. Kernel Methods for Deep Learning. Youngmin Cho, Lawrence K. Saul. 2009. Neural Information Processing Systems. pp. 342-350.
  3. Schölkopf, Bernhard, Alexander Smola, and Klaus-Robert Müller. Nonlinear component analysis as a kernel eigenvalue problem. Neural computation 10.5. 1998, pp. 1299-1319.
  4. Guyon, I. and Elisseeff, A. An introduction to variable and feature selection. Journal of Machine Learning Research 3. 2003, pp. 1157–1182.
  5. Weinberger, K. Q. and Saul, L. K. Distance metric learning for large margin nearest neighbor classification. Journal of Machine Learning Research, 10. 2009, pp. 207–244.
  6. Wikipedia. [Online] 2017. https://en.wikipedia.org/wiki/Deep_learning#Multilayer_kernel_machine.
  7. L. Deng, G. Tur, X. He, and D. Hakkani-Tur. Use of Kernel Deep Convex Networks and End-To-End Learning for Spoken Language Understanding. Proc. IEEE Workshop on Spoken Language Technologies. 2012.

 

 

 

 

Na nowej stronie Panoramy HDR będę umieszczał panoramy HDR w wysokiej rozdzielczości oraz setupy sIBL. Zapraszam do pobierania.

HDR panorama sIBL Glade 01 renderHDR panorama sIBL Glade 01 spectrum

 

 

Criteria for detection of transiently evoked otoacoustic emissions in schoolchildren
Bartosz Trzaskowski, Edyta Pilka, W. Wiktor Jedrzejczak, Henryk Skarzynski
International Journal of Pediatric Otorhinolaryngology 79 (2015), pp. 1455-1461
http://www.sciencedirect.com/science/article/pii/S0165587615003043

Objectives
The aim was to compare, on the same dataset, existing detection criteria for transiently evoked otoacoustic emissions (TEOAEs) and to select those most suitable for use with school-aged children.

Methods
TEOAEs were recorded from the ears of 187 schoolchildren (age 8–10 years) using the Otodynamics ILO 292 system with a standard click stimulus of 80 dB peSPL. Pure tone audiometry and tympanometry were also conducted. Global and half-octave-band (at 1, 1.4, 2, 2.8, 4 kHz) values of OAE signal-to-noise ratio (SNR), reproducibility, and response level were determined. These parameters were used as criteria for detection of TEOAEs. In total, 21 criteria based on the literature and 3 new ones suggested by the authors were investigated.

Results
Pure tone audiometry and tympanometry screening generated an ear-based failure rate of 7.49%. For TEOAEs, there was a huge variability in failure rate depending on the criteria used. However, three criteria sets produced simultaneous values of sensitivity and specificity above 75%. The first of these criteria was based only on a global reproducibility threshold value above 50%; the second on certain global reproducibility and global response values; and the third involved exceeding a threshold of 50% band reproducibility. The two criteria sets with the best sensitivity were based on global reproducibility, response level, and signal-to-noise ratio (with different thresholds across frequency bands).

Conclusions
TEAOEs can be efficiently used to test the hearing of schoolchildren provided appropriate protocols and criteria sets are used. They are quick, repeatable, and simple to perform, even for nonaudiologically trained personnel. Criteria with high sensitivity (89%) were identified, but they had relatively high referral rates. This is not so much a problem in schoolchildren as it is in newborns because with schoolchildren pure tone audiometry and tympanometry can be performed immediately or at a follow-up session. Nevertheless, high referral rates lead to increased screening cost; for that reason, three less rigorous criteria with high values of both sensitivity and specificity (75% and above) are recommended.

Porównanie algorytmów detekcji fali V w badaniu słuchowych potencjałów wywołanych pnia mózgu Bartosz Trzaskowski
Nowa Audiofonologia 2015; 4(2):43-52

W pracy przedstawione i porównane zostały wybrane systemy automatycznej detekcji słuchowych potencjałów wywołanych pnia mózgu, opisane w czasopismach naukowych przez różne zespoły badawcze.

Otoacoustic Emissions before and after Listening to Music on a Personal Player
Bartosz Trzaskowski, W. Wiktor Jędrzejczak, Edyta Piłka, Magdalena Cieślicka, Henryk Skarżyński
Med Sci Monit 2014; 20:1426-1431
http://www.medscimonit.com/abstract/index/idArt/890747

The main aim of this study was to investigate whether listening to music on a CD player affects parameters of otoacoustic emissions. A group of 20 adults with normal hearing were tested. No statistically significant changes in either OAE parameters or PTA thresholds were found.

W czasopiśmie Otorynolaryngologia ukazała się praca przedstawiająca wyniki oceny jakości działania systemu automatycznej detekcji słuchowych potencjałów wywołanych pnia mózgu.

System automatycznej detekcji słuchowych potencjałów wywołanych pnia mózgu.II. Ocena działania systemu dla danych klinicznych.
Bartosz Trzaskowski, Krzysztof Kochanek, W. Wiktor Jędrzejczak, Adam Piłka, Henryk Skarżyński
Otorynolaryngologia, 2013; 12(4): 183-189
http://www.mediton.pl/PL/czasopisma/otorynolaryngologia/archiwum_12.4.0.html

W czasopiśmie Otorynolaryngologia opublikowana została praca:

System automatycznej detekcji słuchowych potencjałów wywołanych pnia mózgu. I. Opis i testowanie systemu
Bartosz Trzaskowski, W. Wiktor Jędrzejczak, Edyta Piłka, Krzysztof Kochanek, Henryk Skarżyński
Otorynolaryngologia, 2013; 12(3): 137-147
http://www.mediton.pl/PL/czasopisma/otorynolaryngologia/archiwum_12.3.0.html

W poprzednim wpisie przedstawiłem funkcję odpowiedzi aparatu Nikon D70 przy zapisie zdjęć w formacie JPG Fine. Tutaj chciałbym pokazać jak wygląda funkcja odpowiedzi w przypadku zapisu obrazu w formacie NEF, będącym natywnym formatem Nikona do zapisu danych surowych (RAW). Dane w tym formacie są zasadniczo nieprzetworzonym zapisem tego co zarejestrowała matryca aparatu. Pisząc nieprzetworzonym mam na myśli w tym przypadku brak przetworzenia w postaci konwersji gamma, czy balansu bieli. Jednak przetworzenie obrazu rejestrowanego na matrycy musi mieć miejsce już na etapie jego digitalizacji czyli przekształcenia informacji analogowej z matrycy (w postaci ładunku) na informację w postaci cyfrowej. Taka kwantyzacja ciągłej wartości wiąże się ze zmianą informacji. Ale jak donoszą niektórzy dociekliwi użytkownicy, Nikon miesza już nawet na tym etapie przetwarzając i zmieniając informację o obrazie.

W szczególności udowodniono, że zapis zdjęć w formacie NEF z bezstratną kompresją stosowany w aparacie Nikon D70, jest wbrew podawanym przez producenta informacjom stratny. W głównej mierze, strata informacji związana jest z obniżeniem rozdzielczości w jasnej części zakresu. Nikon D70 jest wyposażony w matrycę Sony ICX413AQ i 12-bitowy przetwornik analogowo-cyfrowy. Rozdzielczość 12-bitowa pozwala na zapis 2^12=4096 poziomów jasności, ale podczas konwersji do formatu RAW liczba poziomów jest limitowana do 683 i dopiero potem poddawana bezstratnej kompresji słownikowej podobnej do stosowanej w plikach ZIP. O ile kompresja rzeczywiście jest bezstratna to jednak informacja tracona jest na etapie kwantyzacji do 683 dyskretnych wartości jasności. Krzywa kwantyzacji jest zapisywana w plikach NEF. Kodowanie to zachowuje pełen zakres jasności, jednak zapis 12-bitowej informacji (4096 poziomów) w 683 dyskretnych wartościach powoduje zmniejszenie rozdzielczości w jasności. Kształt krzywej kwantyzacji, na początku liniowy, a następnie wzrastający z kwadratem, powoduje że rozdzielczość maleje wraz ze wzrostem jasności. Zastosowanie tego rodzaju konwersji miało prawdopodobnie na celu znaczne przyspieszenie (prawie o rząd wielkości) zapisu plików NEF przez aparat. Starsze modele (jak np D1H czy D100) potrafiły przetwarzać obraz przez 20-30 sekund wykonując kompresję przed zapisem. Obecne część nowych modeli aparatów posiada możliwość wyboru trybu zapisu plików NEF pomiędzy 12- i 14-bitowymi, oraz skompresowanymi i nieskompresowanymi.

Dodatkowo pewna utrata informacji w D70 związana jest z zastosowaniem optycznego filtra dolnoprzepustowego, mającego na celu usunięcie z obrazu składowych wysokoczęstotliwościowych. Matryca aparatu podczas zapisu obrazu niejako próbkuje scenę z pewną określoną częstotliwością zwaną częstotliwością próbkowania. Jeżeli w fotografowanej scenie występują jednak częstotliwości większe od połowy częstotliwości próbkowania to w rejestrowanym obrazie wystąpi zjawisko aliasingu, fotografom bądź grafikom znane pod nazwą efektu mory. Żeby przeciwdziałać temu zjawisku, producenci przez wiele lat umieszczali przed matrycą filtr rozmywający (usuwający wysokie częstotliwości) dostosowany do danej matrycy. To rozwiązanie gwarantowało, że częstotliwości wyższe niż dopuszczalne dla danej matrycy będą odfiltrowywane, a matryca zarejestruje tylko dozwolone częstotliwości. Łatwo też jest się domyślić jaka jest zależność częstotliwości próbkowania od rozmiaru matrycy (w megapikselach). Im większy rozmiar w MPx, tym większa jest częstotliwość próbkowania, czyli tym wyższe częstotliwości mogą być przez daną matrycę zarejestrowane bez ryzyka wystąpienia efektu aliasingu. Ostatnio, w związku postępem technologicznym i ciągłym wzrostem rozmiarów rejestrowanych obrazów, daje się zauważyć tendencję do usuwania tego filtru co bardzo pozytywnie wpływa na poprawę ostrości i zwiększenie szczegółowości zdjęć. Również Nikon w swoim najnowszym modelu D5300 zrezygnował z optycznego filtru dolnoprzepustowego uznając, że problem efektu mory nie jest przy rozmiarze zdjęcia 24 MPx już tak bardzo istotny.

Niemniej jednak, pomimo wspomnianych wyżej przekształceń, można by się spodziewać, że ponieważ w aparacie nie została wykonana kompresja gamma (jak w przypadku plików JPG), a matryca w Nikonie D70 to matryca CCD (dla której ładunek jest proporcjonalny do ekspozycji) to zależność odpowiedzi może być tutaj zbliżona do liniowej. I to przede wszystkim chciałem sprawdzić wykonując przedstawione poniżej obliczenia.

Przeanalizowałem dwie serie zdjęć wykonanych z różnymi ustawieniami ekspozycji. Zdjęcia były wykonane dokładnie tak samo jak opisałem w poprzednim artykule, z tą różnicą, że tym razem zapisane zostały w formacie NEF. Są to dokładnie te same sceny, sfotografowane w tych samych warunkach, ponieważ serie zdjęć NEF były wykonywane bezpośrednio przed seriami JPG.

Tak wyglądają serie zdjęć w formacie NEF:

Barckets. Series 1. NEF.

Barckets. Series 1. NEF.

Barckets. Series 2. NEF.

Barckets. Series 2. NEF.

Łatwo zauważyć, że w przypadku obydwu serii, zdjęcia w formacie NEF wyglądają na dużo ciemniejsze i o większym kontraście niż zdjęcia w formacie JPG z poprzedniego artykułu. Dzieje się tak dlatego, że zdjęcia w formacie NEF są w liniowej przestrzeni kolorów, a zdjęcia w formacie JPG w logarytmicznej. Nasz narząd wzroku podobnie jak inne nasze zmysły działa w sposób naturalny logarytmicznie. Zdjęcia w logarytmicznej przestrzeni kolorów (np wykonane przy pomocy tradycyjnej fotografii wykorzystującej kliszę fotograficzną) wyglądają dla nas naturalnie i fotorealistycznie. Dlatego aparat przed zapisem zdjęć w docelowym formacie JPG skompresował je do logarytmicznej przestrzeni kolorów wykonując przekształcenie potęgowania – tzw konwersję gamma. To spowodowało bardziej naturalnie dla nas wyglądający rozkład jasności pikseli w zdjęciach.

Faktyczna rozdzielczość bitowa w plikach NEF zapisywanych w aparacie Nikon D70 wynosi: log2(683)=9.42 bity. Żeby wykonać obliczenia przekształciłem pliki NEF w 8-bitowe pliki TIFF. W tym celu wykorzystałem napisany przez Dave Coffina program dcraw. Konwersja nie mogła wykonywać żadnych automatycznych zmian jasności (domyślnie dcraw rozciąga histogram w ten sposób, żeby 1% pikseli był wyświetlany jako biały), wykonywać konwersji gamma, repróbkować pikseli, ani ingerować w przestrzeń kolorów. Polecenie którego użyłem to: „dcraw -T -W -g 1 1 -v -j -o 0”. Zdjęcia z Nikona D70 w formacie NEF mają rozmiar 3039×2014 pikseli. Maska pikseli wybranych do obliczeń była utworzona identycznie jak w przypadku obrazów JPG, czyli tablica 30×20 pikseli równomiernie rozmieszczonych w obrazie z zachowaniem 5% marginesu od krawędzi obrazu.

Żeby poprawnie oszacować przy pomocy tej metody krzywą odpowiedzi dla np 14-bitowych plików NEF, dla serii 11 ekspozycji, zgodnie z zależnością: N*(P-1)>(Zmax-Zmin), trzeba by było wykorzystać w obliczeniach: N>(2^14-1)/(11-1) czyli przynajmniej 1639 pikseli. Tablica układu równań liniowych zajmowałaby wówczas w pamięci: (1639*11+2^14+1)*(2^14+1639)*16/1000/1000/1000 = 9.9 GB RAM. Oczywiście funkcja zaproponowana przez Debeveca i Malika musiałaby zostać zmodyfikowana w celu uwzględnienia 14-bitowej rozdzielczości: Zmax=2^14-1 i przesunięcia środka rozkładu do jasności Z=(2^14)/2-1.

Krzywe odpowiedzi dla plików NEF z aparatu Nikon D70:

Nikon D70 response curve. NEF

Nikon D70 response curve. NEF

Nikon D70 response curve. NEF

Nikon D70 response curve. NEF

Widać, że otrzymana krzywa odpowiedzi dla zapisu NEF ma bardziej stromy przebieg niż krzywa dla kodowania JPG z poprzedniego artykułu. Jednak trudno jest coś więcej powiedzieć, ponieważ na tych ilustracjach wynik jest przedstawiony na płaszczyźnie pół-logarytmicznej. Żeby dokładniej porównać obie funkcje mamy dwie możliwości: pokazać je na wykresie logarytmiczno-logarytmicznym lub na wykresie liniowo-liniowym.

Wykres o obu osiach liniowych dla serii 1:

Nikon D70 response curve. NEF. lin-lin

Nikon D70 response curve. NEF. lin-lin

Wykres dla obu osi logarytmicznych dla serii 1:

Nikon D70 response curve. NEF. log-log

Nikon D70 response curve. NEF. log-log

Na obu tych wykresach widać, że w przypadku zapisu w formacie NEF zależność aż do momentu wysycenia jest rzeczywiście liniowa.

Na wykresie log-log wątpliwości co do jakości wyniku oszacowania krzywej odpowiedzi, mogą budzić punkty zlokalizowane w lewej dolnej części wykresu. Duży rozrzut punktów wzdłuż osi X (logarytmiczna wartość ekspozycji) oraz duże odstępy pomiędzy kolejnymi wartościami na osi Y (logarytmiczna wartość jasności pikseli). Kwestia dużych odstępów wzdłuż osi Y stanie się jasna gdy tylko zdamy sobie sprawę co dokładnie powoduje transformacja skali liniowej do logarytmicznej. Skala logarytmiczna sprawia, że niskie wartości są na osi rozciągane, a wyższe coraz bardziej kompresowane. Czyli duże duże odstępy w tym rejonie to naturalna cecha przekształcenia wartości w skali liniowej do logarytmicznej. Możemy policzyć, że do połowy tego wykresu czyli do wartości 3 na osi Y, znajduje się exp(3)=20 pikseli spośród wszystkich 256. Czyli w tej skali, połowę wykresu zajmuje niecałe 8% wszystkich możliwych wartości pikseli. W skali liniowej te wartości zajmowałyby znikomą powierzchnię w lewym dolnym rogu płaszczyzny wykresu. A kwestię rozrzutu wzdłuż osi X można wyjaśnić uwzględniając fakt, że matryce CCD posiadają naturalną tendencję do rejestrowania szumu przy małych wartości ekspozycji, a połowę wykresu zajmują właśnie piksele dla najniższych 20 wartości ekspozycji. Dlatego też w procesie estymacji krzywej odpowiedzi stosowana był funkcja zmniejszająca wagę tych wartości.

Ale jak wygląda na tych wykresach zależność krzywej odpowiedzi dla zapisów JPG?
Wykres lin-lin:

Nikon D70 response curve. JPG. lin-lin

Nikon D70 response curve. JPG. lin-lin

Wykres log-log:

Nikon D70 response curve. JPG. log-log

Nikon D70 response curve. JPG. log-log

Na obu wykresach dla formatu JPEG widać dla krzywych każdego koloru charakterystyczną nieliniową zależność przypominającą transformację gamma.

Z powyższych dwóch artykułów i przedstawionych wyników można wyciągnąć wnioski dotyczące aparatu Nikon D70:

  • zapis obrazów w formacie JPEG, wiąże się z zastosowaniem nieliniowego przekształcenia o profilu pokazanym na powyższych ilustracjach
  • zapis w formacie NEF i wykonanie płaskiej konwersji do 8-bitowych obrazów TIFF w programie dcraw, daje obrazy z liniową (w pewnym zakresie) funkcją odpowiedzi.

W 1997 roku Debevec i Malik opublikowali interesującą pracę. Przedstawili w niej między innymi metodę pozwalającą na oszacowanie funkcji odpowiedzi systemu powstawania obrazu w oparciu o serię zdjęć wykonanych przy różnych wartościach ekspozycji. Metoda ta polega na znalezieniu funkcji minimalizującej w sensie metody najmniejszych kwadratów błąd rozwiązania układu równań liniowych wiążących wartość jasności pikseli obrazu z ekspozycją.

W celu określenia funkcji odpowiedzi cyfrowej lustrzanki Nikon D70 dla zdjęć zapisywanych przez aparat w formacie JPG wykonałem trzy serie ujęć. Każda seria składała się z jedenastu zdjęć wykonywanych dla kolejnych ustawień ekspozycji z krokiem 1EV w przedziale [-5EV, 5EV] względem właściwej wartości nastawu.

Do zdjęć zostały wybrane sceny nie zawierające elementów ruchomych i neutralne kolorystycznie. Cały kadr zawierał obiekty o szarych kolorach bez elementów o dużej saturacji. Fotografowane sceny zawierały rejony kontrastujące w jasności aby zapewnić szeroki rozkład punktów w przestrzeni [ekspozycja, jasność piksela] dla pojedynczych wartości ekspozycji. Miało to na celu poprawę jakości dopasowywania do siebie krzywych dla pojedynczych pikseli w trakcie obliczeń metodą najmniejszych kwadratów.

Przykładowe dwie serie zdjęć użyte do obliczeń przedstawione są na rysunkach poniżej.

Seria 1:

Brackets. Series 1. JPG

Brackets. Series 1. JPG

Seria 2:

Brackets. Series 2. JPG

Brackets. Series 2. JPG

Zdjęcia były wykonywane przy użyciu statywu, kolejno jedno po drugim, w odstępach czasu najkrótszych na jakie pozwalał aparat kontrolowany za pomocą kabla USB OTG przez program zdalnie wyzwalający migawkę zainstalowany na smartfonie. Wykonanie zdjęć w możliwie najkrótszym czasie było ważne żeby zapobiec zmianie warunków oświetleniowych podczas fotografowania. Wszystkie serie zdjęć zostały zrobione w pochmurny dzień przy słońcu całkowicie zasłoniętym chmurami. Zdjęcia wykonywano zachowując stałą liczbę przesłony, uzyskując zmienną wartość ekspozycji operując czasem otwarcia migawki. Pozwoliło to uniknąć problemów związanych ze zmianą głębi ostrości i winietowania. W celu zmniejszenia wkładu szumu z matrycy w rejonach o niskiej jasności, zdjęcia wykonywano przy najniższej możliwej wartości czułości 200 ISO. Wielkość zdjęć ustawiono na maksymalną.

Jako czasy otwarcia migawki uwzględnione w obliczeniach użyte zostały wartości wyświetlane przez aparat czyli np 1/500, 1/250 czy 1/125 s, pomimo tego, że Debevec i Malik sugerowali, że czasy będące wynikiem potęgowania liczby 2 (odpowiednio: 1/512, 1/256 czy 1/128 s) są bardziej zgodne z rzeczywistym czasem ekspozycji.

Z punktu widzenia stosunku jakości do wydajności obliczeń istotny jest wybór liczby pikseli obrazu dla których obliczenia będą wykonywane. Nikon D70 posiada 6 MPx matrycą, a największe zdjęcia zapisywane przez aparat w jakości JPG Fine są w rozmiarze 3008×2000 px. Ponieważ układ równań liniowych minimalizujących błąd znalezienia funkcji odpowiedzi jest rzędu N*P + Zmax-Zmin to wykorzystanie wszystkich 6.016.000 pikseli, przy serii 11 ekspozycji, dla obrazów 8-bit, wymagałoby utworzenia w pamięci tablicy o rozmiarze ok (3008*2000*11+2^8+1)*(2^8+3008*2000)*8/1000/1000/1000=3,185,066 GB pamięci RAM. Być może w przyszłości będzie można wykonywać takie obliczenia na telefonie komórkowym jednak obecnie nie są one (wg wiedzy autora) możliwe do przeprowadzenia. W rzeczywistości, żeby określić ten układ równań wystarczy uwzględnić N pikseli spełniających nierówność: N*(P-1)>(Zmax-Zmin); gdzie N – oznacza liczbę pikseli; P – liczbę ekspozycji; Zmax-Zmin to maksymalna różnica w jasności pikseli. Przy 11 ekspozycjach dla obrazu 8-bitowego, wystarczającą liczbą pikseli do obliczeń będzie: N>(2^8-1)/(11-1) czyli N>=26.

Znając wymaganą minimalna liczbę pikseli do obliczenia krzywej odpowiedzi, pozostaje jeszcze określenie sposobu próbkowania obrazu. W pracy z 1997 roku Debevec i Malik ręcznie określali które piksele miały być uwzględnione w obliczeniach. Ja zdecydowałem się na wybranie do obliczeń tablicy 600 pikseli (30×20) rozmieszczonych w jednorodnych odstępach od siebie z zachowaniem 5% marginesu od krawędzi obrazu. Ze względu na to że liczba pikseli była o rząd wielkości większa niż wymagana, układ charakteryzował się dużą redundancją, a w pamięci zajmował:
(30*20*11+2^8+1)*(2^8+30*20)*8/1000/1000=46.96MB RAM. Obliczenia na typowych komputerach były kwestią sekund.

Poniżej pokazane są wykresy otrzymanych funkcji odpowiedzi Nikona D70 dla zapisu JPG Fine dla trzech kolorów. W celu zmniejszenia wpływu skrajnych wartości jasności na oszacowanie funkcji, zastosowane zostało okno trójkątne jako funkcja określająca wagę jasności pikseli. Na ilustracjach przedstawione są także punkty w przestrzeni [ekspozycja, wartość piksela] które posłużyły do estymacji funkcji odpowiedzi.

Krzywa odpowiedzi aparatu Nikon D70 przy zapisie w formacie JPEG dla serii 1:

Nikon D70 response curve. JPG

Nikon D70 response curve. JPG

Krzywa odpowiedzi aparatu Nikon D70 przy zapisie w formacie JPEG dla serii 2:

Nikon D70 response curve. JPG

Nikon D70 response curve. JPG

Otrzymane krzywe są praktycznie identyczne. Przedstawiają poszukiwaną funkcję odpowiedzi aparatu.