Joker TV, manufacturing

Joker TV, manufacturing

Hello All, This post dedicated to Joker TV manufacturing process. Technical and financial aspects will be covered. For Joker TV hardware description please check this post. Spoiler: cost of one "Joker TV stand-alone" can be as low as $58.52 (if we order 1000 pcs.). For more information please check calculations below. Cost of manufacturing I have asked several Chinese factories to prepare quotation for first Joker TV batch. Say, 100 pcs and 1000 pcs. Following factories sent quotations: Here is the table with received quotations (all costs in USD): Final product Here is a photo of final product. For stand-alone version extruded aluminum enclosure used.   How "Joker TV stand-alone" actually looks like BOM cost (per 1 pcs), USD A bill of materials (BOM) is the raw cost of electronics components required to assembly 1 pcs of Joker TV module. Totally 87 items used. This table contain BOM quotation (Creat Electronic Group Co. quote used as example): PCB (per 1 pcs), USD The cost of bare printed circuit board (PCB). More info about...
Read More
Joker TV, Linux/OSx/Windows drivers and apps

Joker TV, Linux/OSx/Windows drivers and apps

Hello All, Compile driver and apps from sources If you are looking for an already compiled (binary) drivers and apps please use this link. Compilation steps for Linux and OSx git clone https://github.com/aospan/libjokertv cd libjokertv mkdir build cd build cmake ../ make Note: for OSx you should install the required packages (cmake, etc) using brew framework. Compilation steps for Windows OS You should install MSYS2 framework first. git clone https://github.com/aospan/libjokertv cd libjokertv mkdir build cd build cmake -G"MSYS Makefiles" ../ make Software description Actually there is no special kernel-level driver - I'm using libusb-1.0 library to access USB device. So, to use "Joker TV" you don't need to install drivers, just run application. This helps users to eliminate the driver installation steps and reduce complexity of their "Joker TV" usage. The Tuner and Demodulators part is copied from Linux kernel media source code. A separate folder linux contains this code. Actually this code does not require any special changes to compile in a user-level environment. Potentially we can be faced with a "diverged" code but I'll do my best to keep this code in sync...
Read More
Schematic and PCB share

Schematic and PCB share

Hello All, Today I want to talk about Schematic and PCB layout share. Joker Eco-System is not only Open Source, but Open Hardware too, and I want to start with the most ready module first - "Joker TV" (stand alone version). I have started an evaluation of Upverter project for Schematic&PCB sharing. You can open this link (opens in new tab) to observe "Joker TV" Schematic&PCB. Be patient though, as it can take about 2 minutes to load and display the project. After all you should see the PCB layout like on the screenshot below. You can also use the top menu to switch to a schematic view. "Joker TV" Schematic and PCB "Joker TV" actual hardware (Rev. 1.0) License Schematic and PCB layout shared under Creative Commons Attribution-ShareAlike 4.0 (CC BY-SA 4.0) license. This license allows to remix, transform, and build upon the material for any purpose, even commercially. If you remix, transform, or build upon the material, you must distribute your contributions under the same...
Read More
Joker TV, FPGA Verilog/VHDL code

Joker TV, FPGA Verilog/VHDL code

Hello All, I have used Altera (now Intel) FPGA. Part number EP4CE22F17C8N. For hardware description please check out this post. Project prepared and compiled in Intel Quartus Prime Lite Edition 16.1. This is the free version and it can be downloaded here. Building FPGA firmware Here are the step-by-step instructions for cooking up the firmware: Checkout the source code from github: git checkout https://github.com/aospan/joker-tv-fpga Open the project file joker_tv/joker_tv.qpf in Quartus software. Choose "Processing->Start Compilation". Choose "File -> Convert Programming Files -> Open Conversion Setup Data ...". Then choose file joker_tv.cof and press "Generate" button. File joker_tv.jic should be generated. To generate joker_tv.bin file you should execute joker_tv/generate_bin_fw.sh script. After compilation you can program firmware into SPI flash on "Joker TV" device. There are two ways to do this. Programming with JTAG This method is used by developers or by end-users for debricking device if the firmware is faulty. You need a USB byte-blaster in order to do this. It can be ordered on eBay for about $5. Steps to update FPGA firmware using JTAG Connect...
Read More
First look at Movidius Neural Compute Stick

First look at Movidius Neural Compute Stick

