react-native-executorch 0.3.3 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (343) hide show
  1. package/README.md +30 -13
  2. package/android/build.gradle +1 -1
  3. package/android/src/main/java/com/swmansion/rnexecutorch/ETModule.kt +1 -2
  4. package/android/src/main/java/com/swmansion/rnexecutorch/ImageSegmentation.kt +58 -0
  5. package/android/src/main/java/com/swmansion/rnexecutorch/LLM.kt +13 -49
  6. package/android/src/main/java/com/swmansion/rnexecutorch/RnExecutorchPackage.kt +37 -0
  7. package/android/src/main/java/com/swmansion/rnexecutorch/StyleTransfer.kt +1 -1
  8. package/android/src/main/java/com/swmansion/rnexecutorch/TextEmbeddings.kt +51 -0
  9. package/android/src/main/java/com/swmansion/rnexecutorch/Tokenizer.kt +86 -0
  10. package/android/src/main/java/com/swmansion/rnexecutorch/models/BaseModel.kt +3 -4
  11. package/android/src/main/java/com/swmansion/rnexecutorch/models/TextEmbeddings/TextEmbeddingsModel.kt +48 -0
  12. package/android/src/main/java/com/swmansion/rnexecutorch/models/TextEmbeddings/TextEmbeddingsUtils.kt +37 -0
  13. package/android/src/main/java/com/swmansion/rnexecutorch/models/classification/ClassificationModel.kt +1 -0
  14. package/android/src/main/java/com/swmansion/rnexecutorch/models/imageSegmentation/Constants.kt +26 -0
  15. package/android/src/main/java/com/swmansion/rnexecutorch/models/imageSegmentation/ImageSegmentationModel.kt +142 -0
  16. package/android/src/main/java/com/swmansion/rnexecutorch/models/ocr/utils/RecognizerUtils.kt +3 -0
  17. package/android/src/main/java/com/swmansion/rnexecutorch/models/{StyleTransferModel.kt → styleTransfer/StyleTransferModel.kt} +2 -1
  18. package/android/src/main/java/com/swmansion/rnexecutorch/utils/ArrayUtils.kt +0 -8
  19. package/android/src/main/java/com/swmansion/rnexecutorch/{models/classification/Utils.kt → utils/Numerical.kt} +1 -1
  20. package/ios/ExecutorchLib.xcframework/Info.plist +4 -4
  21. package/ios/ExecutorchLib.xcframework/ios-arm64/ExecutorchLib.framework/ExecutorchLib +0 -0
  22. package/ios/ExecutorchLib.xcframework/ios-arm64/ExecutorchLib.framework/Headers/HuggingFaceTokenizer.h +14 -0
  23. package/ios/ExecutorchLib.xcframework/ios-arm64/ExecutorchLib.framework/Headers/LLaMARunner.h +1 -23
  24. package/ios/ExecutorchLib.xcframework/ios-arm64/ExecutorchLib.framework/Info.plist +0 -0
  25. package/ios/ExecutorchLib.xcframework/ios-arm64-simulator/ExecutorchLib.framework/ExecutorchLib +0 -0
  26. package/ios/ExecutorchLib.xcframework/ios-arm64-simulator/ExecutorchLib.framework/Headers/HuggingFaceTokenizer.h +14 -0
  27. package/ios/ExecutorchLib.xcframework/ios-arm64-simulator/ExecutorchLib.framework/Headers/LLaMARunner.h +1 -23
  28. package/ios/ExecutorchLib.xcframework/ios-arm64-simulator/ExecutorchLib.framework/Info.plist +0 -0
  29. package/ios/RnExecutorch/Classification.mm +15 -18
  30. package/ios/RnExecutorch/ETModule.mm +6 -5
  31. package/ios/RnExecutorch/ImageSegmentation.h +5 -0
  32. package/ios/RnExecutorch/ImageSegmentation.mm +60 -0
  33. package/ios/RnExecutorch/LLM.mm +12 -53
  34. package/ios/RnExecutorch/OCR.mm +39 -43
  35. package/ios/RnExecutorch/ObjectDetection.mm +20 -20
  36. package/ios/RnExecutorch/SpeechToText.mm +6 -7
  37. package/ios/RnExecutorch/StyleTransfer.mm +16 -19
  38. package/ios/RnExecutorch/TextEmbeddings.h +5 -0
  39. package/ios/RnExecutorch/TextEmbeddings.mm +62 -0
  40. package/ios/RnExecutorch/Tokenizer.h +5 -0
  41. package/ios/RnExecutorch/Tokenizer.mm +83 -0
  42. package/ios/RnExecutorch/VerticalOCR.mm +36 -36
  43. package/ios/RnExecutorch/models/BaseModel.h +2 -5
  44. package/ios/RnExecutorch/models/BaseModel.mm +5 -15
  45. package/ios/RnExecutorch/models/classification/ClassificationModel.mm +2 -3
  46. package/ios/RnExecutorch/models/classification/Constants.mm +0 -1
  47. package/ios/RnExecutorch/models/image_segmentation/Constants.h +4 -0
  48. package/ios/RnExecutorch/models/image_segmentation/Constants.mm +8 -0
  49. package/ios/RnExecutorch/models/image_segmentation/ImageSegmentationModel.h +10 -0
  50. package/ios/RnExecutorch/models/image_segmentation/ImageSegmentationModel.mm +146 -0
  51. package/ios/RnExecutorch/models/object_detection/SSDLiteLargeModel.mm +1 -2
  52. package/ios/RnExecutorch/models/ocr/Detector.h +0 -2
  53. package/ios/RnExecutorch/models/ocr/Detector.mm +2 -1
  54. package/ios/RnExecutorch/models/ocr/RecognitionHandler.h +5 -4
  55. package/ios/RnExecutorch/models/ocr/RecognitionHandler.mm +9 -26
  56. package/ios/RnExecutorch/models/ocr/Recognizer.mm +1 -2
  57. package/ios/RnExecutorch/models/ocr/VerticalDetector.h +0 -2
  58. package/ios/RnExecutorch/models/ocr/VerticalDetector.mm +2 -1
  59. package/ios/RnExecutorch/models/ocr/utils/OCRUtils.mm +0 -1
  60. package/ios/RnExecutorch/models/stt/Moonshine.mm +1 -6
  61. package/ios/RnExecutorch/models/stt/SpeechToTextBaseModel.mm +7 -11
  62. package/ios/RnExecutorch/models/stt/Whisper.mm +0 -5
  63. package/ios/RnExecutorch/models/{StyleTransferModel.h → style_transfer/StyleTransferModel.h} +1 -1
  64. package/ios/RnExecutorch/models/{StyleTransferModel.mm → style_transfer/StyleTransferModel.mm} +2 -3
  65. package/ios/RnExecutorch/models/text_embeddings/TextEmbeddingsModel.h +15 -0
  66. package/ios/RnExecutorch/models/text_embeddings/TextEmbeddingsModel.mm +45 -0
  67. package/ios/RnExecutorch/models/text_embeddings/TextEmbeddingsUtils.h +8 -0
  68. package/ios/RnExecutorch/models/text_embeddings/TextEmbeddingsUtils.mm +49 -0
  69. package/ios/RnExecutorch/utils/Conversions.h +15 -0
  70. package/ios/RnExecutorch/utils/ImageProcessor.h +0 -1
  71. package/ios/RnExecutorch/{models/classification/Utils.h → utils/Numerical.h} +0 -2
  72. package/ios/RnExecutorch/{models/classification/Utils.mm → utils/Numerical.mm} +0 -2
  73. package/ios/RnExecutorch/utils/ObjectDetectionUtils.mm +0 -2
  74. package/ios/RnExecutorch/utils/SFFT.mm +1 -1
  75. package/ios/RnExecutorch/utils/ScalarType.h +0 -2
  76. package/lib/module/Error.js +16 -2
  77. package/lib/module/Error.js.map +1 -1
  78. package/lib/module/constants/{llamaDefaults.js → llmDefaults.js} +7 -3
  79. package/lib/module/constants/llmDefaults.js.map +1 -0
  80. package/lib/module/constants/modelUrls.js +88 -27
  81. package/lib/module/constants/modelUrls.js.map +1 -1
  82. package/lib/module/constants/ocr/models.js +290 -0
  83. package/lib/module/constants/ocr/models.js.map +1 -0
  84. package/lib/module/constants/ocr/symbols.js +137 -2
  85. package/lib/module/constants/ocr/symbols.js.map +1 -1
  86. package/lib/module/constants/sttDefaults.js +50 -25
  87. package/lib/module/constants/sttDefaults.js.map +1 -1
  88. package/lib/module/controllers/LLMController.js +205 -0
  89. package/lib/module/controllers/LLMController.js.map +1 -0
  90. package/lib/module/controllers/OCRController.js +5 -10
  91. package/lib/module/controllers/OCRController.js.map +1 -1
  92. package/lib/module/controllers/SpeechToTextController.js +225 -122
  93. package/lib/module/controllers/SpeechToTextController.js.map +1 -1
  94. package/lib/module/controllers/VerticalOCRController.js +6 -10
  95. package/lib/module/controllers/VerticalOCRController.js.map +1 -1
  96. package/lib/module/hooks/computer_vision/useClassification.js +8 -23
  97. package/lib/module/hooks/computer_vision/useClassification.js.map +1 -1
  98. package/lib/module/hooks/computer_vision/useImageSegmentation.js +13 -0
  99. package/lib/module/hooks/computer_vision/useImageSegmentation.js.map +1 -0
  100. package/lib/module/hooks/computer_vision/useOCR.js +11 -6
  101. package/lib/module/hooks/computer_vision/useOCR.js.map +1 -1
  102. package/lib/module/hooks/computer_vision/useObjectDetection.js +8 -23
  103. package/lib/module/hooks/computer_vision/useObjectDetection.js.map +1 -1
  104. package/lib/module/hooks/computer_vision/useStyleTransfer.js +8 -23
  105. package/lib/module/hooks/computer_vision/useStyleTransfer.js.map +1 -1
  106. package/lib/module/hooks/computer_vision/useVerticalOCR.js +10 -7
  107. package/lib/module/hooks/computer_vision/useVerticalOCR.js.map +1 -1
  108. package/lib/module/hooks/general/useExecutorchModule.js +8 -36
  109. package/lib/module/hooks/general/useExecutorchModule.js.map +1 -1
  110. package/lib/module/hooks/natural_language_processing/useLLM.js +54 -63
  111. package/lib/module/hooks/natural_language_processing/useLLM.js.map +1 -1
  112. package/lib/module/hooks/natural_language_processing/useSpeechToText.js +15 -11
  113. package/lib/module/hooks/natural_language_processing/useSpeechToText.js.map +1 -1
  114. package/lib/module/hooks/natural_language_processing/useTextEmbeddings.js +14 -0
  115. package/lib/module/hooks/natural_language_processing/useTextEmbeddings.js.map +1 -0
  116. package/lib/module/hooks/natural_language_processing/useTokenizer.js +54 -0
  117. package/lib/module/hooks/natural_language_processing/useTokenizer.js.map +1 -0
  118. package/lib/module/hooks/useModule.js +18 -62
  119. package/lib/module/hooks/useModule.js.map +1 -1
  120. package/lib/module/index.js +16 -2
  121. package/lib/module/index.js.map +1 -1
  122. package/lib/module/modules/BaseModule.js +9 -10
  123. package/lib/module/modules/BaseModule.js.map +1 -1
  124. package/lib/module/modules/computer_vision/ClassificationModule.js +8 -5
  125. package/lib/module/modules/computer_vision/ClassificationModule.js.map +1 -1
  126. package/lib/module/modules/computer_vision/ImageSegmentationModule.js +28 -0
  127. package/lib/module/modules/computer_vision/ImageSegmentationModule.js.map +1 -0
  128. package/lib/module/modules/computer_vision/ObjectDetectionModule.js +8 -5
  129. package/lib/module/modules/computer_vision/ObjectDetectionModule.js.map +1 -1
  130. package/lib/module/modules/computer_vision/StyleTransferModule.js +8 -5
  131. package/lib/module/modules/computer_vision/StyleTransferModule.js.map +1 -1
  132. package/lib/module/modules/general/ExecutorchModule.js +8 -5
  133. package/lib/module/modules/general/ExecutorchModule.js.map +1 -1
  134. package/lib/module/modules/natural_language_processing/LLMModule.js +46 -27
  135. package/lib/module/modules/natural_language_processing/LLMModule.js.map +1 -1
  136. package/lib/module/modules/natural_language_processing/SpeechToTextModule.js +8 -5
  137. package/lib/module/modules/natural_language_processing/SpeechToTextModule.js.map +1 -1
  138. package/lib/module/modules/natural_language_processing/TextEmbeddingsModule.js +14 -0
  139. package/lib/module/modules/natural_language_processing/TextEmbeddingsModule.js.map +1 -0
  140. package/lib/module/modules/natural_language_processing/TokenizerModule.js +26 -0
  141. package/lib/module/modules/natural_language_processing/TokenizerModule.js.map +1 -0
  142. package/lib/module/native/NativeClassification.js.map +1 -1
  143. package/lib/module/native/NativeImageSegmentation.js +5 -0
  144. package/lib/module/native/NativeImageSegmentation.js.map +1 -0
  145. package/lib/module/native/NativeLLM.js.map +1 -1
  146. package/lib/module/native/NativeTextEmbeddings.js +5 -0
  147. package/lib/module/native/NativeTextEmbeddings.js.map +1 -0
  148. package/lib/module/native/NativeTokenizer.js +5 -0
  149. package/lib/module/native/NativeTokenizer.js.map +1 -0
  150. package/lib/module/native/RnExecutorchModules.js +18 -113
  151. package/lib/module/native/RnExecutorchModules.js.map +1 -1
  152. package/lib/module/types/common.js.map +1 -1
  153. package/lib/module/types/imageSegmentation.js +29 -0
  154. package/lib/module/types/imageSegmentation.js.map +1 -0
  155. package/lib/module/types/llm.js +7 -0
  156. package/lib/module/types/llm.js.map +1 -0
  157. package/lib/module/types/{object_detection.js → objectDetection.js} +1 -1
  158. package/lib/module/types/objectDetection.js.map +1 -0
  159. package/lib/module/types/ocr.js +2 -0
  160. package/lib/module/types/stt.js +82 -0
  161. package/lib/module/types/stt.js.map +1 -0
  162. package/lib/module/utils/ResourceFetcher.js +156 -0
  163. package/lib/module/utils/ResourceFetcher.js.map +1 -0
  164. package/lib/module/utils/llm.js +25 -0
  165. package/lib/module/utils/llm.js.map +1 -0
  166. package/lib/module/utils/stt.js +22 -0
  167. package/lib/module/utils/stt.js.map +1 -0
  168. package/lib/typescript/Error.d.ts +4 -1
  169. package/lib/typescript/Error.d.ts.map +1 -1
  170. package/lib/typescript/constants/{llamaDefaults.d.ts → llmDefaults.d.ts} +5 -5
  171. package/lib/typescript/constants/llmDefaults.d.ts.map +1 -0
  172. package/lib/typescript/constants/modelUrls.d.ts +74 -28
  173. package/lib/typescript/constants/modelUrls.d.ts.map +1 -1
  174. package/lib/typescript/constants/ocr/models.d.ts +285 -0
  175. package/lib/typescript/constants/ocr/models.d.ts.map +1 -0
  176. package/lib/typescript/constants/ocr/symbols.d.ts +73 -1
  177. package/lib/typescript/constants/ocr/symbols.d.ts.map +1 -1
  178. package/lib/typescript/constants/sttDefaults.d.ts +8 -13
  179. package/lib/typescript/constants/sttDefaults.d.ts.map +1 -1
  180. package/lib/typescript/controllers/LLMController.d.ts +46 -0
  181. package/lib/typescript/controllers/LLMController.d.ts.map +1 -0
  182. package/lib/typescript/controllers/OCRController.d.ts.map +1 -1
  183. package/lib/typescript/controllers/SpeechToTextController.d.ts +30 -16
  184. package/lib/typescript/controllers/SpeechToTextController.d.ts.map +1 -1
  185. package/lib/typescript/controllers/VerticalOCRController.d.ts +1 -1
  186. package/lib/typescript/controllers/VerticalOCRController.d.ts.map +1 -1
  187. package/lib/typescript/hooks/computer_vision/useClassification.d.ts +5 -5
  188. package/lib/typescript/hooks/computer_vision/useClassification.d.ts.map +1 -1
  189. package/lib/typescript/hooks/computer_vision/useImageSegmentation.d.ts +37 -0
  190. package/lib/typescript/hooks/computer_vision/useImageSegmentation.d.ts.map +1 -0
  191. package/lib/typescript/hooks/computer_vision/useOCR.d.ts +2 -1
  192. package/lib/typescript/hooks/computer_vision/useOCR.d.ts.map +1 -1
  193. package/lib/typescript/hooks/computer_vision/useObjectDetection.d.ts +5 -4
  194. package/lib/typescript/hooks/computer_vision/useObjectDetection.d.ts.map +1 -1
  195. package/lib/typescript/hooks/computer_vision/useStyleTransfer.d.ts +4 -2
  196. package/lib/typescript/hooks/computer_vision/useStyleTransfer.d.ts.map +1 -1
  197. package/lib/typescript/hooks/computer_vision/useVerticalOCR.d.ts +2 -1
  198. package/lib/typescript/hooks/computer_vision/useVerticalOCR.d.ts.map +1 -1
  199. package/lib/typescript/hooks/general/useExecutorchModule.d.ts +5 -6
  200. package/lib/typescript/hooks/general/useExecutorchModule.d.ts.map +1 -1
  201. package/lib/typescript/hooks/natural_language_processing/useLLM.d.ts +6 -6
  202. package/lib/typescript/hooks/natural_language_processing/useLLM.d.ts.map +1 -1
  203. package/lib/typescript/hooks/natural_language_processing/useSpeechToText.d.ts +7 -3
  204. package/lib/typescript/hooks/natural_language_processing/useSpeechToText.d.ts.map +1 -1
  205. package/lib/typescript/hooks/natural_language_processing/useTextEmbeddings.d.ts +13 -0
  206. package/lib/typescript/hooks/natural_language_processing/useTextEmbeddings.d.ts.map +1 -0
  207. package/lib/typescript/hooks/natural_language_processing/useTokenizer.d.ts +16 -0
  208. package/lib/typescript/hooks/natural_language_processing/useTokenizer.d.ts.map +1 -0
  209. package/lib/typescript/hooks/useModule.d.ts +11 -10
  210. package/lib/typescript/hooks/useModule.d.ts.map +1 -1
  211. package/lib/typescript/index.d.ts +15 -2
  212. package/lib/typescript/index.d.ts.map +1 -1
  213. package/lib/typescript/modules/BaseModule.d.ts +4 -5
  214. package/lib/typescript/modules/BaseModule.d.ts.map +1 -1
  215. package/lib/typescript/modules/computer_vision/ClassificationModule.d.ts +7 -7
  216. package/lib/typescript/modules/computer_vision/ClassificationModule.d.ts.map +1 -1
  217. package/lib/typescript/modules/computer_vision/ImageSegmentationModule.d.ts +32 -0
  218. package/lib/typescript/modules/computer_vision/ImageSegmentationModule.d.ts.map +1 -0
  219. package/lib/typescript/modules/computer_vision/ObjectDetectionModule.d.ts +6 -5
  220. package/lib/typescript/modules/computer_vision/ObjectDetectionModule.d.ts.map +1 -1
  221. package/lib/typescript/modules/computer_vision/StyleTransferModule.d.ts +6 -5
  222. package/lib/typescript/modules/computer_vision/StyleTransferModule.d.ts.map +1 -1
  223. package/lib/typescript/modules/general/ExecutorchModule.d.ts +4 -3
  224. package/lib/typescript/modules/general/ExecutorchModule.d.ts.map +1 -1
  225. package/lib/typescript/modules/natural_language_processing/LLMModule.d.ts +19 -5
  226. package/lib/typescript/modules/natural_language_processing/LLMModule.d.ts.map +1 -1
  227. package/lib/typescript/modules/natural_language_processing/SpeechToTextModule.d.ts +7 -4
  228. package/lib/typescript/modules/natural_language_processing/SpeechToTextModule.d.ts.map +1 -1
  229. package/lib/typescript/modules/natural_language_processing/TextEmbeddingsModule.d.ts +8 -0
  230. package/lib/typescript/modules/natural_language_processing/TextEmbeddingsModule.d.ts.map +1 -0
  231. package/lib/typescript/modules/natural_language_processing/TokenizerModule.d.ts +12 -0
  232. package/lib/typescript/modules/natural_language_processing/TokenizerModule.d.ts.map +1 -0
  233. package/lib/typescript/native/NativeClassification.d.ts.map +1 -1
  234. package/lib/typescript/native/NativeImageSegmentation.d.ts +10 -0
  235. package/lib/typescript/native/NativeImageSegmentation.d.ts.map +1 -0
  236. package/lib/typescript/native/NativeLLM.d.ts +3 -4
  237. package/lib/typescript/native/NativeLLM.d.ts.map +1 -1
  238. package/lib/typescript/native/NativeObjectDetection.d.ts +1 -1
  239. package/lib/typescript/native/NativeObjectDetection.d.ts.map +1 -1
  240. package/lib/typescript/native/NativeSpeechToText.d.ts +2 -2
  241. package/lib/typescript/native/NativeSpeechToText.d.ts.map +1 -1
  242. package/lib/typescript/native/NativeTextEmbeddings.d.ts +8 -0
  243. package/lib/typescript/native/NativeTextEmbeddings.d.ts.map +1 -0
  244. package/lib/typescript/native/NativeTokenizer.d.ts +12 -0
  245. package/lib/typescript/native/NativeTokenizer.d.ts.map +1 -0
  246. package/lib/typescript/native/RnExecutorchModules.d.ts +18 -41
  247. package/lib/typescript/native/RnExecutorchModules.d.ts.map +1 -1
  248. package/lib/typescript/types/common.d.ts +1 -26
  249. package/lib/typescript/types/common.d.ts.map +1 -1
  250. package/lib/typescript/types/imageSegmentation.d.ts +25 -0
  251. package/lib/typescript/types/imageSegmentation.d.ts.map +1 -0
  252. package/lib/typescript/types/llm.d.ts +38 -0
  253. package/lib/typescript/types/llm.d.ts.map +1 -0
  254. package/lib/typescript/types/{object_detection.d.ts → objectDetection.d.ts} +1 -1
  255. package/lib/typescript/types/objectDetection.d.ts.map +1 -0
  256. package/lib/typescript/types/ocr.d.ts +2 -1
  257. package/lib/typescript/types/ocr.d.ts.map +1 -1
  258. package/lib/typescript/types/stt.d.ts +91 -0
  259. package/lib/typescript/types/stt.d.ts.map +1 -0
  260. package/lib/typescript/utils/ResourceFetcher.d.ts +17 -0
  261. package/lib/typescript/utils/ResourceFetcher.d.ts.map +1 -0
  262. package/lib/typescript/utils/llm.d.ts +3 -0
  263. package/lib/typescript/utils/llm.d.ts.map +1 -0
  264. package/lib/typescript/utils/stt.d.ts +2 -0
  265. package/lib/typescript/utils/stt.d.ts.map +1 -0
  266. package/package.json +13 -49
  267. package/react-native-executorch.podspec +1 -1
  268. package/src/Error.ts +16 -3
  269. package/src/constants/llmDefaults.ts +14 -0
  270. package/src/constants/modelUrls.ts +146 -39
  271. package/src/constants/ocr/models.ts +453 -0
  272. package/src/constants/ocr/symbols.ts +147 -3
  273. package/src/constants/sttDefaults.ts +55 -37
  274. package/src/controllers/LLMController.ts +286 -0
  275. package/src/controllers/OCRController.ts +14 -28
  276. package/src/controllers/SpeechToTextController.ts +318 -180
  277. package/src/controllers/VerticalOCRController.ts +17 -32
  278. package/src/hooks/computer_vision/useClassification.ts +11 -26
  279. package/src/hooks/computer_vision/useImageSegmentation.ts +18 -0
  280. package/src/hooks/computer_vision/useOCR.ts +17 -5
  281. package/src/hooks/computer_vision/useObjectDetection.ts +10 -24
  282. package/src/hooks/computer_vision/useStyleTransfer.ts +9 -25
  283. package/src/hooks/computer_vision/useVerticalOCR.ts +11 -4
  284. package/src/hooks/general/useExecutorchModule.ts +10 -50
  285. package/src/hooks/natural_language_processing/useLLM.ts +80 -97
  286. package/src/hooks/natural_language_processing/useSpeechToText.ts +39 -12
  287. package/src/hooks/natural_language_processing/useTextEmbeddings.ts +18 -0
  288. package/src/hooks/natural_language_processing/useTokenizer.ts +61 -0
  289. package/src/hooks/useModule.ts +32 -92
  290. package/src/index.tsx +16 -2
  291. package/src/modules/BaseModule.ts +16 -26
  292. package/src/modules/computer_vision/ClassificationModule.ts +13 -8
  293. package/src/modules/computer_vision/ImageSegmentationModule.ts +39 -0
  294. package/src/modules/computer_vision/ObjectDetectionModule.ts +13 -8
  295. package/src/modules/computer_vision/StyleTransferModule.ts +13 -8
  296. package/src/modules/general/ExecutorchModule.ts +11 -6
  297. package/src/modules/natural_language_processing/LLMModule.ts +64 -51
  298. package/src/modules/natural_language_processing/SpeechToTextModule.ts +25 -10
  299. package/src/modules/natural_language_processing/TextEmbeddingsModule.ts +18 -0
  300. package/src/modules/natural_language_processing/TokenizerModule.ts +34 -0
  301. package/src/native/NativeClassification.ts +0 -1
  302. package/src/native/NativeImageSegmentation.ts +14 -0
  303. package/src/native/NativeLLM.ts +3 -10
  304. package/src/native/NativeObjectDetection.ts +1 -1
  305. package/src/native/NativeSpeechToText.ts +2 -2
  306. package/src/native/NativeTextEmbeddings.ts +9 -0
  307. package/src/native/NativeTokenizer.ts +13 -0
  308. package/src/native/RnExecutorchModules.ts +54 -234
  309. package/src/types/common.ts +1 -44
  310. package/src/types/imageSegmentation.ts +25 -0
  311. package/src/types/llm.ts +57 -0
  312. package/src/types/ocr.ts +3 -1
  313. package/src/types/stt.ts +93 -0
  314. package/src/utils/ResourceFetcher.ts +196 -0
  315. package/src/utils/llm.ts +34 -0
  316. package/src/utils/stt.ts +28 -0
  317. package/android/src/main/java/com/swmansion/rnexecutorch/utils/llms/ConversationManager.kt +0 -68
  318. package/ios/ExecutorchLib.xcframework/ios-arm64-simulator/ExecutorchLib.framework/_CodeSignature/CodeResources +0 -124
  319. package/ios/RnExecutorch/utils/llms/Constants.h +0 -6
  320. package/ios/RnExecutorch/utils/llms/Constants.mm +0 -23
  321. package/ios/RnExecutorch/utils/llms/ConversationManager.h +0 -26
  322. package/ios/RnExecutorch/utils/llms/ConversationManager.mm +0 -71
  323. package/lib/module/constants/llamaDefaults.js.map +0 -1
  324. package/lib/module/modules/computer_vision/BaseCVModule.js +0 -14
  325. package/lib/module/modules/computer_vision/BaseCVModule.js.map +0 -1
  326. package/lib/module/types/object_detection.js.map +0 -1
  327. package/lib/module/utils/fetchResource.js +0 -93
  328. package/lib/module/utils/fetchResource.js.map +0 -1
  329. package/lib/module/utils/listDownloadedResources.js +0 -13
  330. package/lib/module/utils/listDownloadedResources.js.map +0 -1
  331. package/lib/typescript/constants/llamaDefaults.d.ts.map +0 -1
  332. package/lib/typescript/modules/computer_vision/BaseCVModule.d.ts +0 -9
  333. package/lib/typescript/modules/computer_vision/BaseCVModule.d.ts.map +0 -1
  334. package/lib/typescript/types/object_detection.d.ts.map +0 -1
  335. package/lib/typescript/utils/fetchResource.d.ts +0 -3
  336. package/lib/typescript/utils/fetchResource.d.ts.map +0 -1
  337. package/lib/typescript/utils/listDownloadedResources.d.ts +0 -3
  338. package/lib/typescript/utils/listDownloadedResources.d.ts.map +0 -1
  339. package/src/constants/llamaDefaults.ts +0 -9
  340. package/src/modules/computer_vision/BaseCVModule.ts +0 -22
  341. package/src/utils/fetchResource.ts +0 -106
  342. package/src/utils/listDownloadedResources.ts +0 -12
  343. /package/src/types/{object_detection.ts → objectDetection.ts} +0 -0
