EM021 » Evolutive skin disease detection using partial reconfiguration
Introduction: Each year an enormous number of people die from skin diseases.
Based on BSD Work Group and the American Academy of Dermatology (AAD) there is 85 million US patient were diagnosed with at least one skin disease in 2013 (25% of the US population).
According to a study in 2016 from the “French society of dermatology” 16 million French suffer from a skin disease, and 80% of those suffer from more than 1 pathology which makes 24% of the French population.
Referring to the article “The burden of skin disease in the United States” in the journal of the AAD, 24 different categories of skin pathologies can be identified each one including at least 4 diseases.
Problematic: Using this approximation, there is a minimum of 100 diseases. With this huge number of diseases, it implies prognostic more difficult to establish for doctors. Furthermore, patients who have these types of disease, they feel shy. Furthermore, patients who have these types of disease, they feel shy. As well as, psychological problems and stress.
As presented earlier, an enormous number of people suffer from skin disease around the world. The goal of this project helps each patient to detect the type of his skin disease such as "Acne", "Eczema" or "Melanoma", etc.
Purpose: At this point, the early detection of any skin disease might reduce the death’s risk by assuring the appropriate diagnosis, in order to provide the right treatment. Clearly, we intend to create a system that predict as soon as possible the type of disease using Neural Networks (NNs) as contemporary technology.
Here comes the interest of autonomous systems to help doctors around the world to identify accurately skin diseases.
A faster diagnosis may help the patients in avoiding large treatment durations.
Contribution: we are looking forward to implement our design on a platform that provides an AI engine and peripherals to communicate with external hardware devices (Display, Camera, etc.). Therefore, we will use the FPGA "OpenVINO" Starter Kit to implement our proposal design. We chose this type of FPGA because it provides a crucial platform for machine learning and more specifically for deep learning.
Before presenting the high-level architecture and the detailed description, we will present a state of art of the "Skin disease detection" implemented on either FPGA and/or processors.
STATE OF ART:
In the literature, we can find different ways to detect these diseases. To cite a few, computer vision algorithms, deep learning algorithms and more precisely Convolutional Neural Networks (CNN). However, in some cases the implementation of these algorithms remained at the software level, in other cases there was a hardware implementation targeting mostly low power.
A project targeting skin cancer detection in  used a CNN built from scratch in order to predict if a mole is malign or benign. This CNN trained on an NVIDIA GPU and then integrated into a web and iOS application, with no motivation to accelerate its execution on these platforms. A similar project implemented a CNN to detect if skin cancer is malign . This CNN proved to be the most accurate compared to SVM, Random Forest, etc. likewise, this has no hardware implementation, focusing only on accuracy.
The authors in  implemented SVM classifier on FPGA in order to detect Melanoma disease for a primary aid. The SVM is fully implemented on a hybrid Zync SoC, with an ample focus on reaching low power while using low hardware resources. However, there was no information on the obtained accuracy, mentioning only: “accuracy rate could be preserved without any loss from the hardware implementation” . It is worth mentioning that CNN was not the targeted application.
There is a huge variety of skin diseases, which makes the diagnosis harder for the dermatologists. Therefore, having a tool that gives the first idea about the disease’s type can help in saving the patient’s time as well as the doctor’s time.
Target users: This project targets all people who have skin disease, where approximately 85 percent of them between 12 and 24 years old experience at least minor acne .
D. Soto, «GitHub,» 4 December 2017. [Online]. Available: https://github.com/dasoto/skincancer.
P. Iramani, «GitHub,» 9 August 2018. [Online]. Available: https://github.com/iramaniparth/Skin-Lesion-Analysis-for-Melanoma-Detection. [Access in 21th of June 2019].
S. Afifi, H. GholamHosseini et R. Sinha, «A Low-Cost FPGA-based SVM Classifier for Melanoma Detection,» IEEE EMBS Conference on Biomedical Engineering and Sciences, pp. 631-636, 2016.
Bhate K, Williams HC. Epidemiology of acne vulgaris. The British journal of dermatology 2013;168:474-85.
Note: This project only detects/predicts the type of the disease but detecting if it is Carcinogen, this is not in the scope of the project.
In this section, we present a detailed description containing the block diagram of the system behavior.
In figure 1, we depict INTEL FPGA board so-called "OpenVINO" Starter Kit which will be used to implement our proposed project. We chose this type of FPGA because it provides a unified software strategy that allows building applications on common interfaces, and then deploying these applications to the ideal processing platform.
Figure 1: System architecture
Briefly, input data to OpenVINO starter kit could be either by taking pictures using a mobile phone or by a real-time connected camera as shown in fig. 1. In the first case, users are able to send pictures of skin disease through WIFI/Bluetooth connections, and the output can be visualized using a display connected directly to the board or using the mobile application. These input and output peripherals can be connected to Arduino UNO. This one is already implemented on the starter kit and connected directly to the Intel FPGA Cyclone V. We will leverage the Artificial Intelligence (AI) engines that are implemented on the FPGA to predict the skin disease type with the best performance in terms of (response time, power consumption, etc.).
Figure 2 describes the configuration flow, which will be used during development. Intel provides best tools to implement neural network using its model optimizer and inference engine. As input data for the toolkit, a pre-trained model on Tensorflow will be used. Using Tensorflow framework, we will train our model with a dataset of 4 classes (“Acne”, “Eczema», «Melanoma”, “Normal (no disease)”). This framework creates “.pb” file extension that will be used as input for Model Optimizer (MO) hence the last will output 2 files (“.xml” and “.bin”). API framework will be used for inference.
Figure 2: Software flow
In this project, we intend to create an IP block such as CNN or (Spiking NN) which will be considered as an added value to the results obtained using the OpenVINO toolkit. Therefore, we will leverage the dynamic partial reconfiguration to reconfigure a partial block (RAM block that contains NN weights) with different partial reconfiguration module (PRM). The difference between these partial blocks is that each one has a different value of the neural network weights. Figure 3 illustrates the hardware part. As inputs for the custom Neural Network, we have the image data. Predicted value after processing the image using the Inference Engine (IE) and the NN weights reside in RAM. The purpose of creating a custom NN with the predicted value (using IE) is to figure out accurately the disease.
Figure 3: Hardware Architecture
The figure below illustrates the flowchart of system behavior at a high level.
Figure 4: Flowchart for the system behavior
Intel OpenVINO starter kit is the best choice to implement our system. This system is based on deep learning. Therefore, we intend to get higher performance in terms of latency and power consumption using Intel FPGA compared to GPU or any other processor.
Again, our system will be tested on GPU first (we started to train the neural network), then we will use FPGA and the embedded processor to compare the performance.
Also, we will use dynamic partial reconfiguration where we will be able to change, on the fly, the weights of the custom NN as described previously.
As we discussed before, we intend to use the Neural Network for health application to help doctors to find the diagnosis as soon as possible. Nowadays, this technology is only in the last several decades where they have become a major part of artificial intelligence.
The main purpose of our design is to develop a system to detect skin disease using Neural Network and leveraging the toolkit and the hardware provided by INTEL.
We will develop on openVINO to use the model optimizer as well as the inference engine tools. OpenVINO with the different external peripherals allows connecting different part such as cameras, display, etc.
To train our model, we will use TensorFlow framework.