Today I have received neural network inference hardware accelerator Movidius Neural Compute Stick (USB stick). Movidius is now part of Intel (acquired by Intel in 2016).   Movidius Neural Compute Stick Performance testing SDK installation is smooth under Ubuntu 16.04. The SDK also contains script to fetch caffe-models from the internet. The following models are available by default: Age, AlexNet, Gender, GoogLeNet, SqueezeNet.  I have compiled examples written in C (located in ncapi/c_examples/ folder) and did some checks. All interactions with hardware are made at user-level using libusb (looks like libmvnc.so built on top of libusb) and doesn’t require any kernel-level drivers. C examples allows us to do “image classification”. Now, let’s do some tests. Here is a gender detection process: time ./c_examples/ncs-fullcheck -c100 ./networks/Gender/ ~/mona-lisa.jpg OpenDevice 2 succeeded Graph allocated Female (99.51%) Male (0.48%) Inference time: 237.392059 ms, total time 241.811815 ms ... Inference time: 234.574295 ms, total time 238.665898 ms Deallocate graph, rc=0 Device closed, rc=0 real 0m26.086s user 0m1.051s sys 0m0.071s As we can see Mona Lisa’s gender is accurately detected (99.51% Female). The detection...
Read More
Speech recognition and Speech synthesis using neural networks

Speech recognition and Speech synthesis using neural networks

Hello All, Today I want to show you how Joker can be used for speech recognition and speech synthesis using neural networks and Joker Empathy module. I have brewed two docker containers for super simple usage. Just one command required to run neural network and obtain the results. This tutorial should work on any Linux and OSx . No GPU required, only CPU. This funny video shows voice interaction with Joker: https://youtu.be/mnw7q0VXYTs Speech recognition (speech-to-text) This service based on Kaldi ASR project. Kaldi's 'chain' models (type of DNN-HMM model) used. Actual trained model released by api.ai team. Model contains 127847 words. Compare this number with Oxford English Dictionary which contains 171,476 words or average English-speaking adult knows between 20,000 and 30,000 words. And need to say that this model shows 11.2% word error rate (WER). This is very good results ! "Old" speech recognition methods (GMM-HMM) can show only 21+% WER. To run test just issue following command in console: docker run -it aospan/stt builtin file will be processed and output should contain...
Read More
Neural network scene understanding on Joker

Neural network scene understanding on Joker

Hello All, Today I want to show you how Joker with SegNet project can be used for scene understanding (in AI world it's called "semantic segmentation"). We will take picture of our room and AI will show us pixels belongs for different objects (like "table", "chair", etc). This tutorial should work on any Linux distribution (CoreOS, Debian, RedHat, etc). No GPU required, only CPU. I have brewed ready to use docker image, just issue following command in console: docker run --name segnet --rm -it -v `pwd`/out:/workspace/out aospan/docker-segnet you should see following output if input images processed successfully: Grabbed camera frame in 12.1850967407 ms Resized image in 33.4980487823 ms Executed SegNet in 11251.4910698 ms Processed results in 2.71892547607 ms Input and processed images located in folder ./out. Let's take a look at this images: Left image is input and right is output annotated image. AI defined what object this pixel related for and mark with different colors. Now you can prepare your own images and make experiments with AI semantic segmentation. Input images should be named strictly as...
Read More
Neural network image classification on Joker

Neural network image classification on Joker

Hello All, Today I want to show you how Joker can be used for neural network image classification with Caffe project. Caffe is a deep learning framework. This tutorial should work on any Linux distribution (CoreOS, Debian, RedHat, etc). For simplify overall process I have created Docker container with Caffe (built from sources) and already trained "BVLC CaffeNet Model" (based on ImageNet). Who wants to dive deeper can check training instructions here. Let’s do some console work. Issue following command to pull and run docker container with required software: docker run --name ai -p 5000:5000 aospan/caffe-cpu python /opt/caffe/examples/web_demo/app.py After container startup you can go to web-interface: http://joker:5000 and check how neural network classify your images. Let's try to check how our neural network can classify images. I will make some photos from my smartphone and will check:   hmm, looks good ! Our neural network found tennis ball on the image (i have marked results by red arrow). Let's try one more: Bicycle was found ! Try to make photos by...
Read More
Video decode and encode on Joker using Intel GPU

Video decode and encode on Joker using Intel GPU

Hello All, Today I want to show you how Joker can be used for video decode and encode (transcoding) using Intel GPU (QuickSync technology). For better performance we will use Intel GPU (graphics processing units). In this case CPU is not loaded with video processing tasks. This tutorial should work on any Linux distribution (CoreOS, Debian, RedHat, etc). Let's do some console work. Issue following command to pull and run docker container with required software: docker run --privileged --name gstreamer -v /dev:/dev -it aospan/docker-gstreamer-vaapi /bin/bash grab some coffee and wait. After all you will see following prompt: root@dbbc5ddfc092:/# now you can issue command for transcode sample video file: /opt/transode-file.sh this command takes sample file from  /opt/moscow24.ts and change video codec from MPEG2 (resolution:720x576) to H264 (resolution:720x576) and change audio from MP2 to AAC. It should take about 25-30 seconds to transcode 100 seconds file. Now you can change /opt/transode-file.sh script and do your own experiments with video transcoding on GPU. CPU and GPU load monitoring Open new terminal connection to Joker and issue following command: docker exec -it...
Read More