@@ -3,8 +3,6 @@
3
3
  #import "models/ocr/RecognitionHandler.h"
4
4
  #import "models/ocr/utils/Constants.h"
5
5
  #import "utils/ImageProcessor.h"
6
- #import <ExecutorchLib/ETModel.h>
7
- #import <React/RCTBridgeModule.h>
8
6
 
9
7
  @implementation OCR {
10
8
  Detector *detector;
@@ -13,6 +11,11 @@
13
11
 
14
12
  RCT_EXPORT_MODULE()
15
13
 
14
+ - (void)releaseResources {
15
+ detector = nil;
16
+ recognitionHandler = nil;
17
+ }
18
+
16
19
  - (void)loadModule:(NSString *)detectorSource
17
20
  recognizerSourceLarge:(NSString *)recognizerSourceLarge
18
21
  recognizerSourceMedium:(NSString *)recognizerSourceMedium
@@ -21,47 +24,40 @@ RCT_EXPORT_MODULE()
21
24
  resolve:(RCTPromiseResolveBlock)resolve
22
25
  reject:(RCTPromiseRejectBlock)reject {
23
26
  detector = [[Detector alloc] init];
24
- [detector
25
- loadModel:[NSURL URLWithString:detectorSource]
26
- completion:^(BOOL success, NSNumber *errorCode) {
27
- if (!success) {
28
- NSError *error = [NSError
29
- errorWithDomain:@"OCRErrorDomain"
30
- code:[errorCode intValue]
31
- userInfo:@{
32
- NSLocalizedDescriptionKey : [NSString
33
- stringWithFormat:@"%ld", (long)[errorCode longValue]]
34
- }];
35
- reject(@"init_module_error", @"Failed to initialize detector module",
36
- error);
37
- return;
38
- }
39
- self->recognitionHandler =
40
- [[RecognitionHandler alloc] initWithSymbols:symbols];
41
- [self->recognitionHandler
42
- loadRecognizers:recognizerSourceLarge
43
- mediumRecognizerPath:recognizerSourceMedium
44
- smallRecognizerPath:recognizerSourceSmall
45
- completion:^(BOOL allModelsLoaded, NSNumber *errorCode) {
46
- if (allModelsLoaded) {
47
- resolve(@(YES));
48
- } else {
49
- NSError *error = [NSError
50
- errorWithDomain:@"OCRErrorDomain"
51
- code:[errorCode intValue]
52
- userInfo:@{
53
- NSLocalizedDescriptionKey : [NSString
54
- stringWithFormat:@"%ld",
55
- (long)[errorCode
56
- longValue]]
57
- }];
58
- reject(@"init_recognizer_error",
59
- @"Failed to initialize one or more "
60
- @"recognizer models",
61
- error);
62
- }
63
- }];
64
- }];
27
+ NSNumber *errorCode = [detector loadModel:detectorSource];
28
+ if ([errorCode intValue] != 0) {
29
+ [self releaseResources];
30
+ NSError *error = [NSError
31
+ errorWithDomain:@"OCRErrorDomain"
32
+ code:[errorCode intValue]
33
+ userInfo:@{
34
+ NSLocalizedDescriptionKey : [NSString
35
+ stringWithFormat:@"%ld", (long)[errorCode longValue]]
36
+ }];
37
+ reject(@"init_module_error", @"Failed to initialize detector module",
38
+ error);
39
+ return;
40
+ }
41
+
42
+ recognitionHandler = [[RecognitionHandler alloc] initWithSymbols:symbols];
43
+ errorCode = [recognitionHandler loadRecognizers:recognizerSourceLarge
44
+ mediumRecognizerPath:recognizerSourceMedium
45
+ smallRecognizerPath:recognizerSourceSmall];
46
+ if ([errorCode intValue] != 0) {
47
+ [self releaseResources];
48
+ NSError *error = [NSError
49
+ errorWithDomain:@"OCRErrorDomain"
50
+ code:[errorCode intValue]
51
+ userInfo:@{
52
+ NSLocalizedDescriptionKey : [NSString
53
+ stringWithFormat:@"%ld", (long)[errorCode longValue]]
54
+ }];
55
+ reject(@"init_recognizer_error",
56
+ @"Failed to initialize one or more recognizer models", error);
57
+ return;
58
+ }
59
+
60
+ resolve(@0);
65
61
  }
66
62
 
67
63
  - (void)forward:(NSString *)input
@@ -1,8 +1,6 @@
1
1
  #import "ObjectDetection.h"
2
2
  #import "models/object_detection/SSDLiteLargeModel.hpp"
3
3
  #import "utils/ImageProcessor.h"
4
- #import <ExecutorchLib/ETModel.h>
5
- #import <React/RCTBridgeModule.h>
6
4
 
7
5
  @implementation ObjectDetection {
8
6
  SSDLiteLargeModel *model;
@@ -10,28 +8,30 @@
10
8
 
11
9
  RCT_EXPORT_MODULE()
12
10
 
11
+ - (void)releaseResources {
12
+ model = nil;
13
+ }
14
+
13
15
  - (void)loadModule:(NSString *)modelSource
14
16
  resolve:(RCTPromiseResolveBlock)resolve
15
17
  reject:(RCTPromiseRejectBlock)reject {
16
18
  model = [[SSDLiteLargeModel alloc] init];
17
- [model loadModel:[NSURL URLWithString:modelSource]
18
- completion:^(BOOL success, NSNumber *errorCode) {
19
- if (success) {
20
- resolve(errorCode);
21
- return;
22
- }
23
-
24
- NSError *error = [NSError
25
- errorWithDomain:@"StyleTransferErrorDomain"
26
- code:[errorCode intValue]
27
- userInfo:@{
28
- NSLocalizedDescriptionKey : [NSString
29
- stringWithFormat:@"%ld", (long)[errorCode longValue]]
30
- }];
31
-
32
- reject(@"init_module_error", error.localizedDescription, error);
33
- return;
34
- }];
19
+
20
+ NSNumber *errorCode = [model loadModel:modelSource];
21
+ if ([errorCode intValue] != 0) {
22
+ [self releaseResources];
23
+ NSError *error = [NSError
24
+ errorWithDomain:@"StyleTransferErrorDomain"
25
+ code:[errorCode intValue]
26
+ userInfo:@{
27
+ NSLocalizedDescriptionKey : [NSString
28
+ stringWithFormat:@"%ld", (long)[errorCode longValue]]
29
+ }];
30
+ reject(@"init_module_error", error.localizedDescription, error);
31
+ return;
32
+ }
33
+
34
+ resolve(@0);
35
35
  }
36
36
 
37
37
  - (void)forward:(NSString *)input
@@ -1,13 +1,6 @@
1
1
  #import "SpeechToText.h"
2
- #import "./utils/ScalarType.h"
3
- #import "models/BaseModel.h"
4
2
  #import "models/stt/Moonshine.hpp"
5
- #import "models/stt/SpeechToTextBaseModel.hpp"
6
3
  #import "models/stt/Whisper.hpp"
7
- #import "utils/SFFT.hpp"
8
- #import <Accelerate/Accelerate.h>
9
- #import <ExecutorchLib/ETModel.h>
10
- #import <React/RCTBridgeModule.h>
11
4
 
12
5
  @implementation SpeechToText {
13
6
  Whisper *whisper;
@@ -16,6 +9,11 @@
16
9
 
17
10
  RCT_EXPORT_MODULE()
18
11
 
12
+ - (void)releaseResources {
13
+ whisper = nil;
14
+ moonshine = nil;
15
+ }
16
+
19
17
  - (void)generate:(NSArray *)waveform
20
18
  resolve:(RCTPromiseResolveBlock)resolve
21
19
  reject:(RCTPromiseRejectBlock)reject {
@@ -83,6 +81,7 @@ RCT_EXPORT_MODULE()
83
81
  [model loadModules:modelSources];
84
82
  resolve(@(0));
85
83
  } @catch (NSException *exception) {
84
+ [self releaseResources];
86
85
  reject(@"init_decoder_error",
87
86
  [NSString stringWithFormat:@"%@", exception.reason], nil);
88
87
  }
@@ -1,11 +1,6 @@
1
1
  #import "StyleTransfer.h"
2
2
  #import "ImageProcessor.h"
3
- #import "models/BaseModel.h"
4
- #import "models/StyleTransferModel.h"
5
- #import "utils/ETError.h"
6
- #import <ExecutorchLib/ETModel.h>
7
- #import <React/RCTBridgeModule.h>
8
- #import <opencv2/opencv.hpp>
3
+ #import "models/style_transfer/StyleTransferModel.h"
9
4
 
10
5
  @implementation StyleTransfer {
11
6
  StyleTransferModel *model;
@@ -13,23 +8,25 @@
13
8
 
14
9
  RCT_EXPORT_MODULE()
15
10
 
11
+ - (void)releaseResources {
12
+ model = nil;
13
+ }
14
+
16
15
  - (void)loadModule:(NSString *)modelSource
17
16
  resolve:(RCTPromiseResolveBlock)resolve
18
17
  reject:(RCTPromiseRejectBlock)reject {
19
18
  model = [[StyleTransferModel alloc] init];
20
- [model
21
- loadModel:[NSURL URLWithString:modelSource]
22
- completion:^(BOOL success, NSNumber *errorCode) {
23
- if (success) {
24
- resolve(errorCode);
25
- return;
26
- }
27
-
28
- reject(@"init_module_error",
29
- [NSString stringWithFormat:@"%ld", (long)[errorCode longValue]],
30
- nil);
31
- return;
32
- }];
19
+
20
+ NSNumber *errorCode = [model loadModel:modelSource];
21
+ if ([errorCode intValue] != 0) {
22
+ [self releaseResources];
23
+ reject(@"init_module_error",
24
+ [NSString stringWithFormat:@"%ld", (long)[errorCode longValue]],
25
+ nil);
26
+ return;
27
+ }
28
+
29
+ resolve(@0);
33
30
  }
34
31
 
35
32
  - (void)forward:(NSString *)input
@@ -0,0 +1,5 @@
1
+ #import <RnExecutorchSpec/RnExecutorchSpec.h>
2
+
3
+ @interface TextEmbeddings : NSObject <NativeTextEmbeddingsSpec>
4
+
5
+ @end
@@ -0,0 +1,62 @@
1
+ #import "TextEmbeddings.h"
2
+ #import "models/text_embeddings/TextEmbeddingsModel.h"
3
+
4
+ @implementation TextEmbeddings {
5
+ TextEmbeddingsModel *model;
6
+ }
7
+
8
+ RCT_EXPORT_MODULE()
9
+
10
+ - (void)releaseResources {
11
+ model = nil;
12
+ }
13
+
14
+ - (void)loadModule:(NSString *)modelSource
15
+ tokenizerSource:(NSString *)tokenizerSource
16
+ resolve:(RCTPromiseResolveBlock)resolve
17
+ reject:(RCTPromiseRejectBlock)reject {
18
+ model = [[TextEmbeddingsModel alloc] init];
19
+
20
+ @try {
21
+ [self->model loadTokenizer:tokenizerSource];
22
+ } @catch (NSException *exception) {
23
+ [self releaseResources];
24
+ reject(@"Tokenizer_Error",
25
+ [NSString stringWithFormat:@"Failed to load tokenizer from: %@",
26
+ tokenizerSource],
27
+ nil);
28
+ return;
29
+ }
30
+
31
+ NSNumber *errorCode = [model loadModel:modelSource];
32
+ if ([errorCode intValue] != 0) {
33
+ [self releaseResources];
34
+ reject(@"init_module_error",
35
+ [NSString stringWithFormat:@"%ld", (long)[errorCode longValue]],
36
+ nil);
37
+ return;
38
+ }
39
+
40
+ resolve(@0);
41
+ }
42
+
43
+ - (void)forward:(NSString *)input
44
+ resolve:(RCTPromiseResolveBlock)resolve
45
+ reject:(RCTPromiseRejectBlock)reject {
46
+ @try {
47
+ resolve([model runModel:input]);
48
+ return;
49
+ } @catch (NSException *exception) {
50
+ NSLog(@"An exception occurred: %@, %@", exception.name, exception.reason);
51
+ reject(@"forward_error",
52
+ [NSString stringWithFormat:@"%@", exception.reason], nil);
53
+ return;
54
+ }
55
+ }
56
+
57
+ - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
58
+ (const facebook::react::ObjCTurboModule::InitParams &)params {
59
+ return std::make_shared<facebook::react::NativeTextEmbeddingsSpecJSI>(params);
60
+ }
61
+
62
+ @end
@@ -0,0 +1,5 @@
1
+ #import <RnExecutorchSpec/RnExecutorchSpec.h>
2
+
3
+ @interface Tokenizer : NSObject <NativeTokenizerSpec>
4
+
5
+ @end
@@ -0,0 +1,83 @@
1
+ #import "Tokenizer.h"
2
+ #import <ExecutorchLib/HuggingFaceTokenizer.h>
3
+
4
+ @implementation Tokenizer {
5
+ HuggingFaceTokenizer *tokenizer;
6
+ }
7
+
8
+ RCT_EXPORT_MODULE()
9
+
10
+ - (void)loadModule:(NSString *)tokenizerSource
11
+ resolve:(RCTPromiseResolveBlock)resolve
12
+ reject:(RCTPromiseRejectBlock)reject {
13
+ @try {
14
+ tokenizer =
15
+ [[HuggingFaceTokenizer alloc] initWithTokenizerPath:tokenizerSource];
16
+ resolve(@(0));
17
+ } @catch (NSException *exception) {
18
+ reject(@"Tokenizer_Error", @"Failed to load tokenizer", nil);
19
+ }
20
+ }
21
+
22
+ - (void)encode:(NSString *)input
23
+ resolve:(RCTPromiseResolveBlock)resolve
24
+ reject:(RCTPromiseRejectBlock)reject {
25
+ @try {
26
+ resolve([tokenizer encode:input]);
27
+ } @catch (NSException *exception) {
28
+ reject(@"tokenizer_error",
29
+ [NSString stringWithFormat:@"%@", exception.reason], nil);
30
+ }
31
+ }
32
+
33
+ - (void)decode:(NSArray *)input
34
+ skipSpecialTokens:(BOOL)skipSpecialTokens
35
+ resolve:(RCTPromiseResolveBlock)resolve
36
+ reject:(RCTPromiseRejectBlock)reject {
37
+ @try {
38
+ resolve([tokenizer decode:input skipSpecialTokens:skipSpecialTokens]);
39
+ } @catch (NSException *exception) {
40
+ reject(@"tokenizer_error",
41
+ [NSString stringWithFormat:@"%@", exception.reason], nil);
42
+ }
43
+ }
44
+
45
+ - (void)getVocabSize:(RCTPromiseResolveBlock)resolve
46
+ reject:(RCTPromiseRejectBlock)reject {
47
+ @try {
48
+ resolve([NSNumber numberWithUnsignedInteger:[tokenizer getVocabSize]]);
49
+ } @catch (NSException *exception) {
50
+ reject(@"tokenizer_error",
51
+ [NSString stringWithFormat:@"%@", exception.reason], nil);
52
+ }
53
+ }
54
+
55
+ - (void)idToToken:(double)input
56
+ resolve:(RCTPromiseResolveBlock)resolve
57
+ reject:(RCTPromiseRejectBlock)reject {
58
+ @try {
59
+ NSInteger tokenID = (NSInteger)input;
60
+ resolve([tokenizer idToToken:tokenID]);
61
+ } @catch (NSException *exception) {
62
+ reject(@"tokenizer_error",
63
+ [NSString stringWithFormat:@"%@", exception.reason], nil);
64
+ }
65
+ }
66
+
67
+ - (void)tokenToId:(NSString *)input
68
+ resolve:(RCTPromiseResolveBlock)resolve
69
+ reject:(RCTPromiseRejectBlock)reject {
70
+ @try {
71
+ resolve([NSNumber numberWithInteger:[tokenizer tokenToId:input]]);
72
+ } @catch (NSException *exception) {
73
+ reject(@"tokenizer_error",
74
+ [NSString stringWithFormat:@"%@", exception.reason], nil);
75
+ }
76
+ }
77
+
78
+ - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
79
+ (const facebook::react::ObjCTurboModule::InitParams &)params {
80
+ return std::make_shared<facebook::react::NativeTokenizerSpecJSI>(params);
81
+ }
82
+
83
+ @end
@@ -1,13 +1,11 @@
1
1
  #import "VerticalOCR.h"
2
- #import "models/ocr/RecognitionHandler.h"
3
2
  #import "models/ocr/Recognizer.h"
4
3
  #import "models/ocr/VerticalDetector.h"
5
4
  #import "models/ocr/utils/CTCLabelConverter.h"
5
+ #import "models/ocr/utils/Constants.h"
6
6
  #import "models/ocr/utils/OCRUtils.h"
7
7
  #import "models/ocr/utils/RecognizerUtils.h"
8
8
  #import "utils/ImageProcessor.h"
9
- #import <ExecutorchLib/ETModel.h>
10
- #import <React/RCTBridgeModule.h>
11
9
 
12
10
  @implementation VerticalOCR {
13
11
  VerticalDetector *detectorLarge;
@@ -19,6 +17,13 @@
19
17
 
20
18
  RCT_EXPORT_MODULE()
21
19
 
20
+ - (void)releaseResources {
21
+ detectorLarge = nil;
22
+ detectorNarrow = nil;
23
+ recognizer = nil;
24
+ converter = nil;
25
+ }
26
+
22
27
  - (void)loadModule:(NSString *)detectorLargeSource
23
28
  detectorNarrowSource:(NSString *)detectorNarrowSource
24
29
  recognizerSource:(NSString *)recognizerSource
@@ -26,42 +31,37 @@ RCT_EXPORT_MODULE()
26
31
  independentCharacters:(BOOL)independentCharacters
27
32
  resolve:(RCTPromiseResolveBlock)resolve
28
33
  reject:(RCTPromiseRejectBlock)reject {
29
- detectorLarge = [[VerticalDetector alloc] initWithDetectSingleCharacters:NO];
30
34
  converter = [[CTCLabelConverter alloc] initWithCharacters:symbols
31
35
  separatorList:@{}];
32
36
  self->independentCharacters = independentCharacters;
33
- [detectorLarge
34
- loadModel:[NSURL URLWithString:detectorLargeSource]
35
- completion:^(BOOL success, NSNumber *errorCode) {
36
- if (!success) {
37
- reject(@"init_module_error", @"Failed to initialize detector module",
38
- nil);
39
- return;
40
- }
41
- self->detectorNarrow =
42
- [[VerticalDetector alloc] initWithDetectSingleCharacters:YES];
43
- [self->detectorNarrow
44
- loadModel:[NSURL URLWithString:detectorNarrowSource]
45
- completion:^(BOOL success, NSNumber *errorCode) {
46
- if (!success) {
47
- reject(@"init_module_error",
48
- @"Failed to initialize detector module", nil);
49
- return;
50
- }
51
-
52
- self->recognizer = [[Recognizer alloc] init];
53
- [self->recognizer
54
- loadModel:[NSURL URLWithString:recognizerSource]
55
- completion:^(BOOL success, NSNumber *errorCode) {
56
- if (!success) {
57
- reject(@"init_module_error",
58
- @"Failed to initialize recognizer module", nil);
59
- }
60
-
61
- resolve(@(YES));
62
- }];
63
- }];
64
- }];
37
+
38
+ detectorLarge = [[VerticalDetector alloc] initWithDetectSingleCharacters:NO];
39
+ NSNumber *errorCode = [detectorLarge loadModel:detectorLargeSource];
40
+ if ([errorCode intValue] != 0) {
41
+ [self releaseResources];
42
+ reject(@"init_module_error", @"Failed to initialize detector module", nil);
43
+ return;
44
+ }
45
+
46
+ detectorNarrow =
47
+ [[VerticalDetector alloc] initWithDetectSingleCharacters:YES];
48
+ errorCode = [detectorNarrow loadModel:detectorNarrowSource];
49
+ if ([errorCode intValue] != 0) {
50
+ [self releaseResources];
51
+ reject(@"init_module_error", @"Failed to initialize detector module", nil);
52
+ return;
53
+ }
54
+
55
+ recognizer = [[Recognizer alloc] init];
56
+ errorCode = [recognizer loadModel:recognizerSource];
57
+ if ([errorCode intValue] != 0) {
58
+ [self releaseResources];
59
+ reject(@"init_module_error", @"Failed to initialize recognizer module",
60
+ nil);
61
+ return;
62
+ }
63
+
64
+ resolve(@0);
65
65
  }
66
66
 
67
67
  - (void)forward:(NSString *)input
@@ -1,13 +1,11 @@
1
1
  #import "ExecutorchLib/ETModel.h"
2
- #import <Foundation/Foundation.h>
3
- #import <UIKit/UIKit.h>
4
2
 
5
3
  @interface BaseModel : NSObject {
6
4
  @protected
7
5
  ETModel *module;
8
6
  }
9
7
 
10
- - (NSArray *)forward:(NSArray *)input;
8
+ - (NSArray *)forward:(NSArray *)inputs;
11
9
 
12
10
  - (NSArray *)forward:(NSArray *)inputs
13
11
  shapes:(NSArray *)shapes
@@ -18,7 +16,6 @@
18
16
  shapes:(NSArray *)shapes
19
17
  inputTypes:(NSArray *)inputTypes;
20
18
 
21
- - (void)loadModel:(NSURL *)modelURL
22
- completion:(void (^)(BOOL success, NSNumber *code))completion;
19
+ - (NSNumber *)loadModel:(NSString *)modelSource;
23
20
 
24
21
  @end
@@ -1,9 +1,8 @@
1
1
  #import "BaseModel.h"
2
- #import "../utils/ETError.h"
3
2
 
4
3
  @implementation BaseModel
5
4
 
6
- - (NSArray *)forward:(NSArray *)input {
5
+ - (NSArray *)forward:(NSArray *)inputs {
7
6
  NSMutableArray *shapes = [NSMutableArray new];
8
7
  NSMutableArray *inputTypes = [NSMutableArray new];
9
8
  NSNumber *numberOfInputs = [module getNumberOfInputs];
@@ -13,9 +12,8 @@
13
12
  [inputTypes addObject:[module getInputType:[NSNumber numberWithInt:i]]];
14
13
  }
15
14
 
16
- NSArray *result = [module forward:@[ input ]
17
- shapes:shapes
18
- inputTypes:inputTypes];
15
+ NSArray *result = [module forward:inputs shapes:shapes inputTypes:inputTypes];
16
+
19
17
  return result;
20
18
  }
21
19
 
@@ -37,17 +35,9 @@
37
35
  return result;
38
36
  }
39
37
 
40
- - (void)loadModel:(NSURL *)modelURL
41
- completion:(void (^)(BOOL success, NSNumber *code))completion {
38
+ - (NSNumber *)loadModel:(NSString *)modelSource {
42
39
  module = [[ETModel alloc] init];
43
- NSNumber *result = [self->module loadModel:modelURL.path];
44
- if ([result intValue] != 0) {
45
- completion(NO, result);
46
- return;
47
- }
48
-
49
- completion(YES, result);
50
- return;
40
+ return [self->module loadModel:modelSource];
51
41
  }
52
42
 
53
43
  @end
@@ -1,8 +1,7 @@
1
1
  #import "ClassificationModel.h"
2
2
  #import "../../utils/ImageProcessor.h"
3
+ #import "../../utils/Numerical.h"
3
4
  #import "Constants.h"
4
- #import "Utils.h"
5
- #import "opencv2/opencv.hpp"
6
5
 
7
6
  @implementation ClassificationModel
8
7
 
@@ -47,7 +46,7 @@
47
46
 
48
47
  - (NSDictionary *)runModel:(cv::Mat &)input {
49
48
  NSArray *modelInput = [self preprocess:input];
50
- NSArray *modelOutput = [self forward:modelInput];
49
+ NSArray *modelOutput = [self forward:@[ modelInput ]];
51
50
  return [self postprocess:modelOutput];
52
51
  }
53
52
 
@@ -1,5 +1,4 @@
1
1
  #import "Constants.h"
2
- #import <string>
3
2
 
4
3
  const std::string imagenet1k_v1_labels[] = {
5
4
  "tench, Tinca tinca",
@@ -0,0 +1,4 @@
1
+ #import <string>
2
+ #import <vector>
3
+
4
+ extern const std::vector<std::string> deeplabv3_resnet50_labels;
@@ -0,0 +1,8 @@
1
+ #import "Constants.h"
2
+
3
+ const std::vector<std::string> deeplabv3_resnet50_labels = {
4
+ "BACKGROUND", "AEROPLANE", "BICYCLE", "BIRD", "BOAT",
5
+ "BOTTLE", "BUS", "CAR", "CAT", "CHAIR",
6
+ "COW", "DININGTABLE", "DOG", "HORSE", "MOTORBIKE",
7
+ "PERSON", "POTTEDPLANT", "SHEEP", "SOFA", "TRAIN",
8
+ "TVMONITOR"};
@@ -0,0 +1,10 @@
1
+ #import "../BaseModel.h"
2
+ #import "opencv2/opencv.hpp"
3
+
4
+ @interface ImageSegmentationModel : BaseModel
5
+ - (cv::Size)getModelImageSize;
6
+ - (NSDictionary *)runModel:(cv::Mat &)input
7
+ returnClasses:(NSArray *)classesOfInterest
8
+ resize:(BOOL)resize;
9
+
10
+ @end