react-native-caffe2 is a library made in order to bring deep learning to mobile very fast. The main vision is to implement heavily used deep learning solution (image classification, style transfer, text generation, ..) with high-level methods in React Native to make possible for anyone to create fully fonctional deep learning applications for Android and iOS very fast.
$ npm install react-native-caffe2 --save
$ react-native link react-native-caffe2
Libraries
β Add Files to [your project's name]
node_modules
β react-native-caffe2
and add RNCaffe2.xcodeproj
libRNCaffe2.a
to your project's Build Phases
β Link Binary With Libraries
Cmd+R
)<Frameworks used have to be manually linked to your project.
Add Files to
, pick Copy items of needed
option../node_modules/react-native-caffe2/ios/Frameworks/
opencv2.framework
Build Phases
β Link Binary With Libraries
CoreMedia.framework
AssetsLibrary.framework
CoreVideo.framework
One function is currently implemented: classifyImage
The arguments are:
imageName
: Name of the image to classifyinitModel
: protobuf file for initialization modelpredictModel
: protobuf file for predicition modelclasses
: Array of classes to for predictioncallback
: Callback method called with predicted classUnfortunately, all files (protobuf, image) must be recognized from ios code. Therefore every asset has to be put in the xcode project. In order to add an asset to the xcode project, you simply have to add the file in from the XCode IDE.
index.ios.js
import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View
} from 'react-native';
import RNCaffe2 from 'react-native-caffe2';
export default class toast extends Component {
constructor(props) {
super(props);
this.state = {label: 'react-native-caffe2'};
}
render() {
var json = require('./classes');
RNCaffe2.classifyImage( 'dog.jpg',
'exec_net',
'predict_net',
json.classes,
(error, label) => {
if (error) {
console.error(error);
} else {
this.setState({label: label});
}
});
return (
<View style={styles.container}>
<Text style={styles.welcome}>
{this.state.label}
</Text>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
});
AppRegistry.registerComponent('appName', () => appName);