2.0.0 • Published 3 months ago

expo-coreml v2.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
3 months ago

expo-coreml


  • Use Hermes Engine
  • Create custom expo dev build to use in development

  • Object Detection (VNRecognizedObjectObservation)
  • Classify Object (VNClassificationObservation)

Installation

yarn add expo-coreml
npm install expo-coreml

Usage

import * as ExpoCoreml from 'expo-coreml';
import * as FileSystem from "expo-file-system";
import * as ImagePicker from 'expo-image-picker';

export default function MyCompnent(){

    const compileModel = async () => {
        const compiledUrl = await ExpoCoreml.compileModel("fileURI of .mlmodel");
        if(!!url){
            await FileSystem.copyAsync({from: url, to: FileSystem.documentDirectory + 'myCompiledModel.mlmodelc'});
            await FileSystem.deleteAsync(url);
        }
    }

    // Detection
    const handlePredict = async () => {

        const images = await ImagePicker.launchImageLibraryAsync({
            quality: 1
        });
        if(!!images.assets){
            for (const image of images.assets){
                // console.log(image.uri)
                const res = await ExpoCoreml.predict(
                    FileSystem.documentDirectory + 'myCompiledModel.mlmodelc',
                    image.uri,
                );

                const refactorSize = res.map(item => {
                    return {
                        ...item,
                        boundingBox: {
                            x: item?.boundingBox?.x * image.width,
                            y: (1 - (item?.boundingBox?.y + item?.boundingBox?.height)) * img.height,
                            width: item?.boundingBox?.width * image.width,
                            height: item?.boundingBox?.height * image.height
                        }
                    }
                });

                console.log(refactorSize);
                console.log("Totals => ", refactorSize.length);

            }
        }
    }
    
    // Classification
    const handleClassify = async () => {

        const images = await ImagePicker.launchImageLibraryAsync({
            quality: 1
        });
        if(!!images.assets){
            for (const image of images.assets){
                
                const res = await ExpoCoreml.classify(
                    FileSystem.documentDirectory + 'modelClassify.mlmodelc',
                    image.uri,
                );

                console.log(res);

            }
        }
    }

    return (
        <View/>
    );
}
2.0.0

3 months ago

1.1.0

5 months ago

1.0.0

12 months